1.错误:
初学data guard,搭了个简单的物理备库测试环境。。备库开启redo接收之后,主库中插入数据,switch logfile好多次之后,发现备库依然收不到来自主库redo日志。。
2.trace
查看主库trace文件:
Fri Apr 25 01:11:58 2014
Using STANDBY_ARCHIVE_DEST parameter default value as /u01/archive
RFS[1]: Assigned to RFS process 5602
RFS[1]: Database mount ID mismatch [0x1cae8268:0x1cae2b38] (481198696:481176376)
RFS[1]: Client instance is standby database instead of primary
RFS[1]: Not using real application clusters
Errors in file /u01/diag/rdbms/dg01/dg01/trace/dg01_rfs_5602.trc:
ORA-16009: invalid redo transport destination
备库trace文件:
Fri Apr 25 01:11:46 2014
Errors in file /u01/diag/rdbms/dg02/dg01/trace/dg01_arc1_3619.trc:
ORA-16009: invalid redo transport destination
PING[ARC1]: Heartbeat failed to connect to standby 'dg01'. Error is 16009.
主库上执行:
SQL> select dest_name,error,status,process from v$archive_dest where rownum<3;
DEST_NAME ERROR STATUS PROCESS
------------------------- ------------------- --------- ----------
LOG_ARCHIVE_DEST_1 VALID ARCH
LOG_ARCHIVE_DEST_2 INACTIVE ARCH
error列好像并没有什么错误
再看一下备库:
SQL> select dest_name,error,status,process from v$archive_dest where rownum<3;
DEST_NAME ERROR STATUS PROCESS
------------------------- ------------------------------------ -------------- ----------
LOG_ARCHIVE_DEST_1 VALID ARCH
LOG_ARCHIVE_DEST_2 ORA-12541: TNS:no listener ERROR LGWR
3. 排错
这么看来。意思是没有listener,之前确实是没配置listener,重新配置listener.ora文件:
主库dg01:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = dg01)
(ORACLE_HOME = /u01/app/oracle)
(SID_NAME = dg01)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dg01)(PORT = 1521))
)
)
备库dg02:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = dg02)
(ORACLE_HOME = /u01/app/oracle)
(SID_NAME = dg02)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dg02)(PORT = 1521))
)
)
重启监听,确保监听正常;
4.测试一下
备库:
SQL>startup nomount;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session; ------开启redo接收模式
再到主库:
SQL> create table dgtest (id int,name varchar2(20));
Table created.
SQL> insert into dgtest values (0,'marry');
1 row created.
SQL> insert into dgtest values (1,'frank');
1 row created.
SQL> commit;
Commit complete.
SQL>alter system switch logfile;-----------加速redo日志归档传输,多执行几次
再到备库:
SQL>select sequence#,applied from v$archived_log order by sequence#;
SEQUENCE# APPLIED
---------- --------------
53 YES
54 YES
55 YES
56 YES
57 YES
58 YES
59 YES
当备库中最大的 SEQUENCE#号都和主库一样时,且applied处于YES状态,说明备库已经成功接收来自主库的日志文件
停止备库redo接收状态,并且启动为read-only状态,在备库上进行查询:
SQL> alter database recover managed standby database cancel;
SQL> alter database open read only;
SQL> select * from dgtest;
ID NAME
---------- --------------------
0 marry
1 frank
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29602308/viewspace-1149328/
,如需转载,请注明出处,否则将追究法律责任。