在Linux系統中,安裝好oracle資料庫服務後,并不像在Windows系統下一樣,oracle服務在預設情況下會随系統的啟動自動啟動。Linux系統中,是需要使用者去手動進行設定,才能實作oracle開機自動啟動的。本文将一步一步教你如何進行設定。
安裝好oracle的linux系統(以rhel7.4、Oracle 11g為例)
方法/步驟
1、前提條件:你已經在Linux系統中正确安裝好oracle服務,使用手動方式可以正常啟動。
檢視ORACLE_HOME是否設定
$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/dbhome_1
使用dbstart指令啟動資料庫比較友善,但是在linux上安裝好oracle之後,第一次使用dbstart指令可能會報如下錯誤:
[oracle@njdzjkdb dbhome_1]$ cd bin/
[oracle@njdzjkdb bin]$ ll | grep dbs
-rwxr-x---. 1 oracle oinstall 6088 1月 1 2000 dbshut
-rwxr-x---. 1 oracle oinstall 13892 12月 11 16:01 dbstart
[oracle@njdzjkdb bin]$ dbstart
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener Usage:
/u01/app/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME
錯誤提示:ORACLE_HOME_LISTNER 沒有設定
原因:
dbstart和dbshut腳本檔案中ORACLE_HOME_LISTNER的設定有問題,分别打開兩個檔案找到:用vi編輯dbstart,ORACLE_HOME_LISTNER=$1,修改為
ORACLE_HOME_LISTNER=$ORACLE_HOME
前提是$ORACLE_HOME環境設定正确
[oracle@njdzjkdb bin]$ vi dbstart
--dbstart為開機自啟動腳本,讓系統開機就去執行dbstart腳本檔案,它會去讀oratab檔案,讀到Y就會把對應的執行個體開機自啟動
--調整或确認監聽路徑,如ORACLE_HOME_LISTNER=/u01/app/oracle/product/11.2.0/dbhome_1或ORACLE_HOME_LISTNER=$ORACLE_HOME根據設定的監聽調整路徑
2、使用vi編輯器編輯檔案/etc/oratab
dbca建庫時都會自動建立/etc/oratab檔案
#vi /etc/oratab
将“orcl:/u01/app/oracle/product/12.1.0/dbhome_1:N”,
改為“orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y”。
修改完成後,儲存退出
--<N|Y>選項代表開機是否自啟動
**說明:**orcl為執行個體名;/u01/app/oracle/product/12.1.0/dbhome1為oracle安裝目錄;會因安裝的情況不同而有所不同。

3、編輯/etc/rc.d/rc.local啟動檔案,添加資料庫啟動腳本dbstart
#vi /etc/rc.d/rc.local
末尾添加:
su oracle -lc "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart
或啟動指定執行個體
su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start ORCL"
su - oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
--指令中-c代表執行腳本,腳本dbstart中指定啟動的執行個體,腳本lsnrctl中啟動配置的監聽
**說明:**/u01/app/oracle/product/12.1.0/dbhome1為oracle的安裝目錄,要根據實際情況進行修改。
4、修改DB啟動配置檔案
#vim /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
找到ORACLE_HOME_LISTNER這行
# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1
将$1修改為如下(你的路徑):
ORACLE_HOME_LISTNER=/u01/app/oracle/product/11.2.0/dbhome_1
5、重新開機主機,檢視資料庫和監聽是自啟動
6、開機自啟動多個監聽及多個執行個體
#vim /etc/rc.d/rc.local
su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start UTF8"
su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start GBK"
su - oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
監聽寫多個啟動,執行個體用一個dbstart指令去啟動,它會去讀oratab檔案,讀到Y就會把對應的執行個體開機自啟動
7、小結:
linux下設定執行個體自啟動有關腳本:
oratab:執行個體是否自啟動的注冊資訊
dbstart:開機啟動腳本檔案會讀取oratab資訊
rc.local:開機後立即要做的檔案
--“啟動監聽”
lsnrctl start