日期:2014-05-16  浏览次数:20563 次

ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID (DBD ERROR: OCIServerAttach)
报错信息:ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID (DBD ERROR: OCIServerAttach)
现象:监听可以正常启动,而数据库无法正常启动。

首先,我检查了listener.ora 和 tnsnames.ora  ,sqlnet.ora.一切正常启动,重启依旧如此。因为实验机器老出现网卡问题,我就用oracle的网络配置管理重新配了一下监听,重启监听依旧如此。监听可以启动,数据库还是报同样的错。因为实验的机器有2个实例,tnsnames.ora信息也有很多条。我想难道是我重配监听的时候,弄错了sid。于是我到windows下的注册表里查看oracle_sid的值,发现确实错了。Sid改正确后,重启电脑,错误依旧一模一样。没辙了,看看帮助吧~~


一、查看帮助:
host oerr ora 32004;
32004, 00000, "obsolete and/or deprecated parameter(s) specified"
// *Cause:  One or more obsolete and/or parameters were specified in
//          the SPFILE or the PFILE on the server side.
// *Action: See alert log for a list of parameters that are obsolete.
//          or deprecated. Remove them from the SPFILE or the server
//          side PFILE.
由帮助信息可见,服务器端的spfile或pfile中存在废弃不用的旧参数。提示从spfile中删除即可。


二、回想故障前自己干了什么?
SQL> show parameter log_archive_start;
NAME                         TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_start                    boolean     FALSE
SQL> alter system set log_archive_start=true scope=spfile;
System altered.
SQL>alter system  set  log_archive_dest_1='location=’E:\oracle\product\10.2.0\backup\arclog' scope=spfile;
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORA-32004: obsolete or deprecated parameter(s) specified for  spj  instance

三、查看网上帖子,才知道,log_archive_start是个过时的参数,9i  有这个参数吧,10g 11g 已经不用这个参数了。这时,报错信息和自己的误操作算是对上了。开始改。

Sql>Select status from v$instance;  
sql> started;
sql>show parameter spfile;  看看是spfile还是pfile文件启库的。如果是pfile,直接去pfile文件中删除那个参数就可以,再重启库即可。如果是pfile文件启库的,需按一下操作
create pfile from  spfile;   --在windows下先导出pfile文件
到pfile中删除那个参数;
Startup  pfile= ‘ E:\oracle\product\10.2.0\db_1\database\initspj.ora’  force;


Ok 成功!
随便相信资料的教训啊。学艺不精的教训啊。