Oracle DB 因宿主機(Linux 虛擬機器)意外關停,重啟資料庫步驟

希望能摸鱼的凛耶酱發表於2024-08-29

前期準備:

示例的linux版本為:linux 9
宿主機重啟後,如果之前掛載的oracle home路徑及環境變數未生效,需要先重新設定:

export ORACLE_SID=FREE 
export ORAENV_ASK=NO 
. /opt/oracle/product/23ai/dbhomeFree/bin/oraenv

前往home路徑下的bin資料夾下進行操作:
cd $ORACLE_HOME/bin

————

  • 步驟一:檢查監聽器狀態

注意: 如果你登入Linux時用的時root的賬戶,需要先執行命令切換到oracle賬號:
su oracle

檢查Oracle監聽器是否正在執行:

lsnrctl status

如果監聽器沒有執行,啟動它:

lsnrctl start
  • 步驟二:確認資料庫狀態
    首先,以sysdba身份登入SQL*Plus來檢查資料庫的狀態:
    登入Oracle:
./sqlplus / as sysdba

在SQL*Plus中執行以下命令:

SELECT status FROM v$instance;

返回報錯:

ERROR at line 1:
ORA-01034: The Oracle instance is not available for use. Start the instance.
Process ID: 0
Session ID: 0 Serial number: 0
Help: https://docs.oracle.com/error-help/db/ora-01034/
  • 步驟三:嘗試正常啟動資料庫

如果資料庫是關閉的,嘗試正常啟動它:

STARTUP;

資料庫啟動log

SQL> STARTUP
ORACLE instance started.

Total System Global Area 1603726344 bytes
Fixed Size                  5360648 bytes
Variable Size             989855744 bytes
Database Buffers          603979776 bytes
Redo Buffers                4530176 bytes
Database mounted.
Database opened.

如果資料庫掛載了但未開啟,執行:

ALTER DATABASE OPEN;
  • 步驟 4: 檢查資料庫和監聽器配置
    確保listener.ora和tnsnames.ora檔案配置正確,並且與資料庫例項名和服務名匹配。

  • 步驟 5: 檢查系統資源
    檢查系統資源(如記憶體、CPU、磁碟空間)是否充足,以支援資料庫的執行。

  • 步驟 6: 檢視日誌檔案
    檢查資料庫和監聽器的日誌檔案,以確定關閉的原因和任何錯誤訊息:

資料庫日誌檔案通常位於$ORACLE_HOME/diag/rdbms///trace/目錄下。
監聽器日誌檔案通常位於$ORACLE_HOME/network/log/目錄下。

  • 步驟 7: 資料庫恢復
    如果資料庫在關閉時處於不一致狀態,可能需要進行介質恢復:
STARTUP MOUNT;
ALTER DATABASE RECOVER;
ALTER DATABASE OPEN;

如果需要重置日誌(通常在備份後恢復到某個時間點時使用),則使用:

ALTER DATABASE OPEN RESETLOGS;
  • 步驟 8: 重啟相關服務
    如果資料庫是作為叢集的一部分執行的,可能需要重啟叢集服務:
crsctl start crs

相關文章