首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle SQL*Plus -PRELIM 參數深度解析:Hang 狀態下的緊急診斷利器

     編輯:Oracle 資料庫基礎

什麼是 -PRELIM 連接?

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

核心診斷指令:ORADEBUG

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 vs 正常連接差異

特性正常連接PRELIM 連接
建立 Session是否
執行登入 SQL是 (NLS 設定、Context 查詢等)否
10046 Trace 記錄有無
需解析 SQL是否
適用 Hang 狀態否 (可能卡住)是 (繞過解析)
支援操作完整 SQL僅 ORADEBUG

實戰場景

  • Library Cache Latch 長時間被佔用:無法解析新 SQL,正常登入卡住,PRELIM 可進入收集 Systemstate
  • 進程數達到 PROCESSES 限制:新連接被拒,PRELIM 不佔用 Session Slot
  • 共享池碎片化 (ORA-04031):解析失敗,PRELIM 可傾印 Heap Dump 分析

已知 Bug 注意

Bug 5730231:Oracle 10.2.0.1 執行 ORADEBUG DUMP SYSTEMSTATE 導致 ORA-07445 [kgldmp()+1360] 核心轉儲。
解決:升級至 10.2.0.3 或更高版本。

9i 環境應對

在 9i 機器安裝 10g Client,使用 10g SQLPLUS -PRELIM 連接 9i 資料庫(需 9.2.0.4+)同樣有效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved