自动启动和关闭Oracle 脚本-阿里云开发者社区

开发者社区> 科技探索者> 正文

自动启动和关闭Oracle 脚本

简介:
+关注继续查看

 配置完ASM实例后,每次启动oracle数据库服务器的时候要先启动ASM实例,然后启动数据库实例;关闭的时候,需要先关闭oracle数据库实例,然后关闭ASM实例;敲起命来来麻烦的很,因而改进了原来的shell脚本来更好的实现自动化,为了加快启动和关闭的速度,该脚本不包含dbconsole的启动和关闭,脚本同样适用于非ASM环境。

一:总脚本调用/usr/bin/startdb和/usr/bin/stopdb脚本,使用chkconfig命令创建相关的符号链接后就可以使用service命令调用


  1. [root@ora10g ~]# cat /etc/init.d/oracle   
  2. #!/bin/sh  
  3. #chkconfig: 35 85 15  
  4. #description:oracle  
  5. #function: start .. stop the oracle and asm instance on 10g R2 64bit  
  6. #author:lw.yang  
  7. #version: V.2.0  
  8.  
  9. # Source function library.  
  10. . /etc/rc.d/init.d/functions  
  11.  
  12. case "$1" in 
  13.            start)  
  14.            /usr/bin/startdb   
  15.             ;;  
  16.  
  17.         stop)  
  18.             /usr/bin/stopdb  
  19.             ;;  
  20.  
  21.         *)  
  22.             echo $"Usage: $0 {start|stop}" 
  23.             exit 1  
  24.  
  25. esac 

二:/usr/bin/startdb脚本用来启动ASM实例和ORACLE数据库实例和监听器,启动前会进行判断是否配置了ASM以及实例是否已经启动,ASM实例需要ocssd.bin后台进程启动才可以运行


  1. [root@ora10g ~]# cat /usr/bin/startdb   
  2. #!/bin/sh  
  3.  
  4. #define variables  
  5.  
  6. ASM_PID=$(pidof ocssd.bin)  
  7. ASM_PROC=$(ps -ef |grep asm_ |grep -v 'grep' |wc -l)  
  8.  
  9. D_SID=$(su - oracle -c "env |grep ORACLE_SID|cut -d "=" -f 2")  
  10. DB_PROC=$(ps -ef |grep ora_ |grep -E 'smon|pmon|ckpt|lgwr' |wc -l)  
  11.  
  12. #startup asm instance  
  13.  
  14. if [ -z $ASM_PID ];then  
  15.    echo "Not configure use ASM"  
  16.    continue  
  17.    elif [ $ASM_PROC -gt "7" ];then  
  18.    echo "ASM instance already running"  
  19.    else   
  20.    su - oracle  -c "export ORACLE_SID=+ASM && sqlplus /nolog<<EOF   
  21.    conn /as sysdba  
  22.    startup   
  23.    exit  
  24.    EOF"  
  25. fi  
  26.  
  27. #startup database instance  
  28.  
  29.     if [ $DB_PROC -eq "4" ];then  
  30.         echo "Database instance already running,shutdown it firtst"  
  31.         else  
  32.         su - oracle -c "lsnrctl start"  
  33.         su - oracle -c "export ORACLE_SID=$D_SID && sqlplus /nolog<<EOF 
  34.         conn /as sysdba  
  35.         startup   
  36.         exit  
  37.         EOF"  
  38.         touch /var/lock/subsys/oracle  
  39.     fi 

三:/usr/bin/stopdb脚本用来关闭监听器,oracle数据库实例和ASM实例,关闭之前会先进行判断是否使用ASM以及相关实例是否已经关闭
 


  1. #!/bin/sh  
  2.  
  3. #define variables  
  4.  
  5. ASM_PID=$(pidof ocssd.bin)  
  6. ASM_PROC=$(ps -ef |grep asm_ |grep -v 'grep' |wc -l)  
  7.  
  8. D_SID=$(su - oracle -c "env |grep ORACLE_SID|cut -d "=" -f 2")  
  9. DB_PROC=$(ps -ef |grep ora_ |grep -E 'smon|pmon|ckpt|lgwr' |wc -l)  
  10.  
  11. #stop database instance  
  12.  
  13.     if [ $DB_PROC -eq "0" ];then  
  14.         echo "Database instance already shutdown"  
  15.         else  
  16.     su - oracle -c "lsnrctl stop"  
  17.     su - oracle -c "export ORACLE_SID=$D_SID && sqlplus /nolog<<EOF 
  18.     conn /as sysdba  
  19.     shutdown immediate  
  20.     exit  
  21.     EOF"  
  22.         rm -f /var/lock/subsys/oracle  
  23.     fi  
  24.  
  25. #stop asm instance  
  26.  
  27. if [ -z $ASM_PID ];then  
  28.    echo "Not configure use ASM"  
  29.    elif [ $ASM_PROC -eq "0" ];then  
  30.    echo "ASM instance already shutdown"  
  31.    exit   
  32.    else   
  33.    su - oracle  -c "export ORACLE_SID=+ASM && sqlplus /nolog<<EOF   
  34.    conn /as sysdba  
  35.    shutdown immediate  
  36.    exit  
  37.    EOF"  
  38. fi 

四:测试


  1. 非ASM环境下,数据库实例已经启动下测试:  
  2. [root@ora10g ~]# service oracle start  
  3. Not configure use ASM  
  4. Database instance already running,shutdown it firtst  
  5.  
  6.  
  7. [root@ora10g ~]# service oracle stop  
  8.  
  9. LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 02-JUN-2011 09:48:36  
  10.  
  11. Copyright (c) 1991, 2005, Oracle.  All rights reserved.  
  12.  
  13. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))  
  14. The command completed successfully  
  15.  
  16. SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jun 2 09:48:40 2011  
  17.  
  18. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  19.  
  20. SQL> Connected.  
  21. SQL> Database closed.  
  22. Database dismounted.  
  23. ORACLE instance shut down.  
  24. SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production  
  25. With the Partitioning, OLAP and Data Mining options  
  26. Not configure use ASM  
  27.  
  28. 非ASM环境下,数据库实例已经关闭下测试:  
  29. [root@ora10g ~]# service oracle stop  
  30. Database instance already shutdown  
  31. Not configure use ASM  
  32.  
  33. [root@ora10g ~]# service oracle start  
  34. Not configure use ASM  
  35.  
  36. LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 02-JUN-2011 09:50:25  
  37.  
  38. Copyright (c) 1991, 2005, Oracle.  All rights reserved.  
  39.  
  40. Starting /u01/app/oracle/bin/tnslsnr: please wait...  
  41.  
  42. TNSLSNR for Linux: Version 10.2.0.1.0 - Production  
  43. System parameter file is /u01/app/oracle/network/admin/listener.ora  
  44. Log messages written to /u01/app/oracle/network/log/listener.log  
  45. Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora10g.766.com)(PORT=1521)))  
  46. Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))  
  47.  
  48. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1521)))  
  49. STATUS of the LISTENER  
  50. ------------------------  
  51. Alias                     LISTENER  
  52. Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production  
  53. Start Date                02-JUN-2011 09:50:25  
  54. Uptime                    0 days 0 hr. 0 min. 0 sec  
  55. Trace Level               off  
  56. Security                  ON: Local OS Authentication  
  57. SNMP                      OFF  
  58. Listener Parameter File   /u01/app/oracle/network/admin/listener.ora  
  59. Listener Log File         /u01/app/oracle/network/log/listener.log  
  60. Listening Endpoints Summary...  
  61.   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora10g.766.com)(PORT=1521)))  
  62.   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))  
  63. Services Summary...  
  64. Service "PLSExtProc" has 1 instance(s).  
  65.   Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...  
  66. The command completed successfully  
  67.  
  68. SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jun 2 09:50:25 2011  
  69.  
  70. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  71.  
  72. SQL> Connected to an idle instance.  
  73. SQL> ORACLE instance started.  
  74.  
  75. Total System Global Area  629145600 bytes  
  76. Fixed Size                  2022824 bytes  
  77. Variable Size             230687320 bytes  
  78. Database Buffers          390070272 bytes  
  79. Redo Buffers                6365184 bytes  
  80. Database mounted.  
  81. Database opened.  
  82. SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production  
  83. With the Partitioning, OLAP and Data Mining options 

五:设置操作系统环境变量

设置NLS_DATE_FORMAT和NLS_LANG环境变量,这两个变量需要同时设定,否则执行select sysdate from dual的时候,输出格式DD-MON-YY

SQL> select sysdate from dual;

SYSDATE
---------
02-JUN-11

[oracle@ora10g ~]$ env |grep NLS
NLS_LANG=american_america.UTF8
NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS

SQL> select sysdate from dual;

SYSDATE
-------------------
2011-06-02 10:04:49

设置默认编辑器为vim,若不设置该变量,在sqlplus中将无法使用ed命令

SQL> ed
Wrote file afiedt.buf
27

[oracle@ora10g ~]$ env |grep EDITOR
EDITOR=vim

本文转自斩月博客51CTO博客,原文链接http://blog.51cto.com/ylw6006/579605如需转载请自行联系原作者


ylw6006

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux 下 Oracle随系统自动启动和关闭
Linux 下实现Oracle随系统自动启动和关闭 实现如下目的:     a、实现开启oracle实例自启动     b、关闭操作系统或重启操作系统前能够正常关闭Oracle数据库 a、实现系统启动oracle实例自启动步骤: 1...
808 0
Android 子activity关闭 向父activity传值
使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈。   可变通的,你可以启动一个Activity作为子Activity,它与父Activity有内在的联系。
1043 0
自动化测试--protractor
前戏 面向模型编程; 测试驱动开发; 先保障交互逻辑,再调整细节。---by 雪狼。   为什么要自动化测试? 1,提高产出质量。 2,减少重构时的痛。反正我最近重构多了,痛苦经历多了。 3,便于新人接手。
1472 0
Oracle Dataguard 下块自动修复技术
在Oracle11gr2版本之后,若搭建实时应用日志的物理备库,那么在主库数据文件少量坏块的情况下,可以利用ABCR技术快速修复坏块
2270 0
ubuntu 18.04 如何设置开机自动启动脚本
本文主要为大家介绍如何通过systemd来实现ubuntu 18.04系统开机自动运行脚本。
8126 0
5489
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载