Oracle的邏輯結構(表空間、段、區間、塊)——Oracle資料塊(二)
以下指令碼來自於網際網路,具體出處已經找不到了,如有知道還請告知!
關於熱點塊的查詢
====查詢當前資料庫最繁忙的Buffer,TCH(Touch)表示訪問次數越高,熱點快競爭問題就存在=====
SELECT *
FROM (SELECT addr, ts#, file#, dbarfil, dbablk, tch
FROM x$bh
ORDER BY tch DESC)
WHERE ROWNUM < 11;
====查詢當前資料庫最繁忙的Buffer,結合dba_extents查詢得到這些熱點Buffer來自哪些物件=====
SELECT e.owner, e.segment_name, e.segment_type
FROM dba_extents e,
(SELECT *
FROM (SELECT addr, ts#, file#, dbarfil, dbablk, tch
FROM x$bh
ORDER BY tch DESC)
WHERE ROWNUM < 11) b
WHERE e.relative_fno = b.dbarfil
AND e.block_id <= b.dbablk
AND e.block_id + e.blocks > b.dbablk;
=============如果在Top 5中發現latch free熱點塊事件時,可以從V$latch_children中查詢具體的子Latch資訊============
SELECT *
FROM (SELECT addr, child#, gets, misses, sleeps, immediate_gets igets,
immediate_misses imiss, spin_gets sgets
FROM v$latch_children
WHERE NAME = 'cache buffers chains'
ORDER BY sleeps DESC)
WHERE ROWNUM < 11;
================獲取當前持有最熱點資料塊的Latch和buffer資訊==========
SELECT b.addr, a.ts#, a.dbarfil, a.dbablk, a.tch, b.gets, b.misses, b.sleeps
FROM (SELECT *
FROM (SELECT addr, ts#, file#, dbarfil, dbablk, tch, hladdr
FROM x$bh
ORDER BY tch DESC)
WHERE ROWNUM < 11) a,
(SELECT addr, gets, misses, sleeps
FROM v$latch_children
WHERE NAME = 'cache buffers chains') b
WHERE a.hladdr = b.addr;
===============利用前面的SQL可以找到這些熱點Buffer的物件資訊===========
SELECT distinct e.owner, e.segment_name, e.segment_type
FROM dba_extents e,
(SELECT *
FROM (SELECT addr, ts#, file#, dbarfil, dbablk, tch
FROM x$bh
ORDER BY tch DESC)
WHERE ROWNUM < 11) b
WHERE e.relative_fno = b.dbarfil
AND e.block_id <= b.dbablk
AND e.block_id + e.blocks > b.dbablk;
================結合SQL檢視可以找到操作這些物件的相關SQL,然後透過最佳化SQL減少資料的訪問,
或者最佳化某些容易引起爭用的操作(如connect by等操作)來減少熱點塊競爭=================
break on hash_value skip 1
SELECT /*+ rule */ hash_value,sql_text
FROM v$sqltext
WHERE (hash_value, address) IN (
SELECT a.hash_value, a.address
FROM v$sqltext a,
(SELECT DISTINCT a.owner, a.segment_name, a.segment_type
FROM dba_extents a,
(SELECT dbarfil, dbablk
FROM (SELECT dbarfil, dbablk
FROM x$bh
ORDER BY tch DESC)
WHERE ROWNUM < 11) b
WHERE a.relative_fno = b.dbarfil
AND a.block_id <= b.dbablk
AND a.block_id + a.blocks > b.dbablk) b
WHERE a.sql_text LIKE '%' || b.segment_name || '%'
AND b.segment_type = 'TABLE')
ORDER BY hash_value, address, piece;
也可以參看 熱點塊競爭和解決(cache buffers chains)
http://blog.oracle.com.cn/html/32/203732-4268.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-545697/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的邏輯結構(表空間、段、區間、塊)——表空間Oracle
- 資料庫邏輯結構:表空間、段、區、塊的字典資料庫
- Oracle OCP(46):表空間、段、區、塊Oracle
- Oracle表空間、段、區和塊簡述Oracle
- 表空間、段、區、塊的相關總結
- oracle 表空間、段、資料擴充和資料塊——來自網路Oracle
- oracle 普通表空間資料檔案壞塊Oracle
- Oracle之 資料塊、區段和段Oracle
- 邏輯表空間管理結構(Logical Storage Structures)Struct
- 【TABLESPACE】Oracle 表空間結構說明Oracle
- Oracle基礎結構之表空間Oracle
- oracle回滾段 undo 表空間Oracle
- ORACLE空間管理實驗8:資料塊格式分析--DUMP結合BBEDOracle
- 偽造基於ASSM表空間的資料塊SSM
- Oracle上的邏輯壞塊和物理壞塊Oracle
- Oracle——01表空間和區Oracle
- oracle清除資料庫表空間Oracle資料庫
- Oracle 11.1 邏輯壞塊Oracle
- 【kingsql分享】邏輯資料庫結構 之 資料塊SQL資料庫
- Oracle表空間Oracle
- oracle 表空間Oracle
- 對oracle資料表空間的計算Oracle
- oracle的邏輯結構Oracle
- Oracle 表空間與資料檔案Oracle
- oracle 資料檔案表空間管理Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle 邏輯結構Oracle
- Oracle體系結構之-資料庫、表空間、例項簡介Oracle資料庫
- Oracle資料庫塊的物理損壞與邏輯損壞Oracle資料庫
- Oracle的UNDO表空間管理總結Oracle
- oracle block資料塊結構之itcOracleBloC
- oracle block資料塊結構續(一)OracleBloC
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- Oracle表空間維護總結Oracle
- ORACLE臨時表空間總結Oracle
- oracle的空間資料庫:Oracle資料庫
- 記一次undo表空間資料塊恢復
- oracle表空間的整理Oracle