sqlplus / as sysdba
STARTUP MOUNT
ORADEBUG SETMYPID
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
ALTER DATABASE OPEN;
ORADEBUG TRACEFILE_NAME
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT OFF';
PARSING IN CURSOR #... sqlid='32r4f1brckzq1'
CREATE TABLE "SYS"."BOOTSTRAP$" ( "LINE#" NUMBER, "OBJ#" NUMBER, "SQL_TEXT" VARCHAR2(4000) )
END OF STMT
數據庫打開階段首要動作是讀取 BOOTSTRAP$ (OBJECT_ID=59),該表存儲核心元數據的 DDL 文本,供字典緩存初始化使用。
WAIT #...: nam='db file sequential read' ela=460 file#=1 block#=520 obj#=-1
WAIT #...: nam='db file sequential read' ela=24 file#=1 block#=520 obj#=59
obj#=-1:讀取文件頭/控制塊,非段對象。obj#=59:確認為 BOOTSTRAP$ 表的數據塊讀取。BINDS #... Bind#0 value=59
STAT #... id=1 op='SORT AGGREGATE'
STAT #... id=2 op='INDEX FULL SCAN PK_EMP'
可見字典查詢走主鍵索引全掃描,行源統計 (STAT) 完整記錄了執行計劃樹。
SELECT dbms_metadata.get_ddl('TABLE','BOOTSTRAP$','SYS') FROM dual;
SELECT owner, object_id FROM dba_objects WHERE object_name='BOOTSTRAP$';
輸出確認:SYS.BOOTSTRAP$ 位於 SYSTEM 表空間,OBJECT_ID=59。
oradebug dump systemstate 266 獲取完整系統狀態。max_dump_file_size 或使用 ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 8' (不含 BINDS) 減小體積。