oracle10g中部分檢視查詢非常‘慢“問題解決
在檢視部分檢視中,有時要等很長時間才能出來結果,例如:
案例1:
SQL>select distinct owner from v$access;
Elapsed: 00:02:43.51
案例2:
SQL>select * from dba_extents
where file_id = 6 and 3348 between block_id and
block_id + blocks - 1
Elapsed: 00:00:24.45
造成該原因的是fixed table沒有進行統計分析,具體步驟如下:
1、通過以下指令碼進行確認:
SQL> select VIEW_DEFINITION from
v$fixed_view_definition
where view_name='GV$ACCESS';
使用x$ksuse ,x$kglob , x$kgldp ,x$kgllk
SQL>select dbms_metadata.get_ddl('VIEW', 'DBA_EXTENTS')
from dual;
其中使用了 x$ktfbue
2、檢視是否fixed table是否進行統計分析
SQL>select count(*) from sys.tab_stats$;
COUNT(*)
----------
0
說明:未進行統計分析
3、執行統計分析
SQL>connect /as sysdba
SQL> exec dbms_stats.gather_fixed_objects_stats(null);
SQL>select count(*) from sys.tab_stats$;
COUNT(*)
----------
579
4、檢視以上的fixed table是否都已經被統計分析
SQL>select num_rows, last_analyzed from user_tab_statistics
where table_name = 'X$KTFBUE';
NUM_ROWS LAST_ANAL
---------- ---------
SQL>select num_rows, last_analyzed from user_tab_statistics
where table_name = 'X$KGLDP';
NUM_ROWS LAST_ANAL
- --------- ---------
868 14-JUN-09
說明: 發覺X$KTFBUE並未進行統計分析,造成該問題的主要
原因是oracle10g BUG 5259025
5、需要單獨對這張fixed_table進行統計分析
SQL>exec DBMS_STATS.GATHER_TABLE_STATS
('SYS', 'X$KTFBUE');
SQL>select num_rows, last_analyzed
from user_tab_statistics
where table_name = 'X$KTFBUE';
NUM_ROWS LAST_ANAL
---------- ---------
4186 14-JUN-09
重新測試:
SQL>select /*+ gather_plan_statistics */ distinct owner from v$access;
Elapsed: 00:00:00.05
從2分多提高到不到1秒
SQL>select * from dba_extents
where file_id = 6 and 3348 between block_id and
block_id + blocks - 1
Elapsed: 00:00:02.59
從24秒提高到3秒
備註:
1、 檢視具體執行計劃:
SQL>select sid, sql_id from v$session where xxxxxxx
SQL>set serveroutput on size 1000000
SQL>select * from
dbms_xplan.display_cursor('SQL_ID', '0', 'ALL ALLSTATS'))
2、Bug 5259025請參看metalink.oracle.com
案例1:
SQL>select distinct owner from v$access;
Elapsed: 00:02:43.51
案例2:
SQL>select * from dba_extents
where file_id = 6 and 3348 between block_id and
block_id + blocks - 1
Elapsed: 00:00:24.45
造成該原因的是fixed table沒有進行統計分析,具體步驟如下:
1、通過以下指令碼進行確認:
SQL> select VIEW_DEFINITION from
v$fixed_view_definition
where view_name='GV$ACCESS';
使用x$ksuse ,x$kglob , x$kgldp ,x$kgllk
SQL>select dbms_metadata.get_ddl('VIEW', 'DBA_EXTENTS')
from dual;
其中使用了 x$ktfbue
2、檢視是否fixed table是否進行統計分析
SQL>select count(*) from sys.tab_stats$;
COUNT(*)
----------
0
說明:未進行統計分析
3、執行統計分析
SQL>connect /as sysdba
SQL> exec dbms_stats.gather_fixed_objects_stats(null);
SQL>select count(*) from sys.tab_stats$;
COUNT(*)
----------
579
4、檢視以上的fixed table是否都已經被統計分析
SQL>select num_rows, last_analyzed from user_tab_statistics
where table_name = 'X$KTFBUE';
NUM_ROWS LAST_ANAL
---------- ---------
SQL>select num_rows, last_analyzed from user_tab_statistics
where table_name = 'X$KGLDP';
NUM_ROWS LAST_ANAL
- --------- ---------
868 14-JUN-09
說明: 發覺X$KTFBUE並未進行統計分析,造成該問題的主要
原因是oracle10g BUG 5259025
5、需要單獨對這張fixed_table進行統計分析
SQL>exec DBMS_STATS.GATHER_TABLE_STATS
('SYS', 'X$KTFBUE');
SQL>select num_rows, last_analyzed
from user_tab_statistics
where table_name = 'X$KTFBUE';
NUM_ROWS LAST_ANAL
---------- ---------
4186 14-JUN-09
重新測試:
SQL>select /*+ gather_plan_statistics */ distinct owner from v$access;
Elapsed: 00:00:00.05
從2分多提高到不到1秒
SQL>select * from dba_extents
where file_id = 6 and 3348 between block_id and
block_id + blocks - 1
Elapsed: 00:00:02.59
從24秒提高到3秒
備註:
1、 檢視具體執行計劃:
SQL>select sid, sql_id from v$session where xxxxxxx
SQL>set serveroutput on size 1000000
SQL>select * from
dbms_xplan.display_cursor('SQL_ID', '0', 'ALL ALLSTATS'))
2、Bug 5259025請參看metalink.oracle.com
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/354732/viewspace-606217/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢視慢查詢進度
- dba_free_space查詢速度慢問題解決
- mysql開啟檢視慢查詢日誌MySql
- 檢視慢查詢中,表被update 或 select 次數
- 解決pod健康檢查問題
- Oracle檢視查詢慢之統計資訊收集Oracle
- plsql查詢亂碼問題解決SQL
- SQL Server查詢慢的解決方案SQLServer
- mysql慢查詢,死鎖解決方案MySql
- HBase一次慢查詢請求的問題排查與解決過程
- Redis客戶端基本操作以及檢視慢查詢Redis客戶端
- 並行查詢緩慢的問題分析並行
- 談談SQL慢查詢的解決思路SQL
- MySQL在遠端訪問時非常慢的解決方法MySql
- 解決github訪問慢的問題Github
- 解決安裝Oracle時檢查監視器不透過的問題Oracle
- 解決安裝Oracle時檢查監視器不通過的問題Oracle
- [20210418]查詢v$檢視問題.txt
- 解決Cocoapods賊慢問題
- oracle 9i 查詢資料字典檢視慢案例分析Oracle
- oracle10g中EM的有關問題解決Oracle
- Oracle10g 查詢統計資訊的一些檢視Oracle
- 解決windows docker lnmp訪問慢問題WindowsDockerLNMP
- 一次慢查詢暴露的隱蔽問題
- Oracle中SQL語句執行效率問題的查詢與解決OracleSQL
- 物化檢視中的統計資訊導致的查詢問題分析和修復
- 優化-mysql子查詢索引失效問題解決優化MySql索引
- 詳解MySQL--慢查詢MySql
- 解決外匯檢查系統PSN問題
- MySQL Case-information_schema檢視查詢慢處理一例MySqlORM
- 解決set newname 極慢的問題
- ssh登入慢問題解決方法
- 解決ssh登入慢的問題
- asm例項查詢asm相關檢視hang住解決方法ASM
- 用檢視解決資料庫鏈路問題資料庫
- DELETE TABLE資料後,查詢變慢,問題處理delete
- 檢視查詢報錯
- 【MySQL】檢視&子查詢MySql