linux oracle自动启动笔记

系统启动时自动启动数据库可以通过修改/etc/rc.d/rc.local文件
一开始我写的命令是
su oracle -c /app/product/10.2.0/db_1/bin/lsnrctl start
su oracle -c /app/product/10.2.0/db_1/bin/dbstart
但是su oracle -c /app/product/10.2.0/db_1/bin/lsnrctl start是参数start不起作用,它进入了lsnrctl命令提示符,并没有启动,后来把命令用双引号引起来就可以了如下:
su oracle -c "/app/product/10.2.0/db_1/bin/lsnrctl start"

 

启动脚本,但是启动时报错如下:
Message 1053 not found; No message file for product=network, facility=TNSTNS-12541: Message 12541 not found; No message file for product=network, facility=TNS
TNS-12560: Message 12560 not found; No message file for product=network, facility=TNS
但 是如果我用oracle用户登陆执行lsnrctl start就不报错,看来是在root用户中执行su oracle -c "/app/product/10.2.0/db_1/bin/lsnrctl start"有些Oracle环境变量没有设置。查了一下su 命令的参数,其中有个-l参数
 -.-l或--login  改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,LOGNAME。此外,也会变更PATH变量。  
加上参数
su oracle -lc "ora_App/product/10.2.0/db_1/bin/lsnrctl start"

 

 

linux下执行oracle的dbstart脚本没有反应
原因:
1./etc/oratab的设置问题,比如:
*:/opt/oracle/product/9.2.0.4:N
ORCL:/opt/oracle/product/9.2.0.4:Y
最右侧是N的,dbstart不会管它,dbstart只启动为Y的。

2.认证方式问题。
oracle9的dbstart是在sqlplus中使用connect / as sysdba,然后用startup命令启动数据。即打算使用操作系统认证。如果$ORACHE_HOME/network/admin/sqlnet.ora中有这样一行:
SQLNET.AUTHENTICATION_SERVICES=(NONE)
那么操作系统认证就被禁止了,dbstart会无法用sqlplus以sysdba登录,也就无法启动数据库了。

3.没有pfile,即文本的初始化参数。
oracle9 以后是可以使用spfile的,即二进制的初始化参数文件,因此pfile可以没有。但我看到的dbstart中不知道为何,启动前先找一下pfile, 如果找不到就直接退出,不启动数据库。因此,如果打算用dbstart启动oracle,那么必须要创建一个文本的参数文件,或者干脆去修改 dbstart脚本,把判断参数文件的地方改一下,或者去掉。

你可能感兴趣的:(oracle,C++,c,linux,脚本)