先前介紹過 Oracle 資料庫的啟動與關閉必須進入 sqlplus 執行 startup 或是 shutdown ,在作業系統開機時並不會自動執行這些命令,所以每次主機重新開機之後必須要再手動將資料庫開啟,那麼要如何在主機開機之後自動地將 Oracle 資料庫啟動 ? 如果是 Windows 平台,在資料庫建立好的同時會在 Windows 服務上建立一個 Oracle 服務,隨著主機的開機與關機,這些服務也會自動控制 Oracle 資料庫的啟動與關閉,但是如果是 Unix 平台,在沒有 CRS 服務(RAC或 Oracle Restart)的狀態下,就必須自己寫 script 來設定資料庫的啟動與關閉。
Oracle 資料庫在安裝完成的同時已經在 $ORACLE_HOME/bin 底下幫我們建立好 DB 啟動與關閉的腳本了,分別為 dbstart (開啟 DB) 與 dbshut (關閉 DB),我們只需要在開機與關機的同時呼叫這個腳本就可以協助我們開啟與關閉資料庫了。
dbstart 與 dbshut 會去檢查 /etc/oratab 的內容來決定要開啟與關閉那些資料庫,/etc/oratab 內容裡面有三個區塊分別用 “:” 分開
這三個區塊分別表示 <ORACLE_SID>:<ORACLE_HOME>:<是否開啟>
dbstart / dbshut 會去判斷最後一個區塊是否為 “Y” ,如果為 “Y”,那麼就從指定的 ORACLE_HOME 底下來啟動這個資料庫,如果為 “N” 就表示不啟動這個資料庫。
了解 dbstart 與 dbshut 之後就可以簡單利用它來建立兩個腳本,start_db.sh 與 stop_db.sh 如下:
start_db.sh
stop_db.sh
建立完畢後授予執行權限:
接下來我們只需要把它放入啟動程序就可以了,以 Linux 為例,啟動一般為 3或5,關閉一般為0或6,所以把 start_db.sh 放入 rc3.d與rc5.d,stop_db.sh 放入 rc0.d 與 rc6.d:
另一個方式則可以把資料庫啟動與關閉的腳本放入 Linux 服務當中,這樣就不需要自行連結至 run level 了。
首先於 /etc/init.d 建立 dbora 腳本:
前面 chkconfig 是用來設定 run level ,35 表示此服務會在 run level 3與5的時候啟動,在其他 level 的時候關閉;99表示此服務會在最後的順位啟動;10表示此服務會在最前面的順位停止。
接下來將此腳本註冊於 Linux 服務當中就可以了:
如果是 Linux 7 以上的版本,則必須使用 systemctl 來建立服務。首先於 /lib/systemd/system 底下建立 dbora.service ,裡面的內容呼叫我們之前建立的 start_db.sh 與 stop_db.sh:
/lib/system/system/dbora.service
建立好之後再將此服務啟用就可以了:
沒有留言:
張貼留言