Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1115576
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2013-12-12 15:47:16

检查数据库中是否有逻辑standby不支持的对象。
select * from dba_logstdby_unsupported;
 

1.先配置好前面环境的物理standby数据库
 
2.修改参数
primary端
alter system set log_archive_dest_3='location=/oracle/arch/db1/std valid_for=(standby_logfiles,standby_role) db_unique_name=db1';
 
standby端
alter system set log_archive_dest_3='location=/oracle/arch/db1/std valid_for=(standby_logfiles,standby_role) db_unique_name=dg1';
 
3.停止standby端的redo应用
在standby端执行
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
 
4.生成logminer数据字典
在primary端执行
execute dbms_logstdby.build;
 
5.转换物理standby为逻辑standby
在standby端执行
alter database recover to logical standby db1;
shutdown immediate;
startup mount;
 
SQL> select database_role from v$database;
 
DATABASE_ROLE
----------------
LOGICAL STANDBY
 
6.打开逻辑standby
alter database open resetlogs;
 
SQL> select * from v$standby_log;
没有standby log的话,要创建。
 
7.启动redo应用
alter database stop logical standby apply;
alter database start logical standby apply immediate;
 
逻辑standby是open write的
SQL> select open_mode from v$database;
 
OPEN_MODE
----------
READ WRITE
 

主备切换
注意:
如果primary 或逻辑standby 是rac 结构,切记只保留一个实例启动,其它实例全部shutdown。等角色转换操作完成之后再启动其它实例,角色转换的操作会自动传播到这些实例上,并不需要你再对这些实例单独做处理。
 
1.检查状态
primary端操作
SQL> select switchover_status from v$database;
 
SWITCHOVER_STATUS
--------------------
TO STANDBY
 
standby端操作
SQL> select switchover_status from v$database;
 
SWITCHOVER_STATUS
--------------------
NOT ALLOWED
 

2.将primary设置为准备转换状态
alter database prepare to switchover to logical standby;
 
SQL> select switchover_status from v$database;
 
SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER
 

3.将standby设置为准备转换状态
alter database prepare to switchover to primary;
 
在standby端执行完之后,回到primary端查看状态:
SQL> select switchover_status from v$database;
 
SWITCHOVER_STATUS
--------------------
TO LOGICAL STANDBY
 
如果有问题可以用以下命令分别在2个数据库上执行取消转换。
ALTER DATABASE PREPARE TO SWITCHOVER CANCEL;
 

4.将primary转换为逻辑standby
alter database commit to switchover to logical standby;
 
在primary端执行完之后,回到standby端查看状态:
SQL> select switchover_status from v$database;
 
SWITCHOVER_STATUS
--------------------
TO PRIMARY
 
5.将standby转换为primary
alter database commit to switchover to primary;
 
6.将standby启用实时redo应用
alter database start logical standby apply immediate;


 

阅读(1124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~