Oracle 10g 引入 SQLPLUS -PRELIM,建立不創建 Session 的輕量連接,直接附掛到 SGA 共享記憶體,繞過正常登入流程(無需解析 SQL、無需驗證資源限制),專為資料庫 Hang/凍結時的緊急診斷設計。
# 方式 1:命令列參數
SQLPLUS -PRELIM / AS SYSDBA
# 方式 2:SQL*Plus 內部命令
SQLPLUS /NOLOG
SQL> SET _PRELIM ON
SQL> CONNECT / AS SYSDBA
-- 提示:Prelim connection established
SQL> ORADEBUG SETMYPID
SQL> ORADEBUG UNLIMIT
SQL> ORADEBUG DUMP SYSTEMSTATE 10 -- 完整系統狀態傾印
SQL> ORADEBUG DUMP PROCESSSTATE 10 -- 當前進程狀態
SQL> ORADEBUG TRACEFILE_NAME -- 確認追蹤檔位置
產生的 Trace 檔位於 USER_DUMP_DEST 或 DIAGNOSTIC_DEST,可離線分析鎖等待、Library Cache 爭用、死鎖等問題。
| 特性 | 正常連接 | PRELIM 連接 |
|---|---|---|
| 建立 Session | 是 | 否 |
| 執行登入 SQL | 是 (NLS 設定、Context 查詢等) | 否 |
| 10046 Trace 記錄 | 有 | 無 |
| 需解析 SQL | 是 | 否 |
| 適用 Hang 狀態 | 否 (可能卡住) | 是 (繞過解析) |
| 支援操作 | 完整 SQL | 僅 ORADEBUG |
Bug 5730231:Oracle 10.2.0.1 執行
ORADEBUG DUMP SYSTEMSTATE導致ORA-07445 [kgldmp()+1360]核心轉儲。
解決:升級至 10.2.0.3 或更高版本。
在 9i 機器安裝 10g Client,使用 10g SQLPLUS -PRELIM 連接 9i 資料庫(需 9.2.0.4+)同樣有效。