一直都想配置数据库随系统启动而自动启动,按照文档的指导建立了/etc/init.d/dbora文件,修改了/etc/oratab,在/etc/rc.d/rcX.d增加自动启动和停止项,指向/etc/init.d/dbora。。。如此这般,但数据库仍然无法自动启动,于是便一直这么撂着。
今天找到了这个帖子: ORACLE随LINUX启动关闭 。确定了我的配置应该没有问题。为了简单起见,把rsh启动改为su启动,配置完成后,dbstart启动仍然存在问题,启动日志形如:
/u01/app/oracle/product/10.2.0/db_1/bin/dbstart: Starting up database "orcl"
Thu Dec 23 14:23:31 CST 2010
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 23 14:23:31 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connect / as sysdba SQL> ORA-01031: insufficient privileges
connect / as sysdba SQL>
/u01/app/oracle/product/10.2.0/db_1/bin/dbstart: Database instance "orcl" warm started.
奇怪的是,以oracle用户的操作系统认证竟然返回权限不够!而且日志中显示orcl数据库已经“warm started",但实际系统上并没有任何orcl的进程存在。
看着这个启动日志,忽然发现SQLPLUS似乎把连接命令当成了提示符!手动执行SQLPLUS,发现果然如此:
[oracle@localhost db_1]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 23 16:33:06 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
dfljdf
dfljdf SQL> l
1 select
2 lower
3 (
4 USER ||
5 '$' ||
6 substr
7 (
8 global_name,0,
9 decode
10 (
11 instr(global_name,'.')-1,-1,
12 length(global_name), instr(global_name,'.') -1
13 )
14 )
15 )
16 || '@' || utl_inaddr.get_host_name
17 as GLOBAL_NAME
18* from global_name
dfljdf SQL>
在SQLPLUS运行起来后而命令提示符出现之前,输入的任何字符都被当成了提示符(见上面,随便输入的“dfljdf”被当成了提示符)。
上面l命令显示的SQLPLUS缓存中的内容是为了显示“USER$SID@HOSTNAME”形式的提示符而设置的glogin.sql文件中的内容。
于是想到曾经可以通过手动运行dbstart脚本成功启动数据库,但后来不知从什么时候起就无法使用脚本手动启动数据库了,现在想来应该就是在配置了glogin.sql后的问题。
从glogin.sql中注释掉设置SQLPLUS提示符的内容,又可以使用dbstart启动数据库了。
但是为什么glogin.sql的部分内容会影响数据库自动启动,原因不明。
今天找到了这个帖子: ORACLE随LINUX启动关闭 。确定了我的配置应该没有问题。为了简单起见,把rsh启动改为su启动,配置完成后,dbstart启动仍然存在问题,启动日志形如:
/u01/app/oracle/product/10.2.0/db_1/bin/dbstart: Starting up database "orcl"
Thu Dec 23 14:23:31 CST 2010
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 23 14:23:31 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connect / as sysdba SQL> ORA-01031: insufficient privileges
connect / as sysdba SQL>
/u01/app/oracle/product/10.2.0/db_1/bin/dbstart: Database instance "orcl" warm started.
奇怪的是,以oracle用户的操作系统认证竟然返回权限不够!而且日志中显示orcl数据库已经“warm started",但实际系统上并没有任何orcl的进程存在。
看着这个启动日志,忽然发现SQLPLUS似乎把连接命令当成了提示符!手动执行SQLPLUS,发现果然如此:
[oracle@localhost db_1]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 23 16:33:06 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
dfljdf
dfljdf SQL> l
1 select
2 lower
3 (
4 USER ||
5 '$' ||
6 substr
7 (
8 global_name,0,
9 decode
10 (
11 instr(global_name,'.')-1,-1,
12 length(global_name), instr(global_name,'.') -1
13 )
14 )
15 )
16 || '@' || utl_inaddr.get_host_name
17 as GLOBAL_NAME
18* from global_name
dfljdf SQL>
在SQLPLUS运行起来后而命令提示符出现之前,输入的任何字符都被当成了提示符(见上面,随便输入的“dfljdf”被当成了提示符)。
上面l命令显示的SQLPLUS缓存中的内容是为了显示“USER$SID@HOSTNAME”形式的提示符而设置的glogin.sql文件中的内容。
于是想到曾经可以通过手动运行dbstart脚本成功启动数据库,但后来不知从什么时候起就无法使用脚本手动启动数据库了,现在想来应该就是在配置了glogin.sql后的问题。
从glogin.sql中注释掉设置SQLPLUS提示符的内容,又可以使用dbstart启动数据库了。
但是为什么glogin.sql的部分内容会影响数据库自动启动,原因不明。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24131851/viewspace-682489/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24131851/viewspace-682489/