我是靠谱客的博主 唠叨电灯胆,最近开发中收集的这篇文章主要介绍逻辑DG主备库转换的failover,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

逻辑DG主备库转换的failover 

既然是failover,那么就认为PRIMARY数据库已经崩溃,需要马上将其中的一个逻辑STANDBY数据库置为PRIMAYD

 

虽然primary数据库已经崩溃,如果能打开数据到mount状态,可以先查看一下日志情况,这样可以对日志进行一些操作,尽量的来减少数据的丢失,当然,也可以在数据库不能mount的时候去归档路径下查看归档信息。

 

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

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

            15

 

STANDBY > select sequence#,applied from dba_logstdby_log;

 SEQUENCE# APPLIED

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

        15 CURRENT

 

此处日志已经完全被应用,如果发现有日志未被发送到STANDBY,可以手工的将日志复制过去,并执行alter database register logical logfile ‘filename’语句手动的注册

 

查看逻辑standby的日志应用情况

 

STANDBY > select applied_scn,latest_scn from v$logstdby_progress;

APPLIED_SCN  LATEST_SCN

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

     540775     540775

如果两结果一致则证明日志已经应用完毕,如果不一致,则需要启动SQL应用

 

配置一下日志的归档路径

 

STANDBY >  alter system set log_archive_dest_1='location=/u01/log/arch_online valid_for=(online_logfiles, all_roles) db_unique_name=orcl_std';

System altered.

 

STANDBY >  alter system set log_archive_dest_3='location=/u01/log/arch_pri_log valid_for=(standby_logfiles, standby_roles) db_unique_name=orcl_std’;

System altered.

 

STANDBY > show parameter archive_dest;

 

NAME                                 TYPE        VALUE

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

log_archive_dest                     string

log_archive_dest_1                   string      location=/u01/log/arch_online

                                                 valid_for=(online_logfiles, al

                                                 l_roles) db_unique_name=orcl_s

                                                 td

log_archive_dest_10                  string

log_archive_dest_2                   string      service=orcl_p_tns arch valid_

                                                 for=(online_logfiles,primary_r

                                                 ole) db_unique_name=orcl_pri

log_archive_dest_3                   string      location=/u01/log/arch_pri_log

                                                  valid_for=(standby_logfiles,

                                                 standby_roles) db_unique_name=

                                                 orcl_std

转换之前先看一下数据库的角色

STANDBY > select database_role,force_logging from v$database;

 

DATABASE_ROLE    FOR

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

LOGICAL STANDBY  YES

 

开始转换

STANDBY > alter database activate logical standby database finish apply;

Database altered.

 

该语句会听着该standby数据库的RFS服务,并应用当前已经接收但并未应用的日志,并执行完毕手关闭SQL应用

 

再次查看数据库的角色

STANDBY > select database_role,force_logging from v$database;

 

DATABASE_ROLE    FOR

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

PRIMARY           YES

将该新的primary数据库加入到原来的Data Guard环境中

 

standby数据库执行:

SQL> alter session disable guard;

Session altered.

 

SQL> create database link dg_recover connect to scott identified by oracle using 'orcl_p_tns';

Database link created.

注意连接用户必须有select_catalog_role的权限,可以在想要的standby数据库端赋予权限

SQL > grant select_catalog_role to scott;

Grant succeeded.

 

SQL> alter session enable guard;

Session altered.

 

SQL> select sysdate from dual@dg_recover;

SYSDATE

---------

09-MAR-14

 

将该standby数据库加入新的DG环境中去

 

SQL> alter database start logical standby apply new primary dg_recover;

Database altered.

 

要是有多个standby只需将它们添加到新的primary即可。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-1104086/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29320885/viewspace-1104086/

最后

以上就是唠叨电灯胆为你收集整理的逻辑DG主备库转换的failover的全部内容,希望文章能够帮你解决逻辑DG主备库转换的failover所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部