在 Linux 系统中, 安装好 Oracle 数据库服务后, 并不像在 Windows 系统下一样, Oracle 服务在默认情况下会随系统的启动自动启动. Linux 系统中, 是需要用户去手动进行设置, 才能实现 Oracle 开机自动启动的. 本文将一步一步教你如何进行设置.
安装好 Oracle 的 Linux 系统 (以 Red Hat Enterprise Linux 7.4,Oracle 11g 为例)
方法 / 步骤
1, 前提条件: 你已经在 Linux 系统中正确安装好 Oracle 服务, 使用手动方式可以正常启动.
查看 ORACLE_HOME 是否设置
- $ echo $ORACLE_HOME
- /u01/App/oracle/product/11.2.0/dbhome_1
使用 dbstart 命令启动数据库比较方便, 但是在 Linux 上安装好 oracle 之后, 第一次使用 dbstart 命令可能会报如下错误:
- [oracle@njdzjkdb dbhome_1]$ cd bin/
- [oracle@njdzjkdb bin]$ ll | grep dbs
-rwxr-x---. 1 oracle oinstall 6088 1 月 1 2000 dbshut
-rwxr-x---. 1 oracle oinstall 13892 12 月 11 16:01 dbstart
- [oracle@njdzjkdb bin]$ dbstart
- ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle.NET Listener Usage:
- /u01/App/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME
错误提示: ORACLE_HOME_LISTNER 没有设置
原因:
dbstart 和 dbshut 脚本文件中 ORACLE_HOME_LISTNER 的设置有问题, 分别打开两个文件找到: 用 vi 编辑 dbstart,ORACLE_HOME_LISTNER=$1, 修改为
ORACLE_HOME_LISTNER=$ORACLE_HOME
前提是 $ORACLE_HOME 环境设置正确
[oracle@njdzjkdb bin]$ vi dbstart
--dbstart 为开机自启动脚本, 让系统开机就去执行 dbstart 脚本文件, 它会去读 oratab 文件, 读到 Y 就会把对应的实例开机自启动
-- 调整或确认监听路径, 如 ORACLE_HOME_LISTNER=/u01/App/oracle/product/11.2.0/dbhome_1 或 ORACLE_HOME_LISTNER=$ORACLE_HOME 根据设置的监听调整路径
2, 使用 vi 编辑器编辑文件 / etc/oratab
dbca 建库时都会自动创建 / etc/oratab 文件
#vi /etc/oratab
将 "orcl:/u01/app/oracle/product/12.1.0/dbhome_1:N",
改为 "orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y".
修改完成后, 保存退出
--<N|Y > 选项代表开机是否自启动
** 说明:**orcl 为实例名;/u01/App/oracle/product/12.1.0/dbhome1 为 oracle 安装目录; 会因安装的情况不同而有所不同.
3, 编辑 / etc/rc.d/rc.local 启动文件, 添加数据库启动脚本 dbstart
#vi /etc/rc.d/rc.local
末尾添加:
- su oracle -lc "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"
- su oracle -lc /u01/App/oracle/product/12.1.0/dbhome_1/bin/dbstart
或启动指定实例
- su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start ORCL"
- su - oracle -lc /u01/App/oracle/product/11.2.0/dbhome_1/bin/dbstart
-- 命令中 - c 代表执行脚本, 脚本 dbstart 中指定启动的实例, 脚本 lsnrctl 中启动配置的监听
** 说明:**/u01/App/oracle/product/12.1.0/dbhome1 为 oracle 的安装目录, 要根据实际情况进行修改.
4, 修改 DB 启动配置文件
#VIM /u01/App/oracle/product/11.2.0/dbhome_1/bin/dbstart
找到 ORACLE_HOME_LISTNER 这行
- # First argument is used to bring up Oracle.NET Listener
- ORACLE_HOME_LISTNER=$1
将 $1 修改为如下 (你的路径):
ORACLE_HOME_LISTNER=/u01/App/oracle/product/11.2.0/dbhome_1
5, 重启主机, 查看数据库和监听是自启动
6, 开机自启动多个监听及多个实例
- #VIM /etc/rc.d/rc.local
- su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start UTF8"
- su - oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start GBK"
- su - oracle -lc /u01/App/oracle/product/11.2.0/dbhome_1/bin/dbstart
监听写多个启动, 实例用一个 dbstart 命令去启动, 它会去读 oratab 文件, 读到 Y 就会把对应的实例开机自启动
7, 小结:
Linux 下设置实例自启动有关脚本:
oratab: 实例是否自启动的注册信息
dbstart: 开机启动脚本文件会读取 oratab 信息
rc.local: 开机后立即要做的文件
- --"启动监听"
- lsnrctl start
- --"启动数据库实例"
- dbstart
- --"关闭数据库实例"
- dbshut
- --"关闭监听"
- lsnrctl stop
来源: http://www.linuxidc.com/Linux/2019-07/159383.htm