己所不欲勿施于人!
全部博文(80)
分类: Oracle
2008-11-04 20:26:47
关于linux下oracle的自启动的问题,在网上类似的文章也很多。我写这篇主要是为了加深印象和以后查找方便(奈何记忆力减退啊!)。
一、关于linux的启动过程
要了解Oracle的自启动,那么就不能避开linux启动的问题。
Linux 所有的启动都是从/etc/inittab开始的,那么我们简单的看看这个文件:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
简单起见,我们只看文件的这一部分就可以了!这部分比较简单,我想大家看一下也明白个大概了!
这部分主要说明了三件事:
1、从注释中,我们可以知道0-6运行级别所对应的含义
2、当前的默认运行级别为3(Multiuser)
3、下面System initialization
如果系统当前的运行级别为3,那么转到执行 /etc/rc.d/rc3.d目录下的程序。(以下都以该运行级别说明)
那么接下来我们看看/etc/rc.d/rc3.d目录:
[oracle@orclrhel4 rc3.d]$ ls
K01tog-pegasus K50tux S08arptables_jf S55cups
K02NetworkManager K73ypbind S08iptables S55sshd
K05saslauthd K74nscd S09isdn S56rawdevices
K10dc_server K74ntpd S09pcmcia S56xinetd
其中以K(Kill)开头的文件是在该运行级别下不启动的程序。
以S(start)开头的文件是在该运行级别下启动的程序,并且后面的数字越小的越先启动。
[oracle@orclrhel4 rc3.d]$ ls -l
lrwxrwxrwx 1 root root 28 Oct 9 20:30 S98cups-config-daemon -> ../init.d/cups-config-daemon
lrwxrwxrwx 1 root root 19 Oct 9 20:28 S98haldaemon -> ../init.d/haldaemon
lrwxrwxrwx 1 root root 11 Oct 9 20:28 S99local -> ../rc.local
lrwxrwxrwx 1 root root 18 Nov 2 18:16 S99oracle -> /etc/init.d/oracle
我们注意到,该目录下的文件都是链接文件,而且文件都指向了/etc/init.d目录。
可见,我们只要在该目录下创建一个链接文件(S99oracle),并指向/etc/init.d/oracle
如果你的系统的运行级别为5,那么同理
你在/etc/rc.d/rc5.d目录下创建一个链接文件(S99oracle),并指向/etc/init.d/oracle
二、关于Oracle的启动
在这里我们使用Oracle自带的工具:$ORACLE_HOME/bin目录下的dbstart 和dbshut 以及lsnrctl 来启动监听。
说明:当你运行dbstart时,会报告一个错误!说没有找到oratab文件。
在我的系统中,该文件的在/etc/oratab,可是默认的不是这样(默认:/var/…/oratab不知道为什么!可能你的系统中不会有这类错误!)
你打开dbstart文件,修改一下ORATAB的路径就可以了!
1、修改文件/etc/oratab(路径可能不同)
原内容:
*:/u01/app/oracle/product/10.1.0/db_1:N
orcl:/u01/app/oracle/product/10.1.0/db_1:N
修改后:
orcl:/u01/app/oracle/product/10.1.0/db_1:Y
*:/u01/app/oracle/product/10.1.0/db_1:Y
2、接下来我们主要的工作就是编写/etc/init.d/oracle 文件,启动数据库和监听。
由于内容比较多,也为了方便,我放到附件中了!
创建完成后增加执行权限:
[oracle@orclrhel4 init.d]$ chmod +x /etc/init.d/oracle
[oracle@orclrhel4 init.d]$ ls -l
-rwxr-xr-x 1 root root 1906 Nov 3 13:13 oracle
重新启动。记不记得前面说的六个运行级别了,运行如下命令就可以重启:
[oracle@orclrhel4 init.d]$ init 6
三、总结
就写到这里了,其实Oracle的自启动其实并不难,也是最最基本的。
希望我真的能帮助有需要的人(-_-!)。
以后继续努力吧!