1>整理SGA碎片
select count(*) from x$ksmsp
alter system flush buffer_cache
alter system flush shared_pool
2>整理表碎片.
SQL> alter table table_name enable row movement;
Table altered
SQL> alter table table_name shrink space compact;
Table altered
SQL> alter table table_name shrink space;
Table altered
3>整理索引碎片,重建索引:
alter index idx_t1_id rebuild online parallel 4;
Alter table table_name deallocate unused;
--在实际环境中执行的都超级快的执行完了
Alter table t1 deallocate unused;
5>对表空间进行碎片回收:
alter tablespace t1_indx coalesce;
alter tablespace t1_tbl coalesce;
6、回缩临时表空间,这好像也是10G 后增加的一个命令,很好用:
SQL> alter tablespace tempnew shrink space;
Tablespace altered
8、回缩回滚表空间:
月结结束后,回缩回滚表空间,盘上的空间也不多了
直接脱机、摘除数据文件都不可以
ALTER TABLESPACE "UNDOTBS1" OFFLINE FOR RECOVER;
ALTER TABLESPACE "UNDOTBS1" OFFLINE IMMEDIATE
提交失败: ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机
---必须重建一个UNDO:
CREATE SMALLFILE UNDO TABLESPACE "UNDOTBS2" DATAFILE '/orachive/abc/undotbs02.dbf' SIZE 2048M RETENTION NOGUARANTEE;
CREATE SMALLFILE UNDO TABLESPACE "UNDOTBS2" DATAFILE '/orachive/abc/undotbs02.dbf' SIZE 2048M AUTOEXTEND ON NEXT 8K MAXSIZE UNLIMITED RETENTION GUARANTEE;
alter system set undo_tablespace=undotbs2;
drop tablespace undotbs1 including contents and datafiles; --注意对数据文件可不要用datafiles子句,最好是重命名一个文件,留着旧文件过一周时间没有问题了,再行删除!
ALTER TABLESPACE "UNDOTBS2" RETENTION NOGUARANTEE; --默认都是不 GUARANTEE 的
example:
1>估算表在高水位线下还有多少空间可用,这个值应当越低越好,表使用率越接近高水位线,全表扫描所做的无用功也就越少!
DBMS_STATS包无法获取EMPTY_BLOCKS统计信息,所以需要用analyze命令再收集一次统计信息
3:对表进行碎片整理,重新收集统计信息
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8568259/viewspace-2112982/ ,如需转载,请注明出处,否则将追究法律责任。