萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 重啟 Oracle 數據庫完整操作指南:三大核心方法與監聽器管理

Oracle 數據庫在 Linux 上的重啟操作看似簡單,實則涉及實例啟動、監聽器管理、權限切換等多個環節,任何一步疏漏都可能導致服務掛掉或連接失敗。本文梳理三大主流重啟方法,覆蓋 SQL*Plus 命令行、腳本自動化與手動分步操作,並重點講解監聽器同步啟動的關鍵細節。

方法一:SQL*Plus 交互式操作(最標準、可控性最強)

適用場景:需要精確控制啟動階段(NOMOUNT/MOUNT/OPEN)、排查啟動報錯、執行恢復操作。

# 1. 切換到 oracle 用戶(環境變量自動加載)
su - oracle

# 2. 進入 SQL*Plus 無登錄模式
sqlplus /nolog

# 3. 以 SYSDBA 權限連接
SQL> CONNECT / AS SYSDBA

# 4. 啟動數據庫(默認 OPEN 階段)
SQL> STARTUP
# 或分階段啟動:
# STARTUP NOMOUNT  ->  ALTER DATABASE MOUNT  ->  ALTER DATABASE OPEN

# 5. 關閉數據庫(優雅關閉,等待會話結束)
SQL> SHUTDOWN IMMEDIATE
# 其他模式:NORMAL(等待所有用戶斷開) | TRANSACTIONAL(等待事務提交) | ABORT(強制,慎用)

# 6. 退出 SQL*Plus
SQL> EXIT

# 7. 管理監聽器(關鍵步驟,常被遺漏)
lsnrctl start   # 啟動監聽器
lsnrctl status  # 驗證狀態

方法二:dbstart/dbshut 腳本自動化(適合維護窗口、批量操作)

Oracle 安裝目錄下自帶的啟停腳本,會根據 /etc/oratab 配置自動處理多實例。

# 以 oracle 用戶執行(或 root 切換後執行)
cd $ORACLE_HOME/bin

# 啟動所有配置為 Y 的實例及監聽器
./dbstart $ORACLE_HOME

# 僅啟動監聽器
./lsnrctl start

# 關閉所有實例及監聽器
./dbshut $ORACLE_HOME

/etc/oratab 配置格式

# SID:ORACLE_HOME:Y/N (Y=開機自啟)
ORCL:/u01/app/oracle/product/19.0.0/dbhome_1:Y

方法三:系統服務管理(systemd 整合,現代 Linux 推薦)

將 Oracle 實例註冊為 systemd 服務,實現開機自啟、依賴管理、日誌聚合。

# /etc/systemd/system/oracle-db.service
[Unit]
Description=Oracle Database Instance
After=network.target oracle-listener.service
Wants=oracle-listener.service

[Service]
Type=forking
User=oracle
Group=oinstall
Environment=ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
Environment=ORACLE_SID=ORCL
ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOME
ExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOME
TimeoutSec=300

[Install]
WantedBy=multi-user.target
# 監聽器獨立服務
# /etc/systemd/system/oracle-listener.service
[Unit]
Description=Oracle Listener
After=network.target

[Service]
Type=forking
User=oracle
Group=oinstall
Environment=ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ExecStart=$ORACLE_HOME/bin/lsnrctl start
ExecStop=$ORACLE_HOME/bin/lsnrctl stop

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now oracle-listener oracle-db

監聽器管理核心命令

命令功能
lsnrctl start啟動監聽器
lsnrctl stop停止監聽器
lsnrctl status查看狀態、端口、服務註冊情況
lsnrctl services詳細顯示已註冊服務與處理程序
lsnrctl reload熱加載配置變更(無需重啟)

常見故障排查清單

  • ORA-12514:監聽器未識別服務名 → 檢查 listener.ora 的 SID_LIST 或確認實例已動態註冊(ALTER SYSTEM REGISTER)
  • ORA-01034/ORA-27101:實例未啟動 → 執行 STARTUP,檢查告警日誌 $ORACLE_BASE/diag/rdbms/*/trace/alert_*.log
  • ORA-12541:無監聽器 → 執行 lsnrctl start,檢查防火牆 1521 埠
  • 權限拒絕:確保以 oracle 用戶操作,$ORACLE_HOME 權限正確(chown -R oracle:oinstall $ORACLE_HOME)

最佳實踐建議

  1. 優先使用 systemd 服務:統一管理、依賴解析、日誌集中化
  2. 維護窗口必做:SHUTDOWN IMMEDIATE → 維護操作 → STARTUP → lsnrctl start → 驗證應用連接
  3. 備份 spfile:重大變更前 CREATE PFILE FROM SPFILE 留存備份
  4. 監控告警日誌:啟動後必看 tail -f alert_*.log 確認無錯誤

掌握這三種方法,無論是日常維護、故障恢復還是自動化部署,都能從容應對 Oracle 在 Linux 上的啟停管理。建議將標準化操作流程文檔化,納入運行手冊。

copyright © 萬盛學電腦網 all rights reserved