学无止境
分类: 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;