V$SESSION_WAIT 即時反映會話等待事件,P1/P2/P3 携帶事件具體上下文(文件號、塊號等)。結合 DBA_EXTENTS 可定位熱點段。
定位:P1=file#, P2=block# → DBA_EXTENTS 查段。
對策:補充缺失索引、小表 KEEP POOL、優化 SQL 避免不必要全掃。
定位:同 scattered read。
對策:調整連接順序、檢查索引選擇性、適當增大 DB_CACHE_SIZE、Hash Join 放入 PGA。
對策:增大 DB_CACHE_SIZE、增加 DB_WRITER_PROCESSES、優化檢查點、增加物理磁盤。
查 V$WAITSTAT 細分:
FREELIST GROUPS通用:增大 INITRANS/PCTFREE 預留 ITL 槽。
LOG_BUFFER、Redo 放快盤/固態盤LOG_ARCHIVE_MAX_PROCESSES_LOG_IO_SIZE、Redo 放高速盤常見 Latch 類型:
SHARED_POOL_SIZE_DB_BLOCK_HASH_BUCKETS 設質數、消除熱點 SQLDB_BLOCK_LRU_LATCHES、多緩沖池查 X$KGLOB/X$KGLPN/X$KGLLK 定位阻塞會話與 SQL,避免高峰期 DDL、熱門包體重編譯。
SELECT owner, segment_name, segment_type
FROM dba_extents
WHERE file_id = :p1
AND :p2 BETWEEN block_id AND block_id + blocks - 1;
SELECT a.hladdr, a.file#, a.dbablk, a.tch, a.obj, b.object_name
FROM x$bh a, dba_objects b
WHERE (a.obj = b.object_id OR a.obj = b.data_object_id)
AND a.hladdr = :p1raw
UNION
SELECT hladdr, file#, dbablk, tch, obj, null
FROM x$bh
WHERE obj IN (SELECT obj FROM x$bh WHERE hladdr = :p1raw
MINUS SELECT object_id FROM dba_objects
MINUS SELECT data_object_id FROM dba_objects)
AND hladdr = :p1raw
ORDER BY 4;