ORACLE DataGuard Logical Standby 详解之:(七)应用REDO数据到Standby数据库
- Dataguard Logical Standby 系列文章:
- 一、逻辑Standby的准备工作
- 二、逻辑Standby创建时的操作步骤
- 三、管理逻辑Standby的相关视图
- 四、逻辑Standby数据库的自定义配置
- 五、修改逻辑Standby端数据
- 六、优化逻辑Standby数据同步性能
- 七、应用REDO数据到Standby数据库
本节内容
1.物理Standby应用REDO数据
物理Standby启动REDO应用,数据库要处于MOUNT状态或是OPEN READ ONLY状态,启动REDO应用的命令相信大家已经非常熟悉了。
前台应用:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
语句执行完成后,不会将控制权返回到命令行窗口,除非你手动中止应用。在这种情况下如果还需要对数据库进行操作,只能新开一个命令行连接,在Oracle 8i刚推出Standby特性时(那时不叫Data Guard),只提供了这种方式。
后台应用:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
这是现在比较通用的方式,语句执行完后,控制权自动返回到当前的命令行模式,REDO应用以后台进程运行。
启动实时应用,附加USING CURRENT LOGFILE子句即可:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
如果要停止REDO应用,执行下列语句即可:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2.逻辑Standby应用REDO数据
SQL应用的原理是将接收到的REDO数据转换成SQL语句在逻辑Standby数据库端执行,因此逻辑Standby需要启动至OPEN状态。
(1)启动SQL应用。逻辑Standby数据库启动SQL应用没有前、后台运行之说,语句执行完之后,控制权就会自动返回当前命令行窗口。要启动SQL应用,直接执行下列语句即可:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;
如果要启动实时应用,附加IMMEDIATE子句即可,例如:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
(2)停止SQL应用,如:
SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;
由于是执行SQL语句的方式应用REDO数据,因此上述语句的执行需要等待当前执行的SQL触发的事务结束,才能真正停止REDO应用的状态。
如果不考虑事务执行情况,马上停止REDO应用,可以通过下列的语句来完成:
SQL> ALTER DATABASE ABORT LOGICAL STANDBY APPLY;