在Oracle 11g之前,物理备库(physical Standby)在应用redo的时候,是不可以打开的,只可以mount。从11g开始,在应用redo的时候,物理备库可以处于read-only模式,这就称为Active Data Guard 。通过Active Data Guard,可以在物理备库进行查询或者导出数据,从而减少对主库的访问和压力。
Active Data Guard适用于一些只读性的应用,比如,有的应用程序只是查询数据,进行一些报表业务,不会产生redo数据,这些应用可以转移到备库上,避免对主库资源的争用。
Oracle Active Data Guard 是Oracle Database Enterprise Edition的一个功能,需要额外付费来使用这个功能。
如需启用Active Data Guard, 只需要将备库以 read-only 模式打开,而且执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE语句就可以。需要注意的是:主库和备库的COMPATIBLE 参数至少要设置为11.0.0。
如下:在备库执行:
SQL>startup mount;
SQL>alter database open read only;
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
如果已经启用了Active Data Guard,备库的V$DATABASE会显示为"READ ONLY WITH APPLY':
SQL> SELECT open_mode FROM V$DATABASE;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
注意:使用ActiveData Guard要求主库和备库的COMPATIBLE 参数至少设置为11.0.0。 为了保证备库数据的实时性,需要在备库启动real-time apply:
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
下面的功能是允许在read-only的数据库上执行的:
• Issue SELECT statements, including queries that require multiple sorts that leverage TEMP
segments
• Use ALTER SESSION and ALTER SYSTEM statements
• Use SET ROLE
• Call stored procedures
• Use database links (dblinks) to write to remote databases
• Use stored procedures to call remote procedures via dblinks
• Use SET TRANSACTION READ ONLY for transaction level read consistency
• Issue complex queries (such as grouping SET queries and WITH CLAUSE queries)
下面的功能是不允许在read-only的数据库上执行的:
• Any DMLs (excluding simple SELECT statements) or DDLs
• Query accessing local sequences
• DMLs to local temporary tables
比较典型的Active Data Guard 分为:
• 单实例的物理主库和单实例的物理备库
• 主库为Oracle Real Application Clusters (Oracle RAC) ,备库为单实例
• RAC主库和RAC备库
新特性官方链接:http://www.oracle.com/technetwork/cn/database/twp-dataguard-11gr1-1-129524-zhs.pdf