DBA面试(ORACLE ADG篇)

2024-04-19 17:36
文章标签 oracle 面试 dba adg

本文主要是介绍DBA面试(ORACLE ADG篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、在Oracle的DG中,RFS、LNSn、MRP、LSP进程的作用分别是什么?

1.RFS进程

RFS(Remote File Server)进程主要用来接受从主库传送过来的日志信息。对于物理备库而言,RFS进程可以直接将日志写进Standby Redo logs,也可以直接将日志信息写到归档日志。

2.LNSn(LGWR Network Server process)进程

DG可以使用ARCn、LGWR来传送日志,但它们都是把日志发送给本地的LNSn(如果有多个目标备库,那么会启动相应数量的LNSn进程,同时发送数据)进程,然后备库的RFS进程接收数据,接收到的数据可以存储在备库的备用Redo日志文件中或备库的归档日志中,然后再应用到备库中。

3.MRP(Managed Recovery Process)进程

该进程只针对物理备库,作用为应用从主库传递过来的Redo日志到物理备库,称为Redo Apply。如果使用SQL语句“ALTER DATABASE RECOVER MANAGED STANDBY DATABASE”启用该进程,那么前台进程将会做恢复。如果加上DISCONNECT语句,那么恢复过程将在后台进程,发出该语句的进程可以继续做其它的事情,

4.LSP(logical standby process)进程

只有逻辑备库才会有该进程。LSP进程控应用Redo日志到逻辑备库。

二、Oracle DG的架构

  1.主库和备库

主库是生产环境中的数据库,处理日常的业务操作。备库是主库的副本,用于在需要时接管主库的工作负载。主备库之间通过网络进行通信和数据传输。

   2.日志发送(Redo Send):

主库(Primary Database)在运行过程中,会源源不断地产生Redo日志,这些日志需要发送到备库(Standy Database)端,这个发送动作可以由主库的LGWR或者ARCn进程完成,不同的归档目的地可以使用不同的方法,但是对于一个目的地,只能选用一种方法。

传输方式如下:

(1)使用ARCH进程

① 主库(Primary Database)不断产生Redo日志,这些日志被LGWR进程写到联机日志。

② 当一组联机日志被写满后,会发生日志切换(Log Switch),并且会触发本地归档,本地归档位置是采用“LOG_ARCHIVE_DEST_1='LOCATION=/path'”格式定义的。例如,修改本地归档的SQL语句可以是:“ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/arch' SCOPE=BOTH;”。

③ 完成本地归档后,联机日志就可以被覆盖重用。

④ ARCH进程通过网络把归档日志发送给备库(Standby Database)的RFS(Remote File Server)进程。

⑤ 备库端的RFS进程把接收的日志写入到归档路径中。

⑥ 若是物理DG的话,则备库的MRP(Managed Recovery Process)进程进行Redo Apply;若是逻辑DG的话,则备库的LSP(logical standby process)进程进行SQL Apply进而同步数据。

用ARCH模式传输不写Standby Redo Logs,直接保存成归档文件存放于Standby端。

逻辑备库接收日志后将日志转换成SQL语句,然后逻辑备库上的LSP进程执行这些SQL语句进而实现主备库的数据同步,这种方式叫SQL Apply。物理备库接收完主库生成的Redo数据后,MRP进程以介质恢复的方式实现同步,这种方式也叫Redo Apply。

使用ARCH进程传递最大问题在于:主库只有在发生归档时才会发送日志到备库。如果主库异常宕机,那么联机日志中的Redo内容就会丢失,所以,使用ARCH进程无法避免数据丢失的问题,要想避免数据丢失,就必须使用LGWR,而使用LGWR又分SYNC(同步)和ASYNC(异步)两种方式。

(2)使用LGWR进程的SYNC方式

① 主库产生的Redo日志要同时写到日志文件和网络,也就是说LGWR进程把日志写到本地日志文件的同时还要发送给本地的LNSn进程(LGWR Network Server Process),再由LNSn进程把日志通过网络发送给远程的目的地,每个远程目的地对应一个LNS进程,多个LNS进程能够并行工作。

② LGWR必须等待写入本地日志文件操作和通过LNSn进程的网络传送都成功,主库上的事务才能提交,这也是SYNC的含义所在。

③ 备库的RFS进程把接收到的日志写入到Standby Redo Log日志中。

④ 主库的日志切换也会触发备库上的日志切换,即主库对Standby Redo Log的归档,然后触发备库的MRP或者LSP进程应用归档日志。

(3)使用LGWR进程的ASYNC方式:

使用LGWR SYNC方法的可能问题在于,如果日志发送给备库过程失败,那么LGWR进程就会报错。也就是说主库的LGWR进程依赖于网络状况,有时这种要求可能过于苛刻,这时就可以使用LGWR ASYNC方式。它的工作机制如下所示:

① 主库一旦产生Redo日志,LGWR就把日志同时提交给日志文件和本地LNS进程,但是LGWR进程只需成功写入日志文件就可以,不必等待LNSn进程的网络传送成功。

② LNSn进程异步地把日志内容发送到备库,多个LNSn进程可以并发发送。

③ 主库的联机Redo日志文件写满后发生Log Switch,触发归档操作,也触发备库对Standby Redo Log的归档;然后触发MRP或者LSP进程恢复归档日志

3.日志接收(Redo Receive):

备库的RFS(Remote File Server)进程接收到日志后,就把日志写到Standby Redo Log或者Archived Log文件中,具体写入哪个文件,取决于主库的日志传送方式。如果写到Standby Redo Log文件中,那么当主库发生日志切换时,也会触发备库上的Standby Redo Log的日志切换,并把这个Standby Redo Log归档;如果是写到Archived Log,那么这个动作本身也可以看作是个归档操作。在日志接收中归档日志会被放在LOG_ARCHIVE_DEST_n指定的位置。

4.日志应用(Redo Apply):

日志应用服务,就是在备库上重演主库的日志,从而实现两个数据库的数据同步。根据Redo Apply发生的时间不同可以分成两种:一种是实时应用(Real-Time Apply),这种方式必须包含Standby Redo Log,每当日志被写入Standby Redo Log时,就会触发恢复,使用这种方式的好处在于可以减少数据库切换(Switchover或者Failover)的时间,因为切换时间主要用在剩余日志的恢复上。另一种是归档应用,这种方式在主库上发生日志切换,会触发备库的归档操作,归档完成后触发恢复。这也是默认的恢复方式。

根据备库重演日志方式的不同,可分为Redo Apply和SQL Apply:若是物理DG的话,则备库的MRP(Managed Recovery Process)进程进行Redo Apply。物理备库接收完主库生成的Redo数据后,MRP进程以介质恢复的方式实现同步,这种方式叫Redo Apply。若是逻辑DG的话,则备库的LSP(logical standby process)进程进行SQL Apply进而同步数据。逻辑备库接收日志后将日志转换成SQL语句,然后逻辑备库上的LSP进程执行这些SQL语句进而实现主备库的数据同步,这种方式叫SQL Apply。

三、ADG备库有哪几种类型

1.物理备库

物理DG使用的是Media Recovery技术,在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。在Oracle 11g之前的物理DG只能在MOUNT状态下进行恢复,虽然可以以只读方式打开备库,但是不能应用日志,而到了Oracle 11g时备库可以在打开的情况下执行恢复操作了,这称为ADG(Active Data Guard)。物理DG实时应用进程为MRP进程。需要注意的是,主库在开启闪回数据库功能后,物理备库并不会开启闪回数据库的功能。

2.逻辑备库

逻辑DG使用的是LogMiner技术,通过把日志内容还原成SQL语句,然后通过SQL引擎执行这些SQL语句。逻辑DG不支持所有的数据类型,这些不支持的数据类型可以在视图DBA_LOGSTDBY_UNSUPPORTED中查看。如果使用了这些数据类型,那么不能保证主备库完全一致。Logical Standby可以在恢复的同时进行读写操作。逻辑DG实时应用进程为LSP进程。需要注意的是,在逻辑DG中,SYS用户下的对象不会同步。要想创建一个逻辑备库需要先创建一个物理备库,然后再将其转换成逻辑备库。

3.快照备库

当Physical Standby转换为Snapshot Standby时,它是一个完全可更新的Standby数据库。Snapshot Standby依然会接收来自主库的归档文件,但是它不会应用。当Snapshot Standby转换为Physical Standby时,所有在Snapshot Standby数据库的操作被丢弃之后,Physical Standby数据库才会应用Primary数据库的Redo数据。

最后需要说明的一点是,物理DG可以转换为逻辑DG,但是逻辑DG不能转换为物理DG。快照DG和物理DG可以相互转换。

四、ADG保护模式(Protection Mode):

1.最大保护

最大保护模式能够确保绝无数据丢失,该模式要求主库所有的事务在提交前其Redo不仅被写入到本地的Online Redo Logs,还要同时写入到备库的Standby Redo Logs,并确认Redo数据至少在一个备库中可用(如果有多个的话),然后才会在主库上提交。如果出现了导致备库不可用故障(例如网络中断),那么主库会被关闭。因此,在该保护模式下,数据库必须配置SYNC传输模式,且必须和备库连通,否则会导致主库不能启动。

2.最高可用

最高可用模式在不影响主库可用地前提下,提供最高级别的数据保护。其实现方式与最大保护模式类似,也是要求本地事务在提交前必须至少写入一台备库的Standby Redo Logs中,不过与最大保护模式不同的是,如果出现故障导致备库无法访问,那么主库并不会被关闭,而是自动转为最高性能模式,等备库恢复正常之后,主库又会自动转换成最高可用模式。最高可用模式适用于想要确保获得零数据丢失保护,但不想让生产数据库受网络/备用服务器故障影响的企业。

3.最高性能

在最高性能模式下,事务可以随时提交。如果网络条件理想的话,那么这种模式能够提供类似最高可用性的数据保护,而仅对主库的性能有轻微影响。这也是在创建备库时,系统的默认保护模式。最高性能模式区别于最大保护模式的地方是,它并不需要将日志信息实时的传递到备库上,也不需要确保日志在其中的至少一台备库上应用。

五、Switchover和Failover的区别

1.Switchover是指主库转换成备库,然后将原备库转换成新主库;而Failover是指将备库转换成主库。

2. 使用场合不同:Switchover用于有准备的、计划之中的切换,通常是系统升级、数据迁移等常态任务;Failover用于意料之外的突发情况,例如异常断电、自然灾难等等。

3.数据丢失程度不同:Switchover不会丢失数据,Failover通常意味着有部分数据丢失。

4.善后处理的不同:Switchover之后DG环境不会被破坏,仍然有Primary、Standby两种角色的系统存在,但是Failover之后,DG环境就会被破坏,一般情况下需要重建。但是,若主库或备库开启了闪回功能,则都可以通过闪回数据库功能恢复DG环境。

这篇关于DBA面试(ORACLE ADG篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918183

相关文章

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

贝壳面试:什么是回表?什么是索引下推?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 1.谈谈你对MySQL 索引下推 的认识? 2.在MySQL中,索引下推 是如何实现的?请简述其工作原理。 3、说说什么是 回表,什么是 索引下推 ? 最近有小伙伴在面试 贝壳、soul,又遇到了相关的

毕业前第二次面试的感慨

距面试已经过去了有几天了,我现在想起来都有说多的恨感慨。 我一直都是想找刚刚起步的企业,因为这能让我学到更多的东西,然而正好有一家企业是刚起步的,而且他还有自己的产品专利,可以说这是一家,即是创业又是刚起步的公司,这家公司回复了我投给他的简历,这家企业想进一步了解我的情况,因为简历上我符合这家企业的基本要求,所以要进一步了解。 虽然面试的过程中,他给我的面试题,我做得并不是很理想,

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co