启动服务器上的所有oracle数据库
当服务器上有多台数据库时,如何管理:
思路通过 找文件"/bin/oracle" 确定oracle实例,列出本台服务器上所有的"/bin/oracle "文件,然后再根据此文件所有者(DB OWNER),通过sqlplus 脚本关闭和开起
以下是代码
#!/bin/bash #+++++++++++++++++++++++++++++++++++++++++++++ # stop and start all oracle database in one server # # Param 1 : optional database owner # Param 2 : -stop |start #+++++++++++++++++++++++++++++++++++++++++++++ ############################################# # # Start/stop oracle database # ############################################# stop_db() { echo " Database $oraid is going to stop" tmpfile=/tmp/"${oraid}"_start_db.$$.sql echo "connect / as sysdba" > $tmpfile echo " " >> $tmpfile echo " " >> $tmpfile echo "shutdown immediate" >> $tmpfile echo "exit" >> $tmpfile chown $oraid:dba ${tmpfile} chmod 777 ${tmpfile} su - $oraid -c "sqlplus -s /NOLOG @$tmpfile" 0</dev/null | grep -v "ORA-01109" rm -f $tmpfile RC=$?; if [ $RC -eq 0 ] then echo $(date) "DONE : STOP DB $oraid"; else echo "================================================================="; echo echo $(date) "WARNING: STOP DB $oraid RC="$RC; echo "================================================================="; echo fi } ############################################# # # stop Database # ############################################# start_db() { echo " Database $oraid is going to start" tmpfile=/tmp/"${oraid}"_stop_db.$$.sql echo "connect / as sysdba" > $tmpfile echo " " >> $tmpfile echo " " >> $tmpfile echo "startup; " >> $tmpfile echo "exit" >> $tmpfile chown $oraid:dba ${tmpfile} chmod 777 ${tmpfile} su - $oraid -c "sqlplus -s /NOLOG @$tmpfile" 0</dev/null | grep -v "ORA-01109" rm -f $tmpfile RC=$?; if [ $RC -eq 0 ] then echo $(date) "DONE : Start DB $oraid"; else echo "================================================================="; echo echo $(date) "WARNING: Start DB $oraid RC="$RC; echo "================================================================="; echo fi } ############################################# # # Start Database # ############################################# read_instance() { echo " Trying to found database"; instances=$(find / -name oracle|grep -i bin) echo "$instances" for instance in $instances do oraid=`ls -ltr ${instance}|cut -d " " -f 3` case $action in -start) start_db ;; -stop) stop_db ;; esac done } ############################################# # # Main # ############################################# if [ $# -lt 1 ] then echo "##########################################################################################" echo echo " Syntax : stop oracle database : dboper <db name> <-start|-stop> " 1>&2 echo " Parm1 : optional <listener name> " echo " Parm2 : -start|-stop" echo "##########################################################################################" exit 8 fi if [ $# -eq 2 ] then oraid=$1 action=$2 case $action in -start) start_db ; ;; -stop) stop_db ; ;; esac else targetdb="" action=$1 read_instance fi
以下是执行效果:start all db
[root@wen oraoper]# PATH=$PATH:$PWD [root@wen oraoper]# echo $PATH /usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/mnt/hgfs/script/orainst:/mnt/hgfs/script/oraoper [root@wen oraoper]# dbstartstop.sh -start Trying to found database /oracle/g11/111/bin/oracle /oracle/g13/113/bin/oracle /oracle/g14/114/bin/oracle /oracle/g12/112/bin/oracle Database g11 is going to start ORACLE instance started. Total System Global Area 3340451840 bytes Fixed Size 2217952 bytes Variable Size 1811941408 bytes Database Buffers 1509949440 bytes Redo Buffers 16343040 bytes Database mounted. Database opened. Thu Oct 22 18:51:41 CST 2020 DONE : Start DB g11 Database g13 is going to start ORACLE instance started. Total System Global Area 1603411968 bytes Fixed Size 2213776 bytes Variable Size 402655344 bytes Database Buffers 1191182336 bytes Redo Buffers 7360512 bytes Database mounted. Database opened. Thu Oct 22 18:51:48 CST 2020 DONE : Start DB g13 Database g14 is going to start ORACLE instance started. Total System Global Area 1603411968 bytes Fixed Size 2213776 bytes Variable Size 402655344 bytes Database Buffers 1191182336 bytes Redo Buffers 7360512 bytes Database mounted. Database opened. Thu Oct 22 18:51:55 CST 2020 DONE : Start DB g14 Database g12 is going to start ORACLE instance started. Total System Global Area 1603411968 bytes Fixed Size 2213776 bytes Variable Size 402655344 bytes Database Buffers 1191182336 bytes Redo Buffers 7360512 bytes Database mounted. Database opened. Thu Oct 22 18:52:03 CST 2020 DONE : Start DB g12
关闭指定DB
[root@wen oraoper]# dbstartstop.sh g14 -stop Database g14 is going to stop Database closed. Database dismounted. ORACLE instance shut down. Thu Oct 22 18:54:23 CST 2020 DONE : STOP DB g14
每天进步一点点,多思考,多总结
版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。