環境基線
- 硬件:SUN Ultra Enterprise 3000
- OS:Solaris 2.5 (簡體中文)
- 磁盤:4.2 GB / 內存:256 MB
- Oracle:7.3.2.1 安裝於
/database/oracle (剩餘 2 GB)
- 組件:RDBMS, SQL*Net, SQL*Plus, Pro*C, Server Manager
高頻故障與解決方案
故障 1:SHUTDOWN 命令無法正常關閉數據庫
現象:執行 SHUTDOWN 卡住或報錯。
根因:數據庫存在未提交事務,或非 INTERNAL/SYS 用戶嘗試關閉。
處置:
- 確認以
INTERNAL 或 SYS AS SYSDBA 身份連接。
- 若業務允許丟失未提交工作,執行
SHUTDOWN ABORT 強制關閉(未提交事務將回滾)。
- 常規維護窗口建議:
SHUTDOWN IMMEDIATE → 等待事務完成 → 關閉。
故障 2:Client 端頻繁無故死機
現象:應用前端無響應、進程假死。
排查路徑 A:死鎖導致
- 服務端使用 Platinum EPM 監控 DML Lock,發現用戶誤操作觸發死鎖(典型場景:
UPDATE/DELETE 後緊接 SELECT 未提交)。
- 定位死鎖進程 OS PID,Oracle 用戶下執行
kill -9 <pid> 釋放鎖,Client 即時恢復。
排查路徑 B:應用 Bug 導致
- 利用數據字典與基表核對約束條件(PK/UK/FK/Check),排除邏輯錯誤。
- 案例:
DUP_VAL_ON_INDEX 錯誤,實為主鍵列設計缺陷導致非預期數據入庫。修正表結構、清理髒數據後恢復。
- 輔助手段:Server 端 EPM 監控問題用戶當前執行的 SQL,快速定位故障語句。
最佳實踐建議
- 開發規範:禁止「修改後未提交即查詢」模式;長事務拆分為短事務。
- 監控體系:部署 EPM/EM 實時監控鎖等待、會話阻塞、SQL 執行計劃。
- 變更管理:DDL 變更必須經過約束驗證與回滾腳本演練。
- 權限最小化:應用賬號僅授予必要對象權限,禁用 DBA 角色直連業務。