Oracle9i, 10g 優化分析統計(dbms_stats)指令碼
---------------------------------------------------------
Oracle9i (未開啟table monitoring時)
---------------------------------------------------------
索引全分析
表分兩種,大表10%,小表100%
#start
$ORACLE_HOME/bin/sqlplus /nolog <
prompt "analyze start,please wait......"
set serveroutput on size 100000
declare
v_per number(3);
v_start number := dbms_utility.get_time;
v_time number;
begin
for rec in (select segment_name,segment_type,ceil(sum(bytes)/1024/1024) segment_size
from user_segments
where segment_type like 'TABLE%' or segment_type like 'INDEX%'
group by segment_name,segment_type)
loop
--start analyze
if rec.segment_type = 'INDEX' then
dbms_stats.gather_index_stats(ownname => 'USER',
indname => rec.segment_name,
degree => 8
);
elsif rec.segment_type = 'INDEX PARTITION' then
dbms_stats.gather_index_stats(ownname => 'USER',
indname => rec.segment_name,
degree => 8
);
elsif rec.segment_type = 'TABLE' then
case when rec.segment_size < 100 then
v_per := 100;
else
v_per := 10;
end case;
dbms_stats.gather_table_stats(ownname => 'USER',
tabname => rec.segment_name,
estimate_percent => v_per,
method_opt => 'FOR ALL COLUMNS SIZE 1', -- SIZE 1 不收集直方圖資訊
degree => 8);
elsif rec.segment_type = 'TABLE PARTITION' then
v_per := 10;
dbms_stats.gather_table_stats(ownname => 'USER',
tabname => rec.segment_name,
estimate_percent => v_per,
method_opt => 'FOR ALL COLUMNS SIZE 1',
degree => 8);
end if;
v_time := ceil((dbms_utility.get_time - v_start)/100);
dbms_output.put_line(rpad(rec.segment_name||'('||rec.segment_size||'M)',40,'.')||'elaped time '||v_time||'s');
v_start := dbms_utility.get_time;
end loop;
end;
/
prompt "analyze end"
exit
EOF
<
--------------------------------------------------------------
Oracle9i,10g (開啟table monitoring時)
--------------------------------------------------------------
都採用auto方式。
SQL> being
dbms_stats.gather_schema_stats(
ownname => 'USER',
estimate_percent => dbms_stats.auto_sample_size, -- Oracle根據表的大小和列值分佈在5%到20%間取值
method_opt => 'for all columns size auto',
cascade=>TRUE,
degree => 8 );
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-616717/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle統計分析 - dbms_statsOracle
- [zt] 統計分析工具dbms_stats 預設引數在 9i、10g中的變化
- Oracle9i, 10g 優化模式 OPTIMIZER_MODEOracle優化模式
- linux系統優化指令碼Linux優化指令碼
- Oracle9i 應用系統優化Oracle優化
- CentOS 6 系統優化檢測指令碼CentOS優化指令碼
- [總結] Oracle優化 – 分析統計Oracle優化
- [統計分析] DBMS_STATS, METHOD_OPT and FOR ALL INDEXED COLUMNSIndex
- javascript指令碼的效能優化JavaScript指令碼優化
- 網站轉化率統計分析及優化方案網站優化
- 【效能優化】ANALYZE 與DBMS_STATS的區別優化
- 【效能優化】dbms_stats在ORACLE中的使用優化Oracle
- CUDA優化之指令優化優化
- 程式分析與優化 - 10 指令級並行優化並行
- Oracle9i,10g,11g 預設使用者統計Oracle
- Mysql資料庫優化系列(二)------AWK指令碼統計資料庫效能引數MySql資料庫優化指令碼
- DBMS_STATS分析表
- oracle 10g rman 指令碼Oracle 10g指令碼
- oracle 10g的自動統計分析Oracle 10g
- 【效能優化】Oracle 10g 資料庫之間複製統計資訊優化Oracle 10g資料庫
- oracle統計資訊 使用dbms_stats包收集統計資料Oracle
- oracle統計資訊包--dbms_stats介紹Oracle
- Java 指令碼化程式設計指南Java指令碼程式設計
- Android原始碼分析–ArrayMap優化Android原始碼優化
- 案例分析之JavaScript程式碼優化JavaScript優化
- 【優化】ORACLE執行計劃分析優化Oracle
- Android 配置 Ant 指令碼之程式碼混淆和優化Android指令碼優化
- 關於dbms_stats對系統統計資訊的管理
- 使用dbms_stats包收集統計資料(zt)
- dbms_stats.gather_schema_stats 新匯入系統優化簡單指令碼優化指令碼
- 系統初始化SHELL指令碼薦指令碼
- 資料統計指令碼(彙總)指令碼
- 利用shell指令碼統計程式碼行數指令碼
- Oracle 10G RAC巡檢指令碼Oracle 10g指令碼
- Laravel 數量統計優化Laravel優化
- 如何優化10g exp/imp優化
- 10G FAST DUAL 的優化AST優化
- Oracle資料庫物件統計分析技術應用(analyze/dbms_utility/dbms_stats)Oracle資料庫物件