1.Windows
Oracle提供了伴隨作業系統自動重啟的功能,在Windows中,可以修改“我的電腦-->管理-->服務-->OracleService$ORACLE_SID”,或直接使用Win+R鍵開啟執行視窗,輸入services.msc即可開啟服務,找到相應的Oracle服務,然後將其屬性中的啟動型別修改成自動。一般在Windows系統上安裝完後會自動設定成自動。
Linux對於Linux/Unix作業系統,如果想設定自動重啟,那該如何操作呢?對此Oracle提供了dbstart命令用於啟動,可以有2種方法來配置。
方法1:配置Linux的service服務
1. 修改/etc/oratab
1[root@oracle ~]#vim /etc/oratab2orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y #將N改為Y
檔案/etc/oratab由root.sh指令碼建立,在用DBCA建立例項時也會更新這個檔案。當$ORACLE_SID:$ORACLE_HOME:<N|Y>設定為Y時,允許例項自啟動,當設定為N時,則不允許自啟動。這個檔案裡的配置僅僅起一個開關的作用,其並不會具體的執行啟動和關閉,具體的操作由$ORACLE_HOME/bin/dbstart和dbshut指令碼來實現。這2個指令碼在執行時會檢查/etc/oratab檔案裡的配置,為Y時才能繼續執行。
2. 修改$ORACLE_HOME/bin/dbstart和$ORACLE_HOME/bin/dbshut
1[root@oracle ~]#vim $ORACLE_HOME/bin/dbstart2[root@oracle ~]#vim $ORACLE_HOME/bin/dbshut3ORACLE_HOME_listener=$ORACLE_HOME ($1改為$ORACLE_HOME)
ORACLE_HOME_listener的位置:Oracle 11g的dbstart在第80行,dbshut檔案中在第50行。
3. 建立啟動指令碼
使用root使用者建立指令碼:
[root@oracle ~]#vim /etc/rc.d/init.d/oracle
1#!/bin/bash 2# chkconfig: 2345 99 10 3# description: Startup Script for oracle Databases 4# /etc/rc.d/init.d/oracle 5 6export ORACLE_BASE=/u01/app/oracle/ 7export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 8export PATH=$PATH:$ORACLE_HOME/bin 9export ORACLE_UNQNAME=PROD11011echo " " >> /var/log/oraclelog12echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog1314case "$1" in15start)16echo "-----startup oracle-----" >> /var/log/oraclelog17su oracle -c "$ORACLE_HOME/bin/dbstart"18su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"19touch /var/lock/subsys/oracle20echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog21echo "-----startup oracle successful-----" >> /var/log/oraclelog22echo "OK" 23;;2425stop)26echo "-----shutdown oracle-----" >> /var/log/oraclelog27su oracle -c "$ORACLE_HOME/bin/dbshut"28su oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"29rm -f /var/lock/subsys/oracle30echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelogg31echo "-----shutdown oracle successful-----" >> /var/log/oraclelog32echo "OK" 33;;3435restart)36echo "-----shutdown oracle-----" >> /var/log/oraclelog37su oracle -c "$ORACLE_HOME/bin/dbshut"38su oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"39rm -f /var/lock/subsys/oracle40echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog41echo "-----shutdown oracle successful-----" >> /var/log/oraclelog4243echo "-----startup oracle-----" >> /var/log/oraclelog44su oracle -c "$ORACLE_HOME/bin/dbstart"45su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"46touch /var/lock/subsys/oracle47echo `date +'%Y-%m-%d %H:%M:%S'` >> /var/log/oraclelog48echo "-----startup oracle successful-----" >> /var/log/oraclelog49echo "OK" 50;;5152*)53echo "Usage: 'basename $0' start|stop|restart" 54exit 155esac56exit 057
4. 給指令碼設定許可權
1[root@oracle ~]# chmod 755 /etc/rc.d/init.d/oracle
5. 建立服務
1[root@oracle ~]# chkconfig --add oracle2[root@oracle ~]# chkconfig oracle on3[root@oracle ~]# chkconfig --list oracle4oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off
6. 檢查是否生效
先使用root使用者測試服務是否生效:
1[root@edsir4p1 ~]# service oracle stop2[root@edsir4p1 ~]# service oracle start3[root@edsir4p1 ~]# service oracle restart
再重啟OS,驗證是否生效。
方法2:配置/etc/rc.d/rc.local檔案
在配置了/etc/oratab和修改了dbstart、dbshut檔案後,然後將以下指令碼新增到/etc/rc.d/rc.local或/etc/rc.local檔案中(/etc/rc.local是/etc/rc.d/rc.local的軟連線檔案):
1export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_12su oracle -c $ORACLE_HOME/bin/dbstart3export ORACLE_UNQNAME=PROD14su oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"5
若環境中沒有建立EM,則可以不用新增ORACLE_UNQNAME,和emctl這2行,最後就可以重啟OS做測試工作了。
需要注意的是,在CentOS7中,/etc/rc.d/rc.local的許可權被降低了,所以需要執行如下命令賦予其可執行許可權:
1chmod +x /etc/rc.d/rc.local
對於這2種方法,需要注意的幾個問題:
1. 多個例項都會自動重啟。
2. 監聽也會自動重啟。
3. 重啟的詳細日誌為:$ORACLE_HOME/shutdown.log和$ORACLE_HOME/startup.log。
4. oracle使用者的環境變數可以不用配置。
5. ORACLE_UNQNAME的作用是設定EM的環境變數,emctl是啟動OEM,若沒有則可以不用設定。
6. ORACLE_HOME的作用是設定資料庫監聽的環境變數。
7. 對於ASM、RAC環境,只需要將資料庫資源註冊的CRS中,即可實現開機啟動。