今天碰到一个有趣的bug,使用SYSDBA连接数据库报错,错误信息为ORA-1075,但是后台alert文件中显示的错误信息为ORA-18错误。
这个错误信息还是第一次碰到:
SQL> CONN / AS SYSDBA
ORA-01075: you are currently logged on
查看了一下Oracle错误的文档描述:
ORA-01075: you are currently logged on
Cause: Attempt to login while logged in.
Action: None
根据这个错误描述,看不到任何有意义的信息。首先错误描述就很奇怪:你当前已经登陆,这也算错误信息吗。而原因描述也让人摸不着头脑,在登陆的情况下尝试登陆。确实现在处于登陆状态,但是在SQLPLUS下经常会在登陆的情况下,执行CONNECT操作,SQLPLUS会自动的退出当前的会话,并建立新的连接。而这个ORA-1075错误还是第一次碰到。而Oracle给出的建议居然没有,实在是一个很奇怪的错误信息。
既然前台看不到什么有价值的信息,只好看看后台alert文件中是否有对应的错误,结果发现,后台出现了大量的ORA-18错误:
Tue May 26 17:13:24 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_q002_6234.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 17:15:27 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_smon_8768.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 17:15:27 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_smon_8768.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 17:23:21 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_q002_23030.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 17:36:44 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_q000_10124.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 17:41:33 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_m002_25005.trc:
ORA-00018: maximum number of sessions exceeded
.
.
.
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_m002_25960.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 18:20:15 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_ora_29282.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 18:22:26 2009
ksvcreate: Process(m002) creation failed
Tue May 26 18:23:30 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_m002_4872.trc:
ORA-00018: maximum number of sessions exceeded
Tue May 26 18:24:30 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_m002_6522.trc:
ORA-00018: maximum number of sessions exceeded
.
.
.
Tue May 26 19:25:48 2009
Errors in file /opt/oracle/admin/tradedb/bdump/tradedb2_m002_18763.trc:
ORA-00018: maximum number of sessions exceeded
检查这些错误发现,大部分是后台进程启动时碰到ORA-18错误,由于当前实例中会话数量太多,导致后台进程报错:
bash-3.00$ more /opt/oracle/admin/tradedb/bdump/tradedb2_q002_6234.trc
/opt/oracle/admin/tradedb/bdump/tradedb2_q002_6234.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
ORACLE_HOME = /opt/oracle/product/10.2/database
System name: SunOS
Node name: ahrac2
Release: 5.10
Version: Generic_118833-33
Machine: sun4u
Instance name: tradedb2
Redo thread mounted by this instance: 2
Oracle process number: 166
Unix process pid: 6234, image: oracle@ahrac2 (q002)
*** 2009-05-26 17:13:24.874
*** SERVICE NAME:(SYS$BACKGROUND) 2009-05-26 17:13:24.860
*** SESSION ID:(136.55749) 2009-05-26 17:13:24.860
KSV 18 error in slave process
*** 2009-05-26 17:13:24.875
ORA-00018: maximum number of sessions exceeded
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-00018: maximum number of sessions exceeded
bash-3.00$ more /opt/oracle/admin/tradedb/bdump/tradedb2_m002_25005.trc
/opt/oracle/admin/tradedb/bdump/tradedb2_m002_25005.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
ORACLE_HOME = /opt/oracle/product/10.2/database
System name: SunOS
Node name: ahrac2
Release: 5.10
Version: Generic_118833-33
Machine: sun4u
Instance name: tradedb2
Redo thread mounted by this instance: 2
Oracle process number: 52
Unix process pid: 25005, image: oracle@ahrac2 (m002)
*** ACTION NAME:(Auto-CPUUSAGE Action) 2009-05-26 17:41:33.273
*** MODULE NAME:(MMON_SLAVE) 2009-05-26 17:41:33.273
*** SERVICE NAME:(SYS$BACKGROUND) 2009-05-26 17:41:33.273
*** SESSION ID:(144.1011) 2009-05-26 17:41:33.273
KSV 18 error in slave process
*** 2009-05-26 17:41:33.288
ORA-00018: maximum number of sessions exceeded
OPIRIP: Uncaught error 447. Error stack:
ORA-00447: fatal error in background process
ORA-00018: maximum number of sessions exceeded
但是其中有一个错误比较特别,可能就是SQLPLUS的登陆造成的:
bash-3.00$ more /opt/oracle/admin/tradedb/bdump/tradedb2_ora_29282.trc
/opt/oracle/admin/tradedb/bdump/tradedb2_ora_29282.trc
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
ORACLE_HOME = /opt/oracle/product/10.2/database
System name: SunOS
Node name: ahrac2
Release: 5.10
Version: Generic_118833-33
Machine: sun4u
Instance name: tradedb2
Redo thread mounted by this instance: 2
Oracle process number: 182
Unix process pid: 29282, image: oracle@ahrac2
KSV 18 error in slave process
*** 2009-05-26 18:20:15.519
ORA-00018: maximum number of sessions exceeded
查询了一下metalink,果然发现类似的bug存在:Bug No. 7033844,Oracle居然要在11.2版本才解决这个bug,好在这个bug对系统影响不大,只是错误信息不明确,让人容易产生误会,不好确定问题的原因而已。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-604584/ ,如需转载,请注明出处,否则将追究法律责任。