Oracle 11g DataGuard自动启动服务只为了做的更好 Just to do better script name:oracledg #!/bin/bash #chkconfig: 2345 98 01 #description: Oracle database dataguard server #Starts the oracle database dataguard server #If more than four archive no application will be under the mout synchronization #make SHEEL :MUXINQNG case $1 in "start") if [ ! -f /var/lock/subsys/oracle ]; then prog="listener" echo -n $"Starting $prog: " su - oracle -c "lsnrctl start" >> /var/log/oracle.log RETVAL=$? [ $RETVAL -eq 0 ] && echo "success" || echo "failed" prog="oracle dataguard" echo -n $"Starting $prog: " su - oracle -c "sqlplus /nolog" << EOF >> /var/log/oracle.log connect / as sysdba startup mount ! sleep 30 select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database; select thread#,min(sequence#) no_applied_min,max(sequence#) no_applied_max,count(1) no_applied_all from v$archived_log where applied="NO" and STANDBY_DEST="NO" and deleted<>"YES" group by thread# order by thread#; declare wyyn number; begin select count(1) into wyyn from v$archived_log where applied="NO" and standby_dest="NO"; if wyyn < 5 then EXECUTE IMMEDIATE "alter database open";