【統計資訊】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
- [統計資訊系列7] Oracle 11g的自動統計資訊收集Oracle
- Oracle統計資訊的收集和維護Oracle
- oracle 統計資訊檢視與收集Oracle
- ORACLE表統計資訊與列統計資訊、索引統計資訊Oracle索引
- Oracle運維指令碼-收集統計資訊Oracle運維指令碼
- 收集統計資訊方案
- 手動收集——收集統計資訊
- 收集全庫統計資訊
- 微課sql最佳化(3)、統計資訊收集(2)-如何收集統計資訊SQL
- 修改oracle 的統計資訊Oracle
- 6 收集資料庫統計資訊資料庫
- ORACLE19c新特性-實時統計資訊收集Oracle
- Oracle 統計資訊介紹Oracle
- 微課sql最佳化(8)、統計資訊收集(6)-統計資訊查詢SQL
- 【TUNE_ORACLE】定製化收集統計資訊SQL參考OracleSQL
- Oracle 11g系統自動收集統計資訊的一些知識Oracle
- ORACLE analyse table方式收集表統計資訊導致SQL執行計劃不準確而效能下降OracleSQL
- 【STATS】Oracle遷移表統計資訊Oracle
- 【SCRIPT】Oracle統計資訊相關SQLOracleSQL
- 啟用與禁用統計資訊自動收集
- kali常用的資訊收集
- Oracle錶的歷史統計資訊檢視Oracle
- 【統計資訊】全面檢視錶所有統計資訊SQLSQL
- 【統計資訊】如何備份和還原統計資訊
- 【ASK_ORACLE】Oracle如何恢復舊的統計資訊Oracle
- Oracle 統計資訊相關命令彙總Oracle
- Nebula Graph 特性講解——RocksDB 統計資訊的收集和展示
- Linux常用資訊收集命令Linux
- MySQL統計資訊系列MySql
- Oracle優化案例-擴充套件統計資訊(十四)Oracle優化套件
- 【STAT】Oracle 表統計資訊被鎖,如何建立索引Oracle索引
- PostgreSQL DBA(10) - 統計資訊SQL
- SQL Server 更新統計資訊SQLServer
- 【DBMS_STATUS】Oracle控制優化器統計資訊的使用Oracle優化
- [20200819]12c Global Temporary table 統計資訊的收集的疑問.txt
- MySQL對所有表收集統計資訊(Python 2指令碼)MySqlPython指令碼