本文主要是介绍Oracle查询索引碎片及数据表空间使用情况,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
--检查索引碎片情况,只能对单个表进行分析。
--需要注意块的大小、索引的pctfree的值的大小、rowid的长度的不同,根据不同的情况修改相应的值
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
索引碎片比较严重的话,重建索引:
--ALTER INDEX indexName rebuild online nologging;DECLARE CURSOR myCur ISselect INDEX_NAME from user_indexes WHERE TABLE_NAME=upper('tableName') AND INDEX_TYPE='NORMAL';v_cname myCur% rowtype;vsSql varchar2(256); begin open myCur; loop fetch myCur into v_cname; exit when myCur% notfound; vsSql:='ALTER INDEX ' || v_cname.INDEX_NAME || ' rebuild online nologging';EXECUTE IMMEDIATE vsSql;end loop; close myCur; end;
查看指定数据表的空间分配及实际使用情况:
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
大量删除数据后的高水位线,造成表扫描性能问题,释放数据空间
--删除数据后,释放数据空间 alter table tableName enable row movement; alter table tableName shrink space cascade; alter table tableName disable row movement;
http://www.cnblogs.com/linjiqin/archive/2012/01/15/2323030.html
http://blog.csdn.net/wyzxg/article/details/5631721
附,更新统计信息、清空缓存
--analyze table 更新统计信息: analyze table my_table compute statistics; --OR EXEC DBMS_STATS.gather_table_stats(ownname => 'socct', tabname =>'tableName', estimate_percent =>100, cascade =>true, method_opt => 'for all columns size auto');--清空缓存(共享池和数据缓存),Command window执行: alter system flush shared_pool; alter system flush buffer_cache;
这篇关于Oracle查询索引碎片及数据表空间使用情况的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!