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

Oracle 多實例自動啟動完整指南:兩種主流方法詳細解析

     編輯:Oracle 資料庫基礎

前言

在企業級生產環境中,Oracle 資料庫伺服器重啟後若能自動拉起多個實例,將大幅降低運維成本並提高服務可用性。本文將系統介紹兩種最常用的 Oracle 多實例自動啟動方案,涵蓋手動腳本啟動與開機自啟動配置,並說明監聽器與 Enterprise Manager 的同步啟動策略。

方法一:手動腳本啟動多實例

適用於需要靈活控制啟動順序、或在維護窗口逐個拉起實例的場景。核心邏輯是透過切換 ORACLE_SID 環境變數,依次以 SYSDBA 身分連線並執行 STARTUP。

操作步驟範例(雙實例 DB1、DB2)

export ORACLE_SID=DB1
sqlplus '/as sysdba' <

監聽器同步啟動

  • 不同埠號:lsnrctl start listener1、lsnrctl start listener2……可先用 lsnrctl status 確認配置文件位置再編輯。
  • 同一埠號:僅需 lsnrctl start 啟動預設監聽器。

Enterprise Manager (dbconsole) 啟動

export ORACLE_SID=DB1
emctl start dbconsole

其他實例同理,逐個切換 SID 執行即可。

方法二:開機自動啟動(生產環境推薦)

利用 Oracle 內建的 dbstart/dbshut 搭配 /etc/oratab 實現隨作業系統自動拉起/關閉所有標記為 Y 的實例。

1. 編輯 /etc/oratab

將需自啟動實例的第三欄位從 N 改為 Y,或一次性執行:

:g/N/s//Y/g

2. 建立管理腳本 /etc/init.d/Oracle.sh

#!/bin/bash
case "$1" in
start)
    date >>/var/log/Oracle
    echo -e "\nThe Oracle will start\n" >/var/log/Oracle
    su - oracle -c "lsnrctl start; dbstart; emctl start dbconsole; exit;" >>/var/log/Oracle
    echo -e "The Oracle started" >>/var/log/Oracle
    ;;
stop)
    date >>/var/log/Oracle
    echo -e "\nThe Oracle will stop\n" >/var/log/Oracle
    su - oracle -c "dbshut; emctl stop dbconsole; lsnrctl stop; exit;" >>/var/log/Oracle
    echo -e "The Oracle stoped" >>/var/log/Oracle
    ;;
restart)
    $0 stop
    $0 start
    ;;
*)
    echo -e "usage $0 {start|stop|restart}"
    exit 1
    ;;
esac

3. 賦權並加入開機序列

chmod +x Oracle.sh
ln -s Oracle.sh /etc/rc.d/rc3.d/S99Oracle
ln -s Oracle.sh /etc/rc.d/rc5.d/S99Oracle
ln -s Oracle.sh /etc/rc.d/rc0.d/K01Oracle
ln -s Oracle.sh /etc/rc.d/rc6.d/K01Oracle

其中 S99 代表啟動順序較晚(確保網路、儲存就緒),K01 代表關機最先停止資料庫。

常見坑點提醒

  • oratab 路徑在 Solaris/AIX 可能為 /var/opt/oracle/oratab,請以實際環境為準。
  • dbstart 會讀取 ORACLE_HOME_LISTNER 環境變數啟動監聽器,若未設定則啟動預設 LISTENER。
  • 若使用 Grid Infrastructure (GI),實例啟動由 CRS 管理,請勿重複配置此腳本。
  • 日誌輸出至 /var/log/Oracle 方便排查,建議定期輪轉。

總結

方法一適合臨時維護、升級驗證;方法二才是生產環境「設定後即忘記」的標準做法。配合 oratab 與標準 init 腳本,即可實現多實例、監聽器、EM 的全自動生命週期管理。

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