我的oracle 9206 物理standby 不能应用日志. 奇怪了.
主库
SQL> select * from v$archive_gap;
未选定行
SQL> select max(sequence#) from v$Log_history;
MAX(SEQUENCE#)
--------------
6003
主库的日志无法归档到备库.
SQL> alter system set log_archive_dest_2='';
系统已更改
SQL> alter system set log_archive_dest_3='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','LOG_ARCHIVE_DEST_3')
DEST_NAME STATUS TYPE DATABASE_MODE RECOVERY_MODE DESTINATION ARCHIVED_SEQ# APPLIED_THREAD# APPLIED_SEQ# ERROR
LOG_ARCHIVE_DEST_1 VALID LOCAL OPEN IDLE e:\arc_orcl 6003 0 0
LOG_ARCHIVE_DEST_2 INACTIVE LOCAL OPEN IDLE5926 1 5925
LOG_ARCHIVE_DEST_3 ERROR LOGICAL UNKNOWN UNKNOWN orcl_2 0 0 0 ORA-12154: TNS: 无法处理服务名
现在问题是12514错. 但是通过tnsping 却可以ping通 orcl_2
而且用sql plus也能在主库中连过去.对方的lsnrctl也现实正确.
现在把这个LOG_ARCHIVE_DEST_2和LOG_ARCHIVE_DEST_3换回到原来的位置.
SQL> alter system set log_archive_dest_3='';
系统已更改
SQL> alter system set log_archive_dest_2='service=orcl_2';
系统已更改
再查tns不报错.
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','LOG_ARCHIVE_DEST_3')
LOG_ARCHIVE_DEST_1 VALID LOCAL OPEN IDLE e:\arc_orcl 6006 0 0
LOG_ARCHIVE_DEST_2 VALID LOGICAL MOUNTED-STANDBY MANAGED orcl_2 5926 1 5925
LOG_ARCHIVE_DEST_3 INACTIVE LOCAL OPEN IDLE0 0 0
说明此时不存在连接到备库不通的问题,但如果此时再切换日志,让主库归档到备库 又报12514的错.
LOG_ARCHIVE_DEST_2的status立即编程 error
现在再看备库的问题,
因为日志传不到备库,所以把主库日志拷过去.
SQL> select max(sequence#)from v$log_history;
MAX(SEQUENCE#)
--------------
6001
SQL> select sequence#,applied from v$archived_log;
...............
5917 YES
5918 YES
5919 YES
5920 YES
5921 YES
5922 YES
5923 YES
5924 YES
5925 YES
5926 YES
已选择1034行。
备库日志只应用到5926.
然后选择
SQL> alter database recover managed standby database cancel;
数据库已更改。
SQL> alter database recover managed standby database disconnect from session;
数据库已更改。
SQL> select max(sequence#)from v$log_history;
MAX(SEQUENCE#)
--------------
6001
SQL> select sequence#,applied from v$archived_log;
...............
5917 YES
5918 YES
5919 YES
5920 YES
5921 YES
5922 YES
5923 YES
5924 YES
5925 YES
5926 YES
已选择1034行。
备库日志还是只应用到5926.
SQL> alter session set nls_language=american;
Session altered.
SQL> recover automatic standby database;
ORA-00279: change 48281287266 generated at 08/19/2008 19:59:01 needed for thread 1
ORA-00289: suggestion : E:\ARC_ORCL\ARC_ORCL_6008.DBF
ORA-00280: change 48281287266 for thread 1 is in sequence #6008
ORA-00278: log file 'E:\ARC_ORCL\ARC_ORCL_6008.DBF' no longer needed for this recovery
ORA-00308: cannot open archived log 'E:\ARC_ORCL\ARC_ORCL_6008.DBF'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
Specify log: {=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: cannot open archived log 'E:\ARC_ORCL\ARC_ORCL_6008.DBF'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ORA-00308: cannot open archived log 'E:\ARC_ORCL\ARC_ORCL_6008.DBF'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????
ARC_ORCL_6008.DBF 实际上主库还没有归档.所以备库报错.
请问主库如何解决归档不到备库?
备库如何应用日志啊.谢谢!
|