本文共 3180 字,大约阅读时间需要 10 分钟。
今天在一台机器上模拟了dataguard,主备两个实例从物理上不共享任何归档文件路径。
主要有以下内容:
dataguard Physical standby的创建
protection mode的切换
switch over
模拟了两台机器oel1,oel2 主库的归档放在oel1里面,备库的放在oel2里面
创建的路径如下
./oel2:
--强制logging
SQL> select force_logging from v$database;
FOR
--查看归档状态
--创建密码文件
[oracle@oel1 dbs]$ orapwd file=orapwstandby password=oracle entries=10
SID_LIST_LISTENER1 =
参数文件
备库参数文件(standby)
Database altered.
SQL>
--错误的操作来生成控制文件
--正确的方法
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Oct 21 16:26:01 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount;
Total System Global Area 524288000 bytes
[oracle@oel1 standby]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Sun Oct 21 16:27:44 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: orcl (not mounted)
RMAN> restore controlfile from '/u01/app/oracle/dg/standby.ctl';
Starting restore at 21-OCT-12
channel ORA_DISK_1: copied control file copy
RMAN>
将备库启动到Mount状态
--到此为止要保证网络是互通的,可以检查密码文件,listener等的配置是否合适
[oracle@oel1 admin]$ sqlplus sys/oracle@standby as sysdba
Database altered.
--当然也可以取消apply
Database altered.
--在取消apply的时候,添加standby logfile,强烈建议在apply之前能够创建几组standby logfile
Database altered.
--在主库切换日志
System altered.
SQL>
如果没有看到归档到指定的目录,查看primary database的log_archive_dest参数,很可能是修改了Pfile 之后没有同步到spfile.
Error 16047 attaching to destination LOG_ARCHIVE_DEST_2 standby host 'standby'
查找了半天,原来是在参数文件中
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_arc0_16479.trc:
SQL> select dest_id,error from v$archive_dest;
DEST_ID ERROR
--在主库的归档目录下只有三个文件
--但是在正确配置了参数之后,重启两个实例后,手动切换日志,
--在备库,中会发现gap.然后索取之前的日志
--在备库的归档路径下
再次手动切换日志,一切正常
--change protection mode
orcl>select database_role,protection_mode,protection_level from v$database;
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
SQL> alter database set standby to maximize protection;
Total System Global Area 524288000 bytes
Database altered.
orcl>alter database open;
--主库就突然down了
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
LGWR: Primary database is in MAXIMUM PROTECTION mode
Database altered.
SQL> alter database open;
Database altered.
SQL> alter system set log_archive_dest_2='service=standby LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=standby';
System altered.
SQL> shutdown immediate
Total System Global Area 524288000 bytes
NAME TYPE VALUE
SQL> alter database set standby database to maximize protection;
Database altered.
SQL> alter database open;
Database altered.
SQL>
--在open时,有的人遇到了一些问题。
--再次查看备库的状态
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
SQL> /
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL --修改后的
SQL>
--在主库继续切换模式
Database altered.
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
Database altered.
DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL
--在主库查看归档情况
SQL> select dest_id,status,error from v$archive_dest ;
DEST_ID STATUS
在主库尝试加入timeout
SQL> alter system set log_archive_dest_2='service=standby LGWR SYNC AFFIRM NET_TIMEOUT=200 valid_for=(online_logfile,primary_role) db_unique_name=standby'
System altered.
--switch over and failover
-primary database orcl
DATABASE_ROLE SWITCHOVER_STATUS
DATABASE_ROLE SWITCHOVER_STATUS
转载地址:https://jeanron100.blog.csdn.net/article/details/102506826 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!