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

UNIX kill 指令強制終結 Oracle 進程與記憶體清理完整流程

     編輯:Oracle 資料庫基礎

當資料庫鎖死無法正常關閉,需用 UNIX kill 強制終結所有相關進程並釋放共享記憶體/訊號。本文提供標準化操作流程與單行指令。

標準處理步驟

  1. 終結與 ORACLE_SID 相關的所有 Oracle 進程
  2. ipcs -pmb 識別佔用的共享記憶體段
  3. ipcrm -m 釋放共享記憶體
  4. 非 AIX:ipcs -sa 顯示訊號,ipcrm -s 釋放訊號

一鍵終結進程指令

ps -ef | grep $ORACLE_SID | \
grep -v grep | awk '{print $2}' | xargs -i kill -9 {}

實戰範例:檢查與釋放共享記憶體

root> ipcs -pmb

IPC status from /dev/kmem as of Mon Sep 10 16:45:16 2001
T ID KEY MODE OWNER GROUP SEGSZ CPID LPID
Shared Memory:
m 24064 0x4cb0be18 --rw-r----- oracle dba 28975104 1836 23847
m 1 0x4e040002 --rw-rw-rw- root root 31008 572 572
...
# 釋放 Oracle 擁有的 ID=24064
root> ipcrm -m 24064

非 AIX 系統的訊號清理

ipcs -sa
# 找到 Oracle 擁有的 semaphore ID
ipcrm -s 

注意事項

  • kill -9 為強制終止,進程無法執行清理邏輯,**必須**後續手動釋放 IPC 資源
  • 僅在資料庫完全無響應、shutdown immediate/abort 均失效時使用
  • 操作前建議截圖 ipcs 輸出,防誤刪其他進程資源
  • AIX 系統訊號機制不同,無需 ipcrm -s

預防勝於治療

  • 設定 SQLNET.EXPIRE_TIME 偵測死連線
  • 配置 PROCESSES / SESSIONS 參數避免連線耗盡
  • 定期檢查 alert.log 中的死鎖、掛起跡象
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved