【統計資訊】Oracle常用的收集統計資訊方式
1. 檢視某個表的統計資訊
SQL> alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
SQL> select t.TABLE_NAME,t.NUM_ROWS,t.BLOCKS,t.LAST_ANALYZED from user_tables t where table_name in (' TAB 1',' TAB 2');
TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZED
------------------------------ ---------- ---------- -------------------
TAB1 86180 1231 2020-11-27 06:16:04
TAB2
上面結果表示: TAB1 表收集時間為“ 2020-11-27 06:16:04 ”, TAB2 沒有收集統計資訊
2.
檢視某個表索引的統計資訊
SQL> select table_name,index_name,t.blevel,t.num_rows,t.leaf_blocks,t.last_analyzed from user_indexes t where table_name ='TAB1';
ABLE_NAME INDEX_NAME BLEVEL NUM_ROWS LEAF_BLOCKS LAST_ANALYZED
--------- ------------ ---------- ---------- ----------- -------------------
TAB1 INDX_TAB1 1 86261 191 2020-11-27 06:20:57
上面結果顯示,表TAB1 的索引名字為 INDX_TAB1 ,收集時間為“ 2020-11-27 06:20:57 ”
3. 自動收集統計資訊
oracle 會在一個固定的時間將資料庫裡的表和索引的相關統計資訊進行收集,預設 時間為:
>> 週一到週五晚上10 點,持續收集 4 小時 ;
>> 週六週日早上6 點,持續收集 20 小時。
1 )檢視自動收集統計資訊時間
set linesize 200
col REPEAT_INTERVAL for a60
col DURATION for a30
select t1.window_name,t1.repeat_interval,t1.duration from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2 where t1.window_name=t2.window_name and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');
WINDOW_NAME REPEAT_INTERVAL DURATION
--------------- ----------------------------------------------------------- ----------------
MONDAY_WINDOW freq=daily;byday=MON;byhour=22;byminute=0; bysecond=0 +000 04:00:00
TUESDAY_WINDOW freq=daily;byday=TUE;byhour=22;byminute=0; bysecond=0 +000 04:00:00
WEDNESDAY_WINDOW freq=daily;byday=WED;byhour=22;byminute=0; bysecond=0 +000 04:00:00
THURSDAY_WINDOW freq=daily;byday=THU;byhour=22;byminute=0; bysecond=0 +000 04:00:00
FRIDAY_WINDOW freq=daily;byday=FRI;byhour=22;byminute=0; bysecond=0 +000 04:00:00
SATURDAY_WINDOW freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0 +000 20:00:00
SUNDAY_WINDOW freq=daily;byday=SUN;byhour=6;byminute=0; bysecond=0 +000 20:00:0 0
上述結果顯示,從週一到週五,自動收集統計資訊時間為22 點開始,持續 4 個小時;週六和週日自動收集統計資訊時間為 6 點開始,持續 20 個小時。
2 )修改自動收集統計資訊時間
-- 修改週六自動收集統計資訊時間為 8 點開始
SQL> BEGIN
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"SYS"."SATURDAY_WINDOW"',
attribute => 'REPEAT_INTERVAL',
value => 'freq=daily;byday=SAT;byhour= 8 ;byminute=0; bysecond=0 ');
END;
/
4. 手動收集統計資訊
1 )常用手動收集統計資訊
SQL> exec dbms_stats.gather_table_stats(ownname => 'USER',tabname => ' TAB_NAME ',estimate_percent => 10,method_opt=> 'for all indexed columns');
SQL> exec dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'TAB_NAME',CASCADE=>TURE);
注:引數說明:
ownname : USER_NAME
tabname : TABLE_NAME
partname: 分割槽表的某個分割槽名
estimate_percent: 取樣百分比, 最大值為100
block_sample :使用隨機塊取樣代替隨機行取樣
method_opt :
cascade: 是否收集此表索引的統計資訊 , ' true ' 為收集索引
degree: 並行 ,使用CPU 的數量
granularity : 統計資料的收集, 'ALL' - 收集所有(子分割槽,分割槽和全域性)統計資訊
2 ) 收集分割槽表的統計資訊
SQL> exec dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'RANGE_PART_TAB',partname => 'p_201312',estimate_percent => 10,method_opt=> 'for all indexed columns',cascade=>TRUE
3 )收集表和索引統計資訊
SQL> exec dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'TEST',estimate_percent => 10,method_opt=> 'for all indexed columns',cascade=>TRUE
4 )收集某個使用者的統計資訊
SQL> exec dbms_stats.gather_schema_stats(ownname=>' TEST_USER ',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');
5 )收集全庫統計資訊
SQL> exec dbms_stats.gather_database_stats(estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL'
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2738006/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle收集統計資訊Oracle
- Oracle 統計資訊收集Oracle
- 收集oracle統計資訊Oracle
- ORACLE 收集統計資訊Oracle
- ORACLE 統計資訊的收集與管理Oracle
- Oracle統計資訊自動收集Oracle
- oracle收集統計資訊job停止Oracle
- 【統計資訊】Oracle統計資訊Oracle
- Oracle11g 統計資訊-----統計資訊自動收集任務Oracle
- Oracle11g 統計資訊——統計資訊自動收集任務Oracle
- oracle統計資訊--直方圖的收集:Oracle直方圖
- 重新收集oracle表的統計資訊Oracle
- Oracle統計資訊的收集和維護Oracle
- [Oracle] Oracle收集統計資訊的取樣比例Oracle
- oracle 統計資訊檢視與收集Oracle
- oracle 11g統計資訊收集Oracle
- [統計資訊系列7] Oracle 11g的自動統計資訊收集Oracle
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- 關於oracle自動收集統計資訊Oracle
- 收集全庫統計資訊
- mysql如收集統計資訊MySql
- MySQL 5.5 統計資訊收集MySql
- Oracle的自動統計資訊不收集直方圖的資訊Oracle直方圖
- 微課sql最佳化(3)、統計資訊收集(2)-如何收集統計資訊SQL
- MySQL系統如何收集統計資訊MySql
- ORACLE表統計資訊與列統計資訊Oracle
- oracle統計資訊 使用dbms_stats包收集統計資料Oracle
- Oracle10g 統計資訊的自動收集Oracle
- 【Oracle】11g Oracle自動收集統計資訊Oracle
- Oracle 11g手工收集表統計資訊Oracle
- Oracle 11g 統計資訊收集指令碼Oracle指令碼
- ORACLE 11g 自動收集統計資訊Oracle
- 收集統計資訊的簡單操作
- 統計資訊收集不完的解決
- Oracle的統計資訊Oracle
- Oracle 統計資訊Oracle
- Oracle統計資訊Oracle