「Linux下Oracle自启脚本实现详解」 (linux oracle自动启动脚本)

Linux下Oracle自启脚本实现详解

在Linux系统中,为了方便用户使用,一般会将一些常用的服务设定为自启动,这样可以在系统重启后自动开启服务。对于Oracle数据库来说,同样可以通过设置自启动脚本来实现自动启动服务。本文将针对Linux下Oracle自启脚本实现进行详细讲解,希望能够对读者有所帮助。

一、Oracle自启脚本

在Linux系统中,Oracle数据库默认不会设置自启动,需要用户手动编写启动脚本。在CentOS 7系统中,Oracle自启脚本放置在/etc/init.d目录下,命名为oracle,用户可以根据需要进行修改。以下是一个简单的oracle自启脚本示例:

“`

#!/bin/bash

# oracle: Starts and stops the Oracle database.

# chkconfig: 345 80 30

# Source function library.

. /etc/rc.d/init.d/functions

# Set Oracle environment.

ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/db

PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_HOME PATH

# Start/stop functions

start()

{

su – oracle -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”

}

stop()

{

su – oracle -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”

}

# See how we were called.

case “$1” in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo $”Usage: $prog {start|stop|restart}”

exit 1

esac

“`

以上自启脚本通过调用Oracle提供的dbstart和dbshut命令来实现启动和停止Oracle数据库服务。其中,$ORACLE_HOME指定了Oracle安装路径,需要根据实际情况进行修改。

二、实现Oracle自启脚本

为了实现Oracle服务的自启动,我们需要进行以下步骤:

1. 创建自启脚本

在/etc/init.d目录下创建一个名为oracle的文件,并将上述示例代码复制到文件中。然后将文件权限设置为755,可以使用如下命令进行设置:

“`

chmod 755 /etc/init.d/oracle

“`

2. 设置服务开机自启动

使用chkconfig命令对oracle服务进行设定,命令格式如下:

“`

chkconfig –add oracle

chkconfig oracle on

“`

以上命令分别为添加oracle服务和将oracle服务设置为开机自启动。执行完以上命令后,即可实现Oracle数据库服务的自动启动。

3. 测试自启脚本

为了测试自启脚本是否生效,可以使用如下命令来模拟系统重启:

“`

init 6

“`

执行以上命令后,系统将会重启。当系统启动完成后,可以使用以下命令查看Oracle服务是否已经自动启动:

“`

ps -ef | grep ora

“`

如果能够看到类似于以下结果,则说明Oracle服务已经成功启动:

“`

oracle 1234 1 0 10:00 ? 00:00:00 ora_dbw0_orcl

oracle 1235 1 0 10:00 ? 00:00:00 ora_lgwr_orcl

oracle 1236 1 0 10:00 ? 00:00:00 ora_ckpt_orcl

“`

三、常见问题和解决方法

在实现Oracle自启脚本的过程中,可能会遇到一些问题,常见问题及解决方法如下:

1. Oracle服务启动失败

当Oracle服务启动失败时,可以使用以下命令查看服务运行日志:

“`

tl -f $ORACLE_HOME/startup.log

“`

根据日志提示,可以进一步排查问题。

2. 自启脚本无法启动Oracle服务

这种情况可能是因为自启脚本中的Oracle安装路径不正确或用户权限不足,可以根据实际情况进行检查和修改。

3. Oracle服务停止失败

当Oracle服务无法正常停止时,可以使用以下命令查看服务运行日志:

“`

tl -f $ORACLE_HOME/shutdown.log

“`

根据日志提示,可以进一步排查问题。

四、

通过本文的介绍,读者可以了解到Oracle自启脚本的实现方法和注意事项。在实际操作中,需要注意以下几点:

1. 自启脚本中Oracle安装路径和用户权限等需要根据实际情况进行修改。

2. 自启脚本需要设置为可执行文件,否则无法启动服务。

3. 自启脚本可以使用chkconfig命令设置开机自启动。

希望本文能为读者带来帮助,让Oracle数据库服务能够自动启动,提高系统使用效率。

相关问题拓展阅读:

求一个能安装在Linux系统Ubuntu 上面的Oracle 10g 64 位 数据库,跪求

之一步,安装必须的包:

32位安装:

apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio1 libstdc++6 alien

64位安装:

sudo apt-get install gcc libaio1 lesstif2 lesstif2-dev make libc6 libc6-i386 libc6-dev-i386 libstdc++5 lib32stdc++6 lib32z1 ia32-libs

第二步携卜,添加用户:

# adduser oracle

正辩槐穗在添加用户”oracle”…

正在添加新组”oracle” (1001)…

正在添加新用户”oracle” (1002) 到组”oracle”…

创建主目录”/home/oracle”…

正在从”/etc/skel”复制文件…

输入新的 UNIX 密码:

重新输入新的 UNIX 密码:

passwd:已成功更新密码

Changing the user information for oracle

Enter the new value, or press ENTER for the default

Full Name : oracle

Room Number :

Work Phone :

Home Phone :

Other :

第三步,修改设置

A.设置swap区

Oracle10g至少需要500M的内存和400M的交明空换空间,要查看swap区是否足够大小,用 fdisk -l 命令去查,如果小于400M的空间,那么就要增加swap的大小 重设交换分区可以使用如下操作:

dd if=/dev/zero of=tmp_swap bs=1k count=900000

chmod 600 tmp_swap

mkswap tmp_swap

swapon tmp_swap

完成安装以後,可以释放这个空间:

swapoff tmp_swap

rm tmp_swap

count 值是根据你需要调整的交换分区大小而定。

B.修改 sysctl.conf

添加如下的行到/etc/sysctl.conf 中:

kernel.shmmax =

kernel.shmmni = 4096

kernel.shmall =

kernel.sem = 128

fs.file-max = 65536

net.ipv4.ip_local_port_range =

C.修改 limits.conf

添加如下的行到/etc/security/limits.conf中:

* soft nproc 2407

* hard nproc 16384

* soft nofile 1024

* hard nofile 65536

D.让修改生效

修改了以上文件後,必须让其生效,或重启系统,或切换到 root 用户下用以下的方式改变内核运行参数: sysctl -p

E.产生相应的软连接

创建一个文件如 kk,内容如下:

#!/bin/bash

ln -s /usr/bin/awk /bin/awk

ln -s /usr/bin/rpm /bin/rpm

ln -s /usr/bin/basename /bin/basename

mkdir /etc/rc.d

ln -s /etc/rc0.d /etc/rc.d/rc0.d

ln -s /etc/rc2.d /etc/rc.d/rc2.d

ln -s /etc/rc3.d /etc/rc.d/rc3.d

ln -s /etc/rc4.d /etc/rc.d/rc4.d

ln -s /etc/rc5.d /etc/rc.d/rc5.d

ln -s /etc/rc6.d /etc/rc.d/rc6.d

ln -s /etc/init.d /etc/rc.d/init.d

创建後,切换到 root 用户去执行一下。

F.创建RedHat的版本声明文件

在/etc/redhat-release中添加以下语句,以使安装程序认为正在一个RedHat的系统上安装:

Red Hat Linux release 3.1 (drupal)

G.修改环境变量

编辑 /home/oracle/.bashrc,增加以下export 的内容。 (注意,在Ubnutu 7.04中用户的profile文件已改名为~/.profile,有很多安装教程都是用 ~/.bash_profile,在7.04中不行的)

export ORACLE_HOME=/opt/ora10

export ORACLE_OWNER=oracle

export ORACLE_SID=ora1

export ORACLE_TERM=xterm

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

第四步,开始安装

注销原来的用户,改用oracle用户登录。用env查看一下环境变量是否生效。 然後进行/ora_ins_disk中进行安装,执行安装脚本时还需要以root权限创建目录/opt/ora10

sudo mkdir /opt/ora10

sudo chown -R oracle:oracle /opt/ora10

sudo chmod -R 770 /opt/ora10

cd/ora_ins_disk

./runInstaller

在安装过程中,请使用 Advanced Installation,然後一路按默认的设置进行往下设置,到窗单名为 “Specify Database Configuration Options”的时候,要修改以下设置: Database Character Set 中选择 Simplified Chinese ZHS16GBK 在安装的後期,系统提示需要用 root 用户去运行两个脚本文件orainstRoot.sh和root.sh,安装完毕後,Oracle是正常启动着的,你可以试一下连接数据库,同时也可以使用浏览器去设置一下Oracle,(url:http: //localhost:1158/em/)(Oracle 10g与之前的版本都不一样,使用WEB页的企业管理器来代替以前的C/S版JAVA企业管理器)

第六步,设置自启动

创建自启动脚本 创建 oracledb 脚本到/etc/init.d/oracledb,内容如下

#!/bin/bash

#

# /etc/init.d/oracledb

#

# Run-level Startup script for the Oracle Instance, Listener, and

# Web Interface

export ORACLE_HOME=/opt/ora10

export ORACLE_SID=ora1

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH

ORA_OWNR=”oracle”

# if the executables do not exist — display error

if

then

echo ” dbstart command does not exist, quitting…”

exit 1

else

echo ” dbstart existance check OK”

fi

# depending on parameter — startup, shutdown, restart

# of the instance and listener or usage display

case “$1” in

start)

# Oracle listener and instance startup

echo ” Starting oracle”

echo ” su $ORA_OWNR -c “”$ORACLE_HOME/bin/lsnrctl start”

su $ORA_OWNR -c “$ORACLE_HOME/bin/lsnrctl start”

if

then

echo ” listener failed to start”

exit 1

else

echo ” listener start OK”

fi

su $ORA_OWNR -c “$ORACLE_HOME/bin/dbstart $ORACLE_HOME”

echo ” su $ORA_OWNR -c “”$ORACLE_HOME/bin/dbstart $ORACLE_HOME”

if

then

echo ” dbstart failed to start”

exit 1

else

echo ” dbstart OK”

fi

touch /var/lock/oracle

echo “su $ORA_OWNR -c “”$ORACLE_HOME/bin/emctl start dbconsole”

su $ORA_OWNR -c “$ORACLE_HOME/bin/emctl start dbconsole”

if

then

echo ” dbconsole failed to start”

exit 1

else

echo ” dbconsole start OK”

fi

echo ” Starting oracle ended OK”

;;

stop)

# Oracle listener and instance shutdown

echo ” Shutdown Oracle: “

echo ” su $ORA_OWNR -c “”$ORACLE_HOME/bin/lsnrctl stop”

su $ORA_OWNR -c “$ORACLE_HOME/bin/lsnrctl stop”

echo ” su $ORA_OWNR -c “”$ORACLE_HOME/bin/dbshut $ORACLE_HOME”

su $ORA_OWNR -c “$ORACLE_HOME/bin/dbshut $ORACLE_HOME”

rm -f /var/lock/oracle

echo “su $ORA_OWNR -c “”$ORACLE_HOME/bin/emctl stop dbconsole”

su $ORA_OWNR -c “$ORACLE_HOME/bin/emctl stop dbconsole”

echo ” Shutdown Oracle ended OK”

;;

reload|restart)

echo “: $1 oracle”

$0 stop

$0 start

;;

*)

echo ” Unknown context: $1″

echo ” Usage: `basename $0` start|stop|restart|reload”

exit 1

esac

exit 0

设置权限,放到启动脚本中去

chmod 755 /etc/init.d/oracledb

update-rc.d oracledb defaults 99

还需要编辑一下/etc/oratab,把其中的N改成Y,不然上述脚本中所调用的$ORACLE_HOME/bin/dbstart在执行时不会自动启动相应的数据库实例(这里的数据库实例是ora1)。文件内容如下:

#

# This file is used by ORACLE utilities. It is created by root.sh

# and updated by the Database Configuration Assistant when creating

# a database.

# A colon, ‘:’, is used as the field terminator. A new line terminates

# the entry. Lines beginning with a pound sign, ‘#’, are comments.

#

# Entries are of the form:

# $ORACLE_SID:$ORACLE_HOME::

#

# The first and second fields are the system identifier and home

# directory of the database respectively. The third filed indicates

# to the dbstart utility that the database should , “Y”, or should not,

# “N”, be brought up at system boot time.

#

# Multiple entries with the same $ORACLE_SID are not allowed.

#

#

ora1:/opt/ora10:Y

我的 oralce 的安装盘中可能有些问题,所以如果只用上述的脚本是不能启动 listener的,要修改一下: 修改 /opt/ora10/bin/dbstart文件 查找:(本步骤修改后需重新安装?——(不需要重新安装呀Sutra 2023年6月10日 (四) 21:31 (CST)))

# Set this to bring up Oracle Net Listener

ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle

将其改为:

# Set this to bring up Oracle Net Listener

ORACLE_HOME_LISTNER=$ORACLE_HOME

设置後,测试一下

/etc/init.d/./oracledb reload

linux oracle自动启动脚本的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux oracle自动启动脚本,「Linux下Oracle自启脚本实现详解」,求一个能安装在Linux系统Ubuntu 上面的Oracle 10g 64 位 数据库,跪求的信息别忘了在本站进行查找喔。


数据运维技术 » 「Linux下Oracle自启脚本实现详解」 (linux oracle自动启动脚本)