Oracle 11g Active Data Guard搭建、管理(6)

****************** Active Data Guard 维护篇 **************************

Data Guard 启动\关闭顺序:

启动顺序:先standby ,后primary;

关闭顺序:先primary 后standby;

主库没有遗漏

SQL> select * from v$archive_gap;



查看日志是否能正确从主库同步到备用库,查看主备库

SQL> col standby_dest for a12

SQL> col archived for a10

SQL> col applied for a10

SQL> col status for a10

SQL> select sequence#,standby_dest,archived,applied,status from v$archived_log;

只需要保证2边sequence序列号一致且最新的app返回YES了,就说明备库接收到应用且恢复了。

正常操作关闭DG时,再次启动DG循序为:

1、先启动备库,再启动主库

$ sqlplus / as sysdba

SQL> startup



2、在备库执行命令:打开实时应用状态模式

SQL> alter database recover managed standby database using current logfile disconnect from session;

非正常情况下关闭DG后,重启DG时需要操作

1、检查主、备库的protection_level值,若其中一点为RESYNCHRONIZATION,说明实时同步已经有问题。

SQL> select db_unique_name,protection_mode,protection_level from v$database;

DB_UNIQUE_NAME PROTECTION_MODEPROTECTION_LEVEL

-------------------------------------------------- --------------------

ORCL_PRIMARY MAXIMUM AVAILABILITYRESYNCHRONIZATION



Oracle的data guard在主库设置为最大可用模式不能实现时,自动降级为最大性能模式。这样的结果使得日志同步不再实时。



解决方法(在主库执行):

1、根据最大可用模式的最低要求,将log_archive_dest_2调整为lgwr sync affirm

SQL> show parameter log_archive_dest_2

若包含有lgwr sync affirm ,则执行

SQL> alter system switch logfile;

强制日志切换,不一定就归档当前的重做日志文件(若自动归档打开,就归档前的重做日志,若自动归档没有打开,就不归档当前重做日志。)



若无lgwr sync affirm ,则执行如下两句命令

SQL> alter system setlog_archive_dest_2 = 'service=orcl_standby lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=orcl_standby';

SQL> alter system switch logfile;

2、查看备库open_mode是否为READ ONLY WITH APPLY”,否则执行后面一条语句,打开实时应用状态模式

SQL> select open_mode,database_role,db_unique_name from v$database;

OPEN_MODE DATABASE_ROLEDB_UNIQUE_NAME

-------------------- ----------------------------------------------

READ ONLY WITH APPLY PHYSICAL STANDBY orcl_standby

SQL> alter database recover managed standby database using current logfile disconnect from session;





****************** 主备库切换 Switchover **************************

物理Data Guard角色转换步骤

Step 1 验证主库是否能执行角色转换到备库(原主库执行):

1.查看switchover状态

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO STANDBY

附:A:switchover_status出现session active/not allowed



Step 2 开始把物理主库改变为物理备库(原主库执行)

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

注:如果有活动的session可以使用此选项,否则转换会遇到ORA-01093错误,也可以杀掉活动会话或等活动会话后进行转换

当出现session active的时候表示还有活动的session,则运行

SQL> Alter database commit to switchover tophysical standby with session shutdown;



Step 3 关闭并重启主库(原主库执行)

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP MOUNT;



Step 4 验证备库是否能执行角色转换到主库(原备库执行)

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO PRIMARY



Step 5 开始把物理备库转换成物理主库(原备库执行)

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

--如果报ORA-16139: mediarecovery required,可能是由于未应用日志引起,可先执行

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;



Step 6 打开备库,然后关闭重启.(原备库执行)

SQL> ALTER DATABASE OPEN;

SQL> SHUTDOWN IMMEDIATE;

SQL> STARTUP;



Step 7 验证是否转换成功(原备库执行)

SQL> ALTER SYSTEM SWITCH LOGFILE;



Setp 8 应用归档日志(原主库上执行)

SQL> ALTERDATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

此步若提示报错:

ORA-01153: an incompatible media recoveryis active

则先执行

SQL> alter database recover managed standby database cancel;

再执行

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

最后,重启一下数据库(原备库执行)

SQL> shutdownimmediate;

SQL> startup

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0daa89d8e248aa8f8e0e67d68181ff6c.html