ITPub博客

首页 > 数据库 > Oracle > 逻辑Data Guard主备库的转换

逻辑Data Guard主备库的转换

原创 Oracle 作者:静以致远√团团 时间:2014-03-05 16:36:04 0 删除 编辑

逻辑DG主备库的转换


 

SQL> show parameter FAL;

NAME                                 TYPE        VALUE

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

fal_client                           string      orcl_p.1_tns

fal_server                           string      orcl_s.2_tns

 

SQL> show parameter log_archive_dest;

NAME                                 TYPE        VALUE

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

log_archive_dest                     string

log_archive_dest_1                   string      location=/u01/arch

log_archive_dest_10                  string

log_archive_dest_2                   string      service=orcl_s.2_tns arch vali

                                             d_for=(online_logfiles, primar

                                             y_role) db_unique_name=orcl2

log_archive_dest_3                   string

log_archive_dest_4                   string

log_archive_dest_5                   string

log_archive_dest_6                   string

log_archive_dest_7                   string

 

NAME                                 TYPE        VALUE

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

log_archive_dest_8                   string

log_archive_dest_9                   string

log_archive_dest_state_1             string      enable

log_archive_dest_state_10            string      enable

log_archive_dest_state_2             string      ENABLE

log_archive_dest_state_3             string      enable

log_archive_dest_state_4             string      enable

log_archive_dest_state_5             string      enable

log_archive_dest_state_6             string      enable

log_archive_dest_state_7             string      enable

log_archive_dest_state_8             string      enable

NAME                                 TYPE        VALUE

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

log_archive_dest_state_9             string      enable

 

SQL> alter system set log_archive_dest_3='location=/u01/arch1 valid_for=(online_logfiles, all_roles) db_unique_name=orcl1' ;

System altered.

 

SQL> alter system set log_archive_dest_3='location=/u01/arch2 valid_for=(standby_logfiles, standby_role) db_unique_name=orcl1' ;

System altered.

 

SQL> show parameter log_archive_dest;

NAME                                 TYPE        VALUE

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

log_archive_dest                  string

log_archive_dest_1               string      location=/u01/arch

log_archive_dest_10             string

log_archive_dest_2               string      service=orcl_s.2_tns arch vali

                                                       d_for=(online_logfiles, primar

                                                       y_role) db_unique_name=orcl2

log_archive_dest_3              string       location=/u01/arch2 valid_for=

                                                       (standby_logfiles, standby_rol

                                                        e) db_unique_name=orcl1

log_archive_dest_4               string

log_archive_dest_5               string

。。。。。。

 

创建三组standby 的 redolog (至少也要两组)

 

SQL> alter database add standby logfile group 4 '/u01/app/oracle/oradata/orcl/stdredo01.log' size 50m;

Database altered.

 

SQL> alter database add standby logfile group 5 '/u01/app/oracle/oradata/orcl/stdredo02.log' size 50m;

Database altered.

 

SQL> alter database add standby logfile group 6 '/u01/app/oracle/oradata/orcl/stdredo03.log' size 50m;

Database altered.

 

查看一下primaryswitchover状态,结果为TO STANDBY或者SESSIONS ACTIVE视为正常

 

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

SESSIONS ACTIVE

 

primary数据库置为将要装换的状态

 

SQL> alter database prepare to switchover to logical standby;

Database altered.

 

查看当前数据库状态

 

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS

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

PREPARING SWITCHOVER

 

将逻辑standby数据库转换为primary

 

STANDBY > alter database prepare to switchover to primary;

Database altered.

 

查看备份数据库的状态

STANDBY > select switchover_status from v$database;

SWITCHOVER_STATUS

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

PREPARING SWITCHOVER

 

此时查看primary数据库的转换状态

 

PRIMARY >select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO LOGICAL STANDBY

 

primary数据库转换为逻辑的standby

 

PRIMARY >alter database commit to switchover to logical standby;

Database altered.

 

返回再去看看原standby数据库的状态,很神奇

 

STANDBY > select switchover_status from v$database;

SWITCHOVER_STATUS

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

TO PRIMARY

 

将该standby数据库转换为primary

STANDBY > alter database commit to switchover to primary;

Database altered.

 

逻辑standby转换完成,注意将新转换来的standby启动SQL应用

 

PRIMARY >set sqlprompt 'NEW_STANDBY > '

 

NEW_STANDBY > alter database start logical standby apply immediate;

Database altered.

 

在心的primary端添加数据进行检测:

STANDBY > set sqlprompt 'NEW_PRIMARY > '

NEW_PRIMARY > select * from scott.dg_test;

ID

----------

DG_TEST_1

DG_TEST_2

DG_TEST_3

DG_TEST_4

 

NEW_PRIMARY > insert into scott.DG_TEST

  2  values('DG_TEST_5')

  3  /

1 row created.

 

NEW_PRIMARY > select * from scott.DG_TEST;

ID

----------

DG_TEST_1

DG_TEST_2

DG_TEST_3

DG_TEST_4

DG_TEST_5

 

NEW_PRIMARY > commit;

Commit complete.

 

NEW_PRIMARY > alter system switch logfile;

System altered.

 

在新的standby端查看数据是否接收

NEW_STANDBY > select * from scott.dg_test;

ID

----------

DG_TEST_1

DG_TEST_2

DG_TEST_3

DG_TEST_4

DG_TEST_5

 

小结:

1、在进行转换前,要确定备库的设置健全,比如几个不同日志存放目录的设置

2、在将数据库置为开始转换状态时,由于,或因某些原因另一数据库无法自动到’TO STANDBY’或’TO PRIMAYR’状态,可用下列语句取消转换状态:

alter database prepare to switchover cancel;

 

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

上一篇: 从物理DG到逻辑DG
请登录后发表评论 登录
全部评论
每个人都有梦想,去实现吧!

注册时间:2013-11-14

  • 博文量
    164
  • 访问量
    2125596