oracle 定期表及索引分析
- ORACLE9以後如果你想用基於成本的優化器,需要定期(每週)對資料庫裡的表和索引做analyze分析。
- 資料庫引數檔案initorasid.ora裡預設的優化器 optimizer_mode= choose
- 你要改成 optimizer_mode =first_rows (OLTP系統)
- optimizer_mode =all_rows (DSS 系統)
- 下面是一個可以在UNIX環境自動生成分析表和索引的指令碼analyze.sh
- (sys使用者的密碼password要根據情況修改。)
- ---------------------------------------------------------------------------------------
- su - oracle -c "sqlplussys/password"
- set pages 9999
- set heading off
- set echo off
- set feedback off
- spool /oracle_backup/bin/analyze.sql;
- select
- 'analyze table '||owner||'.'||table_name||'estimate statistics sample 5000 rows;'
- from dba_tables
- where owner not in('SYS','SYSTEM','PERFSTAT');
- select
- 'analyze index '||owner||'.'||index_name||'compute statistics;'
- from dba_indexes
- where owner not in('SYS','SYSTEM','PERFSTAT');
- spool off;
- set echo on
- set feedback on
- spool /oracle_backup/log/analyze.log;
- @/oracle_backup/bin/analyze.sql
- spool off;
- exit;
- ---------------------------------------------------------------------------------------
- 如果你經常變動的表和索引只屬於某個特定的使用者(如果是test)可以把上面的
- owner not in('SYS','SYSTEM','PERFSTAT') 改成
- owner in('TEST')
- 來進行定期的分析。
- 注意事項:如果你使用的是預設的優化器(choose),一定不要定期使用上面那個analyze.sh指令碼。
- 因為這時優化器可能更傾向於全表掃描。
- 如果統計分析資料不全,SQL執行時會對缺少統計資料的表進行資料採集。會大大降低SQL的執行速度。
- 我們要用下面這個del_analyze.sh指令碼定期刪除可能產生的分析結果,保證優化器按規則(rule)執行。
- ---------------------------------------------------------------------------------------
- su - oracle -c "sqlplussys/password"
- set pagesize9999;
- set linesize 120;
- set heading off;
- set echo off;
- set feedback off;
- spool/oracle_backup/bin/del_analyze.sql;
- select
- 'analyze table '||owner||'.'||table_name||'delete statistics;'
- from dba_tables
- where owner not in('SYS','SYSTEM','PERFSTAT');
- select
- 'analyze index '||owner||'.'||index_name||'delete statistics;'
- from dba_indexes
- where owner not in('SYS','SYSTEM','PERFSTAT');
- spool off;
- set echo on;
- set feedback on;
- spool /oracle_backup/log/del_analyze.log;
- @/oracle_backup/bin/del_analyze.sql
- spool off;
- exit;
- su - oracle -c "sqlplussys/password"
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16400082/viewspace-730663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle表與索引的分析及索引重建Oracle索引
- Oracle表與索引的分析及索引重建(轉)Oracle索引
- oracle 索引分析及索引重建Oracle索引
- oracle 表分析和索引Oracle索引
- Oralce中分析表及索引索引
- Oracle表table與索引index的分析及索引重建及統計資訊匯入匯出Oracle索引Index
- Oracle 定期檢查意義不大的索引Oracle索引
- 定期最佳化和分析表
- Oracle分割槽表及分割槽索引Oracle索引
- ORACLE分析表和索引的指令碼Oracle索引指令碼
- 【TUNE_ORACLE】索引定期重建的利與弊Oracle索引
- index_oracle索引梳理系列及分割槽表梳理IndexOracle索引
- 深入學習Oracle分割槽表及分割槽索引Oracle索引
- 全面認識oracle分割槽表及分割槽索引Oracle索引
- 關於oracle的索引重建問題及原因分析Oracle索引
- Analyze分析表或者索引索引
- 索引是如何定期rebuild的(zt)索引Rebuild
- oracle 巢狀表 索引表 使用Oracle巢狀索引
- oracle 索引使用及索引失效總結Oracle索引
- oracle 索引組織表Oracle索引
- Oracle堆組織表的索引和索引組織表Oracle索引
- oracle 針對普通表的索引分割槽及10g新增hash 索引分割槽Oracle索引
- 在ORACLE裡用儲存過程定期分割表(轉)Oracle儲存過程
- Oracle大表快速建立索引Oracle索引
- Oracle 索引組織表(IOT)Oracle索引
- ELK日誌定期清理 ES索引資料索引
- ORACLE 組合索引 使用分析Oracle索引
- Oracle表、索引修改表空間語句Oracle索引
- Oracle 表分析Oracle
- ORACLE表連線方式分析及常見用法(zt)Oracle
- Oracle中存取資料掃描Table及索引的方式(全表掃描,索引掃描等)Oracle索引
- Oracle 找出需要建立索引的表Oracle索引
- ORACLE索引組織表討論Oracle索引
- oracle iot索引組織表(一)Oracle索引
- oracle iot索引組織表(二)Oracle索引
- 表及索引 move tablespace 常用指令碼索引指令碼
- mongodb索引及查詢優化分析MongoDB索引優化
- Oracle對索引分析的優化Oracle索引優化