在Oracle中,有哪几种类型的DG?
♣ 答案部分
DG根据备库(Standby Database)重演日志方式的不同,可以分为物理DG(Physical DG)、逻辑DG(Logical DG)和快照DG(Snapshot DG),它们对应的数据库分别可以称为Physical Standby、Logical Standby和Snapshot Standby。
创建物理备库的方法很多。对于Oracle 11g而言,可以直接从Active Database来创建,也可以基于10g的RMAN备份方式来创建。对于Oracle 10g而言,只能基于RMAN来创建。对于12c的数据库,可以通过dbca -createDuplicateDB的方式来创建一个物理DG,但是前提条件是主库必须是一个单机且非CDB的环境。
(一)物理DG(Physical DG)
物理DG使用的是Media Recovery技术,在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。在Oracle 11g之前的物理DG只能在MOUNT状态下进行恢复,虽然可以以只读方式打开备库,但是不能应用日志,而到了Oracle 11g时备库可以在打开的情况下执行恢复操作了,这称为ADG(Active Data Guard)。物理DG实时应用进程为MRP进程。需要注意的是,主库在开启闪回数据库功能后,物理备库并不会开启闪回数据库的功能。
(二)逻辑DG(Logical DG)
逻辑DG使用的是LogMiner技术,通过把日志内容还原成SQL语句,然后通过SQL引擎执行这些SQL语句。逻辑DG不支持所有的数据类型,这些不支持的数据类型可以在视图DBA_LOGSTDBY_UNSUPPORTED中查看。如果使用了这些数据类型,那么不能保证主备库完全一致。Logical Standby可以在恢复的同时进行读写操作。逻辑DG实时应用进程为LSP进程。需要注意的是,在逻辑DG中,SYS用户下的对象不会同步。要想创建一个逻辑备库需要先创建一个物理备库,然后再将其转换成逻辑备库。
(三)快照DG(Snapshot DG)
当Physical Standby转换为Snapshot Standby时,它是一个完全可更新的Standby数据库。Snapshot Standby依然会接收来自主库的归档文件,但是它不会应用。当Snapshot Standby转换为Physical Standby时,所有在Snapshot Standby数据库的操作被丢弃之后,Physical Standby数据库才会应用Primary数据库的Redo数据。
最后需要说明的一点是,物理DG可以转换为逻辑DG,但是逻辑DG不能转换为物理DG。快照DG和物理DG可以相互转换。
通过V$DATABASE视图的DATABASE_ROLE列可以查询DG的类型:
1[root@rhel6lhr ~]# ps -ef|grep pmon
2grid 3375 1 0 08:48 ? 00:00:00 asm_pmon_+ASM
3oracle 5462 1 0 09:17 ? 00:00:00 ora_pmon_oradgphy
4oracle 5581 1 0 09:17 ? 00:00:00 ora_pmon_oradg11g
5oracle 5762 1 0 09:18 ? 00:00:00 ora_pmon_oradglg
6oracle 8128 1 0 09:39 ? 00:00:00 ora_pmon_oradgss
7
8
9-- ORACLE_SID=oradg11g
10SYS@oradg11g > select db_unique_name,database_role,open_mode from v$database;
11
12DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE
13------------------------------ ---------------- --------------------
14oradg11g PRIMARY READ WRITE
15
16
17-- ORACLE_SID=oradgphy
18SYS@oradgphy > select db_unique_name,database_role,open_mode from v$database;
19
20DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE
21------------------------------ ---------------- --------------------
22oradgphy PHYSICAL STANDBY READ ONLY WITH APPLY
23
24-- ORACLE_SID=oradglg
25SYS@oradglg > select db_unique_name,database_role,open_mode from v$database;
26
27DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE
28------------------------------ ---------------- --------------------
29oradglg LOGICAL STANDBY READ WRITE
30
31
32-- ORACLE_SID=oradgss
33SYS@oradgss > select db_unique_name,database_role,open_mode from v$database;
34
35DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE
36------------------------------ ---------------- --------------------
37oradgss SNAPSHOT STANDBY READ WRITE
& 说明:
有关这3种DG的搭建过程可以参考我的BLOG:https://ke.qq.com/course/318038?tuin=26507979、http://blog.itpub.net/26736162/viewspace-2158321/
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
---------------优质麦课------------
详细内容可以添加麦老师微信或QQ私聊。
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 提供OCP、OCM和高可用部分最实用的技能培训
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。