【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性

来源:这里教程网 时间:2026-03-03 13:00:58 作者:

http://blog.itpub.net/519536/viewspace-718742/ 在Oracle 11g以前版本中的的Data Guard物理备用数据库,可以以只读的方式打开数据库,但此时Media Recovery利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询,也就是说日志应用和只读打开两个状态是互斥的,而Oracle 11g Active Data Guard功能解决了这个矛盾,在利用日志恢复数据的同时可以用只读的方式打开数据库,用户可以在备用数据库上进行查询、报表等操作,这类似逻辑Data Guard备用数据库的功能(查询功能方面),但是,数据同步的效率更高、对硬件的资源要求更低。这样可以更大程度地发挥物理备用数据库的硬件资源的效能。   以创建表空间、用户以及表为例体验一下Oracle 11g物理Active Data Guard实时查询(Real-time query)特性。 1.调整备库为“READ ONLY WITH APPLY”状态   这体现的便是Oracle 11g物理Active Data Guard功能中的“Active”真实含义。 1)查看备库当前状态 ora11gdg@secdb /home/oracle$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 16 11:54:52 2012 Copyright (c) 1982, 2009, Oracle.  All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options sys@ora11gdg@> select open_mode from v$database; OPEN_MODE -------------------- MOUNTED   此时备库处于MOUNT状态。 2)取消备库的自动恢复 sys@ora11gdg@> alter database recover managed standby database cancel; Database altered. 3)OPEN备库调整为“READ ONLY”状态 sys@ora11gdg@> alter database open; Database altered. sys@ora11gdg@> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY 4)在“READ ONLY”状态下进一步启动备库的恢复 sys@ora11gdg@> alter database recover managed standby database using current logfile disconnect; Database altered.   选项“USING CURRENT LOGFILE”的含义是当备库收到日志后,尽快完成恢复。 sys@ora11gdg@> select open_mode from v$database; OPEN_MODE -------------------- READ ONLY WITH APPLY   状态“READ ONLY WITH APPLY”即表示此时备库处于Read Only状态的同时可以接受主库传过来的日志进行恢复,以便达到备库可以即时查看到主库变化的目的。 2.体验实时查询(Real-time query)特性 1)主库上创建表空间、用户以及表并初始化数据 (1)创建表空间并查看表空间创建结果和状态 sys@ora11g> create tablespace secooler_tbs datafile '/u01/app/oracle/oradata/ora11g/secooler_tbs01.dbf' size 10m; Tablespace created. sys@ora11g> select * from v$tablespace where name = 'SECOOLER_TBS';        TS# NAME                           INC BIG FLA ENC ---------- ------------------------------ --- --- --- ---          8 SECOOLER_TBS                   YES NO  YES sys@ora11g> select ts#,status,bytes,name from v$datafile where ts# = 8;        TS# STATUS       BYTES NAME ---------- ------- ---------- ------------------------------          8 ONLINE    10485760 /u01/app/oracle/oradata/ora11g                               /secooler_tbs01.dbf (2)创建用户并授权 sys@ora11g> create user secooler identified by secooler default tablespace secooler_tbs; User created. sys@ora11g> grant dba to secooler; Grant succeeded. (3)创建表并初始化数据 sys@ora11g> conn secooler/secooler Connected. secooler@ora11g> create table t (x varchar2(8)); Table created. secooler@ora11g> insert into t values ('Secooler'); 1 row created. secooler@ora11g> commit; Commit complete. secooler@ora11g> select * from t; X -------- Secooler 2)此时观察ora11g实例的alert日志记录了如下信息 Fri Mar 16 11:56:36 2012 create tablespace secooler_tbs datafile '/u01/app/oracle/oradata/ora11g/secooler_tbs01.dbf' size 10m Fri Mar 16 11:56:48 2012 Completed: create tablespace secooler_tbs datafile '/u01/app/oracle/oradata/ora11g/secooler_tbs01.dbf' size 10m 3)几乎与此同时(1秒)备库ora11gdg实例的警告日志中记录了如下信息 Fri Mar 16 11:56:37 2012 Recovery created file /u01/app/oracle/oradata/ora11gdg/secooler_tbs01.dbf Successfully added datafile 5 to media recovery Datafile #5: '/u01/app/oracle/oradata/ora11gdg/secooler_tbs01.dbf'   可见,备库已经接受到主库的这个变化,并把这个变化在备库应用完毕。 4)验证主库所创建表空间、用户以及表并初始化数据是否在备库应用成功 (1)查看备库表空间 sys@ora11gdg> select * from v$tablespace where name = 'SECOOLER_TBS';        TS# NAME                           INC BIG FLA ENC ---------- ------------------------------ --- --- --- ---          8 SECOOLER_TBS                   YES NO  YES sys@ora11gdg> select ts#,status,bytes,name from v$datafile where ts# = 8;        TS# STATUS       BYTES NAME ---------- ------- ---------- ------------------------------          8 RECOVER   10485760 /u01/app/oracle/oradata/ora11g                               dg/secooler_tbs01.dbf   创建成功,但是此时备库数据文件的状态是“RECOVER”。 (2)查看备库用户及数据是否存在 sys@ora11gdg> conn secooler/secooler Connected. secooler@ora11g> set lines 80 secooler@ora11g> desc t;  Name               Null?    Type  ------------------ -------- ----------------------------  X                           VARCHAR2(8) secoolerdg@ora11g> select * from t; X -------- Secooler   主库上的变化已经即使的在备库上得到应用。   这便是Oracle 11g物理Active Data Guard实时查询(Real-time query)特性的体现。 3.小结   本文以实验的方式体验了Oracle 11g物理Active Data Guard实时查询(Real-time query)特性。这项特性非常值得称赞,备库在这种特性的支持下,Oracle可以最大限度满足备库作为报表库或者查询分析类型数据库的需求。BTW:这项令人激动的特性是收费,也就是说大家想将这个特性用在生产环境下的话需要单独付费。 Good luck. secooler 12.03.16 -- The End --

相关推荐