Linux下系统开机ORACLE自启动有两种方法:

 

方法一:在LINUX开机启动脚本里启动ORACEL

 

1、修改Oracle系统配置文件/etc/oratab文件格式为(vi /etc/oratab): SID:ORACLE_HOME:AUTO

 

root@crmdb01 ~]# vi /etc/oratab
orcl:/opt/app/oracle/product/10.2.0/db_1:Y

 

2、dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:用vi编辑dbstart,ORACLE_HOME_LISTNER=$1,修改为

 

ORACLE_HOME_LISTNER=$ORACLE_HOME

 

3、在/etc/rc.d/rc.local配置文件中追加(#vi /etc/rc.d/rc.local)

 

su - oracle -c "/opt/app/oracle/product/10.2.0/db_1/bin/lsnrctl start" 
su - oracle -c "/opt/app/oracle/product/10.2.0/db_1/bin/dbstart start"

 

2、重新启动检验是否开机启动

 

#reboot

 

方法二:加载服务使其自启动及关闭

 

1、同方法1中第一步;

 

2、在/etc/init.d下创建文件/etc/init.d/oradb,相当于创建服务脚本

 

#!/bin/sh
#chkconfig:345 90 10
#description:ORACLE
export ORA_OWNER=oracle
export ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
case "$1" in
'start')
su - $ORA_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME > /dev/null 2>&1"
touch /var/lock/subsys/oradb
;;
'stop')
su - $ORA_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME > /dev/null 2>&1"
rm -f /var/lock/subsys/oradb
;;
*)
echo "Usage:$0 start | stop | status"
;;
esac 
exit 0

 

3、修改为可执行文件,并添加服务

 

[root@crmdb01 init.d]# chmod +x oradb

 

[root@crmdb01 init.d]# ls -lah oradb
-rwxr-xr-x 1 root root 433 Jan 17 19:12 oradb

 

[root@crmdb01 init.d]# chkconfig --add oradb

 

[root@crmdb01 init.d]# chkconfig --list oradb
oradb           0:off   1:off   2:off   3:on    4:on    5:on    6:off

 

4、测试脚本

 

[root@crmdb01 init.d]# ./oradb stop

 

[root@crmdb01 init.d]# ./oradb start


运行dbstart命令时出现如下:

 

 

[root@localhost ~]# su - oracle -c "dbstart"

 

/opt/oracle/product/10.2.0/db_1/bin/dbstart: line 89: /opt/oracle/product/10.2.0/db_1/listener.log: Permission denied

 

/opt/oracle/product/10.2.0/db_1/bin/dbstart: line 90: /opt/oracle/product/10.2.0/db_1/listener.log: Permission denied

 

Processing Database instance "orcl": log file /opt/oracle/product/10.2.0/db_1/startup.log

解决:赋予用户dba权限
 
[root@localhost ~]# id oracle
 
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
 
[root@localhost ~]# echo 502 >/proc/sys/vm/hugetlb_shm_group