首页 > 数据库 >RHEL5开启和关闭oracle实例以及自启动

RHEL5开启和关闭oracle实例以及自启动

时间:2023-09-21 16:33:22浏览次数:39  
标签:RHEL5 log var oracle ORACLE 自启动 HOME echo


启动数据库实例,分为两步:第一步,启动监听;第二步,启动数据库实例。
一、如何启动数据库实例  1.进入到sqlplus启动实例
[oracle@redhat ~]$ su - oracle                                 --“切换到oracle用户”
Password:
[oracle@redhat ~]$ lsnrctl start                               --“打开监听”
[oracle@redhat ~]$ sqlplus /nolog                                --“进入到sqlplus”
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Oct 14 19:06:45 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba                                              --“连接到sysdba”
Connected to an idle instance.
SQL> startup                                                     --“启动数据库实例
SQL> shutdown immediate                                         --“关闭数据库实例”

[oracle@redhat ~]$ lsnrctl stop                                 --“关闭监听”
   2.用dbstart和dbshut启动和关闭数据库实例
先启动监听 lsnrctl start
启动实例   dbstart
使用dbstart命令启动数据库比较方便,但是在linux上安装好oracle之后,第一次使用dbstart命令可能会报如下错误:
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
看起来貌似是监听没有起来,可是实际上,监听可以成功启动。
我们来看一下dbstart脚本,该脚本放在$ORACLE_HOME/bin下面。
搜索dbstart里面的tnslsnr:
grep tnslsnr dbstart
返回结果:

if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
    echo "Failed to auto-start Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr"

返回结果中发现有$ORACLE_HOME_LISTNER变量,有可能是该变量的路径不对,我们继续搜索ORACLE_HOME_LISTNER
grep ORACLE_HOME_LISTNER dbstart
返回结果:

# 3) Set ORACLE_HOME_LISTNER
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
LOG=$ORACLE_HOME_LISTNER/listener.log
if [ -f $ORACLE_HOME_LISTNER/bin/tnslsnr ] ; then
    $ORACLE_HOME_LISTNER/bin/lsnrctl start >> $LOG 2>&1 &
    export VER10LIST=`$ORACLE_HOME_LISTNER/bin/lsnrctl version | grep "LSNRCTL for " | cut -d' ' -f5 | cut -d'.' -f1`
    echo "Failed to auto-start Oracle Net Listene using $ORACLE_HOME_LISTNER/bin/tnslsnr"
        $LOGMSG "Restart Oracle Net Listener using an alternate ORACLE_HOME_LISTNER: lsnrctl start"

我们发现ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
中,指定的路径不对,需要对这一行重新编辑,使其路径制定到$ORACLE_HOME
用vi编辑dbstart,将ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle更改为
export ORACLE_HOME_LISTNER=$ORACLE_HOME
然后保存退出,此时再运行dbstart,已经不报错了,但是没有任何反应,ps一下进程,没有oracle的进程,说明oracle实例没有正常启动。
此时的原因是在/etc/oratab的设置问题,我们cat一下,发现
zgz:/home/oracle/product/10g:N
最后设置的是"N"(我的环境中只有一个实例,因此只有一行配置语句),我们需要把“N”修改为“Y”。
以上的工作做好之后,dbstart就可以正常使用了:
[oracle@redhat bin]$ lsnrctl start                                  --“启动监听”
[oracle@redhat bin]$ dbstart                                   --“启动数据库实例”
[oracle@redhat bin]$ dbshut                                    --“关闭数据库实例”
[oracle@redhat bin]$ lsnrctl stop                              --“关闭监听”
二、如何使数据库实例和linux系统一起启动在/etc/rc.d/rc.local中加入如下语句即可实现同系统启动实例:

echo "su - oracle -c 'lsnrctl start'" >> /etc/rc.local

echo "su - oracle -c 'dbstart'" >> /etc/rc.local

 

实际操作中可能会出现不能自动启动oracle数据库的情况!

三、配置Oracle的自动启动脚本动

首先在/etc/rc.d/init.d/目录下配置Oracle的服务文件

#touch /etc/rc.d/init.d/oracle
#cd /etc/rc.d/init.d
#chmod a+x oracle

然后vi编辑oracle文件,将一下脚本输入到oracle中

#!/bin/sh
#
# /etc/rc.d/init.d/oracle
# whoami
# root
# chkconfig: 345 99 10
# /etc/init.d/oracle
# description: starts the oracle dabase deamons
#case "$1" in
start)
        echo -n "Starting Oracle Databases: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c dbstart >> /var/log/oracle
        echo "Done."
        echo -n "Starting Oracle Listeners: "
        su - oracle -c "lsnrctl start" >> /var/log/oracle
        echo "Done."
        echo ""
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Finished." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        touch /var/lock/subsys/oracle
        ;;
stop)
        echo -n "Shutting Down Oracle Listeners: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c "lsnrctl stop" >> /var/log/oracle
        echo "Done."
        rm -f /var/lock/subsys/oracle
        echo -n "Shutting Down Oracle Databases: "
        su - oracle -c dbshut >> /var/log/oracle
        echo "Done."
        echo ""
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Finished." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        ;;
restart)
        echo -n "Restarting Oracle Databases: "
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        su - oracle -c dbstop >> /var/log/oracle
        su - oracle -c dbstart >> /var/log/oracle
        echo "Done."
        echo -n "Restarting Oracle Listeners: "
        su - oracle -c "lsnrctl stop" >> /var/log/oracle
        su - oracle -c "lsnrctl start" >> /var/log/oracle
        echo "Done."
        echo ""
        echo "----------------------------------------------------" >> /var/log/oracle
        date +"! %T %a %D : Finished." >> /var/log/oracle
        echo "----------------------------------------------------" >> /var/log/oracle
        touch /var/lock/subsys/oracle
        ;;
*)
        echo "Usage: oracle {start|stop|restart}"
        exit 1
esac

保存文件,退出以后,添加并启动察看服务。

#chkconfig --add oracle
#chkconfig --list oracle

chkconfig --list oracle的运行结果:

oracle     0:off   1:off   2:off   3:on    4:off   5:on    6:off

根据上面的运行结果,当相应的运行级别为on时(例如:5:on),在对应的/etc/rc.d/rcN.d(例如:和5:on对应的是:/etc/rc.d/rc5.d)下面会生成一个文件:S99oracle,使用vi S99oracle打开该文件,可以看到该文件的内容和/etc/rc.d/init.d/oracle内容相同,表示配置成功,其实,S99oracle是一个到/etc/rc.d/init.d/oracle的链接,我们可以使用file命令来查看:

$file /etc/rc.d/rc5.d/S99oracle

S99oracle:symbolic link to '../init.d/oracle

说明一点:

脚本文件中的:# chkconfig: 345 99 10

指出3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是345)目录下生成的链接文件的序号(启动优先级别)S99oracle,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)K10oracle

重启系统,就可以在启动的过程中看到 Starting oracle,因为我们设置的优先级为99,一般是最后启动。[OK]以后就可以了。因为要启动emctl,可能有点慢,等待的时间要稍微长一点。

启动以后可以以root执行oracle start或者oracle stop来启动或停止服务。

注意:

这样的脚本启动一般不会启动实例,如果想让实例也随脚本一起启动的话,就需要修改文件:/etc/oratab
如果这个文件不存在,那么就得运行脚本文件产生它sh /u01/app/oracle/product/10.2.0/root.sh

改/etc/oratab 最后一行
sid:/oracle/product/10.2.0.1:N
=>
sid:/oracle/product/10.2.0.1:Y(其中sid为想要启动的database)

只要在这里设置好后,在配合上面的脚本,即可实现开机自动启动oracle以及实例了.

标签:RHEL5,log,var,oracle,ORACLE,自启动,HOME,echo
From: https://blog.51cto.com/u_16230604/7555223

相关文章

  • RHEL5 上安装 oracle10g 过程和步骤
    安装配置系统环境:(1)安装linux,所由服务都不选择,只是选择安装开发工具,不要安装防火墙(当然也可以在后面关闭)(2)打开终端,执行如下命令,检查安装包,没有的都要安装(一般在dis2和dis3上)#RedHatAS51--make,glibc,libaio#RedHatAS52--compat-libstdc++,compat-gcc-34,......
  • RHEL5 上安装 oracle10g 中出现的问题记录
    1.不能启动安装界面运行runInstaller提示信息类似如下:xlib:connectionto"localhost:0.0"refusedbyserverxlib:clientisnotauthorizedtoconnecttoserver Exceptioninthread"main"java.lang.InternalError:can'tconnecttox11windowserverusing......
  • Oracle 序列
    ORACLE没有象SQLSERVER中一样的自增加字段,要实现只能通过SEQUENCE来实现。1、创建序列语法:(需要CREATESEQUENCE系统权限)CREATESEQUENCE序列名[INCREMENTBYn]---用于定义序列的步长。                               如果省略,则默认为1......
  • Oracle数据库索引
    索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。数据库索引什么是索引数据库索引好比是一本书前面的目录,能加快数据库的查询速度。例如这样一个查询:select*fromtable1whereid=44。如果没有索引,必须遍历整个表,直到ID等......
  • Oracle 分析函数的使用
    Oracle分析函数使用介绍  分析函数是oracle816引入的一个全新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现在只要一条简单的sql语句就可以实现了,而且在执行效率方面也有......
  • ORACLE 多表关联 UPDATE 语句
    为了方便起见,建立了以下简单模型,和构造了部分测试数据:在某个业务受理子系统BSS中,SQL代码1.--客户资料表2.createtable3.(4.customer_idnumber(8)notnull,--客户标示5.city_namevarchar2(10)notnull,--所在城市6.customer_typechar(2)notnull......
  • oracle 小数格式化为百分数
    以下是从JAVAEYE中找到的代码,用途是将小数转换为百分数形式:SelectCONCAT(TO_CHAR('0.001'*100,'990.99'),'%')FROMDUAL;除此之外,还找到了其余的转换,放到这里留作日后之用:selectto_char(1234567.89,'9,999,999.99')idfromdual;selectto_char(1234567.89,'99......
  • Oracle查询表占用空间大小
    1\https://blog.csdn.net/zh_1721342390/article/details/130942912一、Oracle查询表空间占用情况Oracle是一种经典的关系型数据库管理系统,对于表占用空间大小的查询是数据库管理中的基本操作。查询表空间占用情况可以通过以下代码实现:SELECTa.tablespace_name"表空间名",  ......
  • oracle存储过程
    1.基本结构CREATEORREPLACEPROCEDURE存储过程名字(参数1INNUMBER,参数2INNUMBER)IS变量1INTEGER:=0;变量2DATE;BEGINEND存储过程名字2.SELECTINTOSTATEMENT将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条记录,否则抛出......
  • oracle 数据库对象自动备份
         本文介绍一种数据库对象备份的方法。其原因是因为我在开发时有两个数据库用户,他们的数据表结构相同,所开发的存储过程也相同,但是数据却是不同地方的数据。因为懒惰所以在修改过程包时只想修改一次就ok,所以想了一个半自动的办法,让数据库自动备份数据库对象,然后编写bat文件......