平台: oracle 9i + windows 2003

故障表现:

ORA-12154: TNS:could not resolve service name

Data Guard 之前一直很正常。 突然就报这个错了。无法完成归档,但用tnsping SID, 没有问题,监听也没有问题。 因为TNS 无法解析,所以主库的归档日志无法传送到备库。 无法完成归档。

尝试解决方法:

SQL> alter system set log_archive_dest_2='';
系统已更改
SQL> alter system set log_archive_dest_3='service=orcl_2';
系统已更改

SQL> alter system set log_archive_dest_3='';
系统已更改
SQL> alter system set log_archive_dest_2='service=orcl_2';
系统已更改

查询归档目录的相关信息

select dest_name,status,type,database_mode,recovery_mode,destination,

archived_seq#,applied_thread#,applied_seq#,error from V$archive_Dest_Status

where dest_name in('LOG_ARCHIVE_DEST_1','LOG_ARCHIVE_DEST_2');

或者用

select dest_id,status from v$archive_dest;

切换归档文件:

Alter system switch logfile;

修改之后的几分钟之内查询是有效的,过一会又会报ORA-12154: TNS:could not resolve service name错误。

查看归档情况:

select name,sequence#,applied from v$archived_log; 

备库重新启动归档文件

alter database recover managed standby database cancel; 

alter database recover managed standby database disconnect from session; 

解决方法:

最后实在无耐, 把服务器重启了下, 居然搞定了。看来windows 平台跑Oracle 还是有些问题。 这个不是oracle 9i bug 就是Oracle 与 windows 2003 的兼容性问题。