--automatically startup and shutdown, with multiple ORACLE_HOMEs normally this is not a problem, but there's problem when 8i and 10g co-exist in oratab, and the default ORACLE_HOME is set to 8i. as $ORACLE_HOME/bin/dbstartup will pickup 'svrmglr' instead of 'sqlplus /as sysdba'
$ORACLE_HOME/bin/dbstart |Ensures a clean startup of database instance(s), even after system failure -------------------------|-------------------------------------------------- $ORACLE_HOME/bin/dbshut |Ensures a clean shutdown for data base instances -------------------------|-------------------------------------------------- /etc/oratab or |Contains a field that specifies whether a particular database instance should be brought up/down at system startup/shutdown time. /var/opt/oracle/oratab | By pecifying "Y" in this field, the "dbstart" and "dbshut" scripts bring this database instance up or down. --for: SunOS ott-db-01 5.8 Generic_117350-33 sun4u sparc SUNW,Ultra-250, refer to following Doc and scripts cat /usr/local/bin/oraenv cat /etc/init.d/dbora cat /etc/init.d/README --how Solaris initiate the scripts during startup /etc/init.d> ls -ltr dbora -rwxr-xr-x 1 root other 1350 Nov 9 2004 dbora in /etc/rc2.d>, there's a link: lrwxrwxrwx 1 root other 17 Jul 8 2003 S99dbora -> /etc/init.d/dbora in /etc/rc0.d>, there's a link: lrwxrwxrwx 1 root other 17 Jul 8 2003 K10dbora -> /etc/init.d/dbora --check dbora, it's straighforward if there's only one ORACLE_HOME, how about if there're multiple ORACLE_HOMEs? --/export/home/oracle> cat /var/opt/oracle/oratab dpower:/oracle/app/product/8.1.7:Y TOOLS:/oracle/app/product/8.1.7:Y rcat:/oracle/app/product/10.2.0:Y --in this case, the first 2 instance are up automatically, while the 3rd one will not --note that the version of rcat , it's 10g, the other 2 are 8i --/export/home/oracle> cat /var/opt/oracle/oratab dpower:/oracle/app/product/8.1.7:Y TOOLS:/oracle/app/product/8.1.7:Y rcat:/oracle/app/product/10.2.0:Y
--check the dbstartup script: /etc/init.d> cat dbora #!/bin/sh # # Oracle Startup script # PATH=/oracle/app/product/8.1.7/bin:/usr/local/bin:$PATH export PATH ORA_HOME=/oracle/app/product/8.1.7 ORA_OWNER=oracle APA_OWNER=orapache # # Setup Oracle Environment # # Default SID # ORACLE_SID=dpower # # Use the SID set above for getting Oracle Environment Information # ORAENV_ASK=NO if [ -f /usr/local/bin/oraenv ];then . /usr/local/bin/oraenv else echo "Missing /usr/local/bin/oraenv Oracle startup aborted" exit 1 fi if [ ! -f $ORA_HOME/bin/dbstart ] then echo "Oracle startup: cannot start" exit fi case "$1" in 'start') # Start the Oracle databases and Net8 listener su $ORA_OWNER -c "$ORA_HOME/bin/dbstart" & su $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" & # Next line for Oracle 8.1.7 only su $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start" ;; 'stop') # Stop the Oracle databases and Net8 listener su $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" & su $ORA_OWNER -c "$ORA_HOME/bin/dbshut" & # Next line for Oracle 8.1.7 only su $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop" ;; *) echo "\nUsage: `basename $0` stop|start\n" esac --when checking the DB version, it choose svrmgrl, this is not able to start a DB 10g if [ -f $ORACLE_HOME/bin/sqldba ] ; then VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk ' /SQL\*DBA: (Release|Version)/ {split($3, V, ".") ; print V[1]}'` SQLDBA=sqldba else if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then SQLDBA=svrmgrl else SQLDBA="sqlplus /nolog" fi fi --while "sqlplus /nolog" could be used to start up a 8i DB, so modify dbora, let it refer to dbstart in a 10g ORACLE_HOME could resolve this issue --will need root access to modify the script /etc/init.d> ls -ltr dbora -rwxr-xr-x 1 root other 1350 Nov 9 2004 dbora --and also, need to modify the listener in 10g ORACLE_HOME, make sure it listens for the 2 8i instance here's another question, what will happen if 2 listeners on a box listen for a same instance? how about the 2 listeners with the same name?
|