数据库程序员面试分类真题17_第1页
数据库程序员面试分类真题17_第2页
数据库程序员面试分类真题17_第3页
数据库程序员面试分类真题17_第4页
数据库程序员面试分类真题17_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库程序员面试分类真题17简答题1.

RAC环境中的SCANIP的作用是什么?正确答案:从Oracle11gR2RAC开始引入SCAN(SingleClientAccessName,(江南博哥)集群的单客户端访问名称)IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCANIP和SCAPIPLISTENER。在客户端的tnsnames.ora配置文件中,只需要配置SCANIP,然后用户即可访问数据库。客户端通过SCANIP、SCANIPLISTENER来负载均衡地连接到RAC数据库。同之前各版本的RAC相比,使用SCANIP的好处就是,当后台RAC数据库添加、删除节点时,客户端配置信息无须修改。SCAN提供一个域名来访问RAC,域名可以解析1~3个(注意,最多3个)SCANIP,可以通过DNS、GNS或/etc/hosts文件来解析实现。需要注意的是,SCANIP、VIP和PublicIP必须属于同一子网。[考点]RAC

2.

RAC环境中的HAIP(HighlyAvailableIP)的作用是什么?正确答案:在Oracle之前,私网的冗余一般是通过在OS上做网卡绑定(如Bond等)来实现的,从Oracle版本开始推出HAIP(HighlyAvailableIP)技术替代了操作系统层面的网卡绑定技术,其功能更强大、更兼容。HAIP通过其提供的独特的169.254.*网段的IP地址,实现集群内部连接的高可用及负载均衡。所以,在或更高版本安装RAC的时候需要注意169.254.*的IP地址不能被占用。有了HAIP技术则不再需要借助任何第三方的冗余技术来实现私网网卡的冗余。[考点]RAC

3.

什么是DG?正确答案:首先,DG(DataGuard,数据卫士)不是一个备份恢复的工具,然而,DG却拥有备份的功能,在物理DG下它可以和主库一模一样,但是它存在的目的并不仅仅是为了备份恢复数据,应该说它的存在是为了确保企业数据的高可用性、数据保护以及灾难恢复。DBA可以通过将一些操作(例如查询报表)转移到备库执行的方式来减小主库的压力,构建高可用的企业数据库应用环境。

在DG环境中,至少有两个数据库,一个处于OPEN状态对外提供服务,这个数据库叫作主库(PrimaryDatabase);另一个处于恢复状态,叫作备库(StandbyDatabase)。通常情况下,主库对外提供服务,用户在主库上进行操作,操作被记录在联机日志和归档日志中,这些日志通过网络传递给备库,然后在备库上被应用,从而实现主库和备库的数据同步。Oracle对这一过程进一步地优化设计,使得日志的传递、恢复工作更加自动化、智能化,并且提供一系列参数和命令,简化了DBA工作。如果软硬件升级,那么可以把备库切换为主库继续对外服务,这样既减少了服务停止时间,数据又不会丢失。如果异常原因导致主库不可用,那么也可以把备库强制切换为主库继续对外服务,这时数据损失都和配置的数据保护级别有关系。所以,Primary和Standby只是一个角色概念,并不固定在某个数据库中。[考点]DG

4.

DG有哪些优缺点?正确答案:DG的优点主要有①灾难恢复及高可用性;②全面的数据保护;③有效利用系统资源;④在高可用及高性能之间更加灵活的平衡机制;⑤故障自动检查及解决方案;⑥集中的、易用的管理模式;⑦自动化的角色转换。

DG的缺点主要有①由于传输整个日志文件,所以需要较高的网络传输带宽。②在Oracle11g之前的物理备库虽然可以以只读方式打开,然后执行查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,那么将延长切换的时间。从Oracle11g开始,ADG可以在数据库打开的情况下应用日志,这极大地提高了DG的应用范围。③逻辑备库不能支持某些特定的数据对象和数据类型。④不支持双向复制,所以无法应用于信息集成的场合。⑤只能复制整个数据库,不能选择某个SCHEMA或表空间或表进行单独复制。⑥不支持异构的系统环境,需要相同的操作系统版本和数据库版本(Oracle11g支持部分异构平台)。[考点]DG

5.

DG可以分为哪几类?正确答案:DG根据备库重演日志方式的不同,可以分为物理DG(PhysicalDG)、逻辑DG(LogicalDG)和快照DG(SnapshotDG),它们对应的数据库分别可以称为PhysicalStandby、LogicalStandby和SnapshotStandby。

物理DG:物理DG使用的是MediaRecovery技术,在数据块级别进行恢复,这种方式没有数据类型的限制,可以保证两个数据库完全一致。在Oracle11g之前的物理DG只能在MOUNT状态下进行恢复,虽然可以以只读方式打开备库,但是不能应用日志,而到了Oracle11g时备库可以在打开的情况下执行恢复操作了,这称为ADG(ActiveDataGuard)。物理DG实时应用进程为MRP进程。

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

快照DG:当PlaysicalStandby转换为SnapshotStandby时,它是一个完全可更新的Standby数据库。SnapshotStandby依然会接收来自主库的归档文件,但是它不会应用。当SnapshotStandby转换为PhysicalStandby时,所有在SnapshotStandby数据库的操作被丢弃之后,PhysicalStandby数据库才会应用Primary数据库的Redo数据。[考点]DG

6.

DG有哪3种保护模式?它们的区别是什么?正确答案:DG提供了3种数据保护模式(ProtectionMode):最大保护(MaximumProtection)、最高性能(MaximumPerformance)和最高可用(MaximumAvailability),见下表。比较项目最大保护最高可用最商陆能简介最大保护模式能够确保绝无数据丢失,该模式要求主库所有的事务在提交前其Redo不仅被写入本地的OnlinleRedoLogs,还要同时写入备库的StandbyRedoLogs,并确认Redo数据至少在一个备库中可用(如果有多个的话),然后才会在主库上提交。如果出现了导致备库不可用故障(例如网络中断),那么主库会被关闭最高可用模式在不影响主库可用的前提下,提供最高级别的数据保护。其实现方式与最大保护模式类似,也是要求本地事务在提交前必须至少写入一台主库的StandbyRedoLogs中,不过与最大保护模式不同的是,如果出现故障导致备库无法访问,那么主库并不会被关闭,而是自动转为最高性能模式,等备库恢复正常之后,主库又会自动转换成最高可用模式。最高可用模式适用于想要确保获得零数据丢失保护,但不想让生产数据库受网络/备用服务器故障影响的企业在最高性能模式下,事务可以随时提交。如果网络条件理想,那么这种模式能够提供类似最高可用性的数据保护,而仅对主库的性能有轻微影响。这也是在创建备库时,系统的默认保护模式。最高性能模式区别于最大保护模式的地方是,它并不需要将日志信息实时地传递到备库上,也不需要确保日志在其中的至少一台备库上应用切换命令ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPROTECTION;AITERDATABASESETSTANDBYDATABASETOMAXIMIZEAVAILABILITY;ALTERDATABASESETSTANDBYDATABASETOMAXIMIZEPERFORMANCEN;数据丢失隋况零数据丢失零数据丢失最小数据丢失主库事务完成情况主库Redo需要同时写入主库、至少一个备库,主库事务才能完成主库Rede需要同时写入主库、至少一个备库,主库事务才能完成主库事务可以随时提交是否默认的保护模式否否是性能影响对数据库性能影响最大界于最大保护和最高性能之间对数据库性能影响最小网络传输模式同步(SYNC)同步(SYNC)使用LGWR进程传递归档时采用同步(SYNC)或异步(ASYNC),使用ARCH进程传递归档时采用同步(SYNC)是否需要StandbyRedoLogsYESYES可没有,但推荐有Redo写进程LGWRLGWRLGWR或ARCH磁盘写操作AFFIRMAFFIRMAFFIRM或NOAFFIRM优点该模式可以保证备库没有数据丢失该模式可以在没有问题出现的隋况下,保证备库没有数据丢失,是—种折中的方法避免了备库对主数据库的性能和可用性影响缺点要求网络高度稳定可靠,如果出现了导致各库不可用故障(比如网络中断),那么主库会被关闭。备库的自动关闭会影响到主库的可用性,同时需要备库恢复后才能提交,对阿络等客观条件要求非常高,主库的性能会因此受到非常大的冲击。最大保护模式损害了系统的可用性在正常运行的过程中缺点是主库的性能受到诸多因素的影响。要求备库必须配置StandbyRedoLogs,而主库必须使用LGWRSYNCAFFIRM方式归档到各库如果与主库提交的事务相关的恢复数据没有发送到备库,那么这些事务数据将被丢失,不能保证数据无损失。如果主库发生灾难性故障,日志全部损失,那么备库和主库可能会出现一个左右的日志信息差异。当然,在这种方式下,可以通过设置主库增加归档频率来缩小可能的数据损失。最高性能模式损害了系统的数据安全性[考点]DG

7.

Switchover和Failover的区别是什么?正确答案:一个DG环境中只有两种角色:Primary和Standby。所谓角色转换就是让数据库在这两种角色中切换,切换也分两利:Switchover和Failover。关于角色切换需要注意以下几点:

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

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

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

4)善后处理的不同。Switchover之后DG环境不会被破坏,仍然有Primary、Standby两种角色的系统存在,但是Failover之后,DG环境就会被破坏,一般情况下需要重建。但是,若主库或备库开启了闪回功能,则都可以通过闪回数据库功能恢复DG环境。例如,PROD1为主库,SBDB1为备库;若PROD1意外宕机,则SBDB1执行Failover操作变为主库;此时若想恢复DG环境,则有3种处理办法:

①将PROD1利用闪回数据库功能闪回到SBDB1变为主库的SCN时间点,然后将PROD1转换为备库,最后利用Switchover转换为最初的环境。在这种情况下,PROD1需要开启闪回。

②将SBDB1利用闪回数据库功能闪回到SBDB1变为主库的SCN时间点,此时SBDB1仍然是主库的角色,然后将SBDB1转换为备库。在这种情况下,SBDB1需要开启闪回,而且会丢失部分数据。

③利用RMAN重新搭建DG环境。

Switchover切换的主要SQL语句为

Failover切换的主要SQL语句为

执行闪回数据库后,切换主库为备库的SQL语句为

alterdatabaseconverttophysicalstandby;[考点]DG

8.

主库丢失归档,物理DG如何恢复?正确答案:面试DBA岗位,面试官对于DG环境常常会问到,若是主库丢失了归档文件,而这些归档文件还未来得及传递到备库,那么物理备库是否只能通过重建的方式来恢复呢?这道面试题是作者亲身经历,当时以为只能重建备库,但最后经过查找文档找到了解决办法,可以通过对主库进行基于SCN的增量备份来恢复物理DG。[考点]DG

9.

备库数据文件异常,物理DG如何恢复?正确答案:有的时候由于备库空间不足,在主库添加了数据文件后,导致备库数据文件的缺失,可能很久之后才发现,但是由于归档的缺失等其他原因而导致备库不能正常应用Redo日志。还有其他情况可能导致备库的数据文件不能正常ONLINE,在这种情况下,可以在主库上利用CONVERT命令备份一个数据文件然后复制到备库即可。若是备库归档文件比较全,则可以直接在备库创建数据文件后应用Redo日志即可,而不需要从主库复制数据文件。[考点]DG

10.

DG中GAP有几种解决方案?正确答案:当主库的某些日志没有成功传送到备库,那么这时候就发生了归档裂缝(ArchiveGap)。目前Oracle提供了两种日志GAP的检测和处理机制,分别是自动GAP处理(AutomaticGapResolution)和FAL进程GAP处理(FALGapResolution)。自动GAP处理即主库上的ARCn进程会每分钟检查备库上的日志GAP情况并做相应处理。FAL(FetchArchiveLog)是通过配置FAL_SERVER和FAL_CLIENT实现GAP检测的一种机制,它是备库主动发起的“取”日志的过程。备库就是FAL_CLIENT,它从FAL_SERVER中取这些GAP。Oracle会首先尝试使用FAL进程处理GAP,当发现FAL机制并没有配置生效的时候,进而尝试使用自动GAP处理。

FAL进程只在物理备库存在。FAL进程提供了一个CLIENT/SERVER的机制,用来解决检测在主库产生的连续的归档日志,而在备库接收的归档日志不连续的问题。该进程只有在需要的时候才会启动,而当工作完成后就关闭了,因此在正常情况下,该进程是无法看见的。

1.物理DG手动解决GAP

在一些特殊情况下,如果GAP不能自动解决,那么就需要手动执行中断恢复。通过查询视图V$ARCHIVE_GAP可以确定断档的是哪些日志。

可以看到,当前物理备库丢失目志文件为线程1的序号10~12。接下来确定归档日志文件的路径(假设在主数据库上的本地归档目的地是LOG_ARCHIVE_DEST_1):

SQL>SELECTNAMEFROMV$ARCHIVED_LOGWHERETHREAD#=1ANDDEST_ID=1ANDSEQUENCE#BETWEEN10AND12;

NAME

--------------------------------------------------------

/arch/thread1_dest/arch_1_10.arc

/arch/thread1_dest/arch_1_11.arc

/arch/thread1_dest/arch_1_12.arc

接下来,复制这些日志文件到物理备库,然后在物理备库上使用“ALTERDATABASEREGISTERLOGFILE”语句来注册这些归档日志,如下:

SQL>ALTERDATABASEREGISTERLOGFILE'/arch/thread1_dest/arch_1_10.arc';

也可以使用如下的SQL语句:

ALTERDATABASEREGISTERORREPLACELOGFILE'/arch/thread1_dest/arch_1_10.arc';

ALTERDATABASEREGISTERORREPLACEPHYSICALLOGFILE'/arch/thread1_dest/arch_1_11.arc';

在物理备库上注册这些日志文件之后,重新打开重做应用进程。如果断档的归档日志较多,那么可以使用如下的SQL语句来生成要执行的SQL语句(如下的SQL也适用于逻辑DG):

SELECT'ALTERDATABASEREGISTERORREPLACELOGICALLQGFILE"/arch/thread1—dest/arch_1_'||a||'.arc";'LOGICAL_DG,

'ALTERDATABASEREGISTERORREPLACELOGFILE"/arch/thread1_dest/arCh_1_'||a||'.arc";'PHYSICAL_DG

FROM(SELECTLEVELAFROMDUALCONNECTBYLEVEL<=12)

WHEREA>=10;

需要注意的是,视图V$ARCHIVE_GAP只返回当前妨碍重做应用继续的下一个中断。在解决中断并重启重做应用进程后,再次在物理备库上查询V$ARCHIVE_GAP视图来确定下一个中断序号,如果有的话,重复这个过程直到没有更多的中断。

2.逻辑DG手动解决GAP

在逻辑备库上查询DBA_LOGSTDBY_LOG视图可以确定是否有归档中断。例如,下面的查询指出断档号为16~18:

SYS@orclasm>COLUMNFILE_NAMEFORMATa60

SYS@orclasm>SELECTTHREAD#,SEQUENCE#,FILE_NAME

2

FROMDBA_LOGSTDBY_LOGL

3

WHERENEXT_CHANGE#NOTIN(SELECTFIRST_CHANGE#FROMDBA_LOGSTDBY_LOGWHEREL.THREAD#=THREAD#)

4

ORDERBYTHREAD#,SEQUENCE#;

THREAD#

SEQUENCE#FILE_NAME

---------

---------

---------------------------------

1

16/arch/oracle/arch_1_16.arc

1

18/arch/oracle/arch_1_18.arc

接下来复制丢失的日志文件到逻辑备库,并在逻辑备库上使用“ALTERDATABASEREGISTERLOGICALLOGFILE”来注册这些日志文件。例如:

SQL>ALTERDATABASEREGISTERLOGICALLOGFILE

'/arch/orade/arch_1_16.arc';

在逻辑备库上注册这些日志文件之后,重启SQL应用。和物理DG一样,在逻辑备库上的DBA_LOGSTDBY_LOG视图只返回当前妨碍SQL应用继续的下一个中断。在解决指定的中断并重启SQL应用之后,再次在逻辑备库上查询DBA_LOGSTDBY_LOG视图,以确定下一个中断序号,如果有的话,重复这个过程直到没有更多的中断。

需要注意的是,如果需要的归档日志已经不在主库上,但是有归档日志的RMAN备份,那么可以通过RMAN恢复把缺少的归档日志进行还原,如下:

SETARCHIVELOGDESTINATIONTO'/arch';

RESTOREARCHIVELOGFROMLOGSEQ7;

如果断档的归档日志已经丢失,且RMAN又没有备份,那么在Oracle10g之前没有办法修复了,只能重建DG,但是从Oracle10g开始可以采用主库基于SCN的增量备份来恢复DG。[考点]DG

11.

物理DG如何启用和停止日志应用服务?正确答案:(1)启用日志应用:

ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEDISCONNECTFROMSESSION;

(2)启用实时的日志应用:

ALTERDATABASERECOVERMANAGEDSTANDBYDATABASEUSINGCURRENTLOGFILEDISCONNECTFROMSESSION;

DISCONNECTFROMSESSION子句并非必需,该子句的作用是指定启动完应用后自动退出到命令操作符前。如果不指定该子句,那么当前SESSION就会一直停留处理Redo应用,如果想做其他操作,那么就只能新建一个连接。

(3)停止日志应用服务:

ALTERDATABASERECOVERMANAGEDSTANDBYDATABASECANCEL;

(4)查看DG备机是否启用了日志应用,有两种办法可以判断:①可以查看是否有mrp进程,如果看不到mrp进程,那么说明没有启用日志应用;②查看V$ARCHIVE_DEST_STATUS的RECOVERY_MODE列,若启用了实时应用,则在Oracle11g显示MANAGEDREALTIMEAPPLY,在Oracle10g显示MANAGED。

[oracle@dg~]$ps-ef|grepora_mrp

oracle

19592

1

010:15?

00:00:01ora_mrp0_phydb[考点]DG

12.

DG中如何查看日志的应用情况?正确答案:检查是否存在GAP的SQL语句:

SELECTTHREAD#,LOW_SEQUENCE#,HIGH_SEQUENCE#FROMV$ARCHWE_GAP;

物理DG日志应用情况:

SELECTTHREAD#,NAME,SEQUENCE#,ARCHIVED,APPLIED,A.NEXT_CHANGE#FROM

V$ARCHIVED_LOGA

WHERE

A.SEQUENCE#>=(SELECTMAX(B.SEQUENCE#)-3FROMV$LOGBWHEREB.THREAD#=A.THREAD#)

AND

RESETLOGS_CHANGE#=(SELECTD.RESETLOGS_CHANGE#FROMV$DATABASED)

ORDER.BYA.THREAD#,A.SEQUENCE#;[考点]DG

13.

如何查看物理备库的进程信息?正确答案:SELECTA.INST_ID,A.PROCESS,A.CLIENT_PROCESS,A.CLIENT_PID,

A.STATUS,A.GROUP#

GROUP_#,A.THREAD#,A.SEQUENCE#,A.DELAYMINS,

A.RESETLOG_ID,C.SID,C.SERIAL#,A.PID

SPID,B.PNAME

FROMGV$MANAGED_STANDBYA,GV$PROCESSB.GV$SESSIONC

WHEREA.PID=B.SPIDANDB.ADDR=C.PADDRANDA.INST_ID=B.INST_IDANDB.INST_ID=C.INST_ID

ORDERBYA.INST_ID,B.PNAME;

1)PROCESS:进程名称,如ARCH、RFS、MRP0等。

2)CLIENT_PID:在备库查询时对应的Primary数据库中的进程,如ARCH、LGWR等,在主库查询时就是后台进程。

3)SEQUENCE#:归档序号。

4)STATUS:进程的当前状态,值较多,常见的有:

①ALLOCATED:正准备连接Primary数据库。

②ATTACHED:正在连接Primary数据库。

③CONNECTED:已连接至Primary数据库。

④IDLE:空闲中。

⑤RECEIVING:归档文件接收中。

⑥OPENING:归档文件处理中。

⑦CLOSING:归档文件处理完,收尾中。

⑧WRITING:Redo数据库写向归档文件中。

⑨WAIT_FOR_LOG:等待新的Redo数据中。

⑩WAIT_FOR_GAP:归档有中断,正等待中断的那部分Redo数据。

APPLYING_LOG:应用Redo数据中。[考点]DG

14.

如何手动注册日志?正确答案:如果有日志文件未被传输或未被注册到备库,那么可以使用如下命令手动注册到备库。下面的SQL语句可以生成物理和逻辑DG注册的日志,日志号为1980~2000:

SELECT'alterdatabaseregisterorreplacelogicallogfile"/arch/log_1_'||A||'_666200636.arc";'LOGICAL_DG,

'alterdatabaseregisterorreplace

logfile"/arch/log_1_'||A||'_666200636.arc";'PHYSICAL_DG

FROM(SELECTLEVELAFROMDUALCONNECTBYLEVEL<=2000)WHEREA>=1980;[考点]DG

15.

在逻辑DG中,如何启动和关闭日志应用?正确答案:ALTERDATABASESTOPLOGICALSTANDBYAPPLY;--停止应用,等待事务完成

ALTERDATABASEABORTLOGICALSTANDBYAPPLY;--不等待事务完成就停止

ALTERDATABASESTARTLOGICALSTANDBYAPPLYIMMEDIATE;--实时

ALTERDATABASESTARTLOGICALSTANDBYAPPLY;--非实时

如何知道是否开启了实时应用呢?可以查询V$LOGSTDBY_STATE视图或查询是否有lsp进程。

[考点]DG

16.

如何查看逻辑DG日志文件的应用情况?正确答案:SELECT

FILE_NAME,SEQUENCE#ASSEQ#,FIRST_CHANGE#ASFCHANGE#,NEXT_CHANGE#ASNCHANGE#,TIMESTAMP,DICT_BEGINASBEG,

DICT_ENDASEND,THREAD#ASTHR#,APPLIED

FROMDBA_LOGSTDBY_LOGORDERBYTHREAD#,SEQUENCE#;[考点]DG

17.

如何查看逻辑DG备库SQLApply的进度?正确答案:[考点]DG

18.

如何查看逻辑DG备库是否有任何DDL/DML语句未成功应用?正确答案:SELECTA.EVENT_TIME,A.CURRENT_SCN,AiCOMMIT_SCN,XIDUSN,XIDSLT,

XIDSQN,TO_CHAR(EVENT)EVENT,A.STATUS_CODE,STATUSEVENT_STATUS

FROMDBA_LOGSTDBY_EVENTSAWHEREA.EVENT_TIME>=SYSDATE-10/1660ORDERBYA.EVENT_TIME;[考点]DG

19.

如何查看逻辑DG备库SQLApply的状态?正确答案:

注意STATE列,该列可能有下述的几种状态。

1)INITIALIZING:LogMinerSESSION已创建并初始化。

2)LOADINGDICTIONARY:SQL应用调用LogMiner字典。

3)WAITINGONGAP:SQL应用正在等待日志文件,可能有中断。

4)APPLYING:SQL应用正在工作。

5)WAITlNGFORDICTIONARYLOGS:SQL应用正在等待LogMiner字典信息。

6)IDLE:SQL应用工作非常出色,处于空闲状态。

7)SQLAPPLYNOTON:没有开启应用。[考点]DG

20.

如何取消逻辑DG中部分对象或事务的同步?正确答案:可以利用DBMS_LOGSTDBY.SKIP存储过程跳过特定表或特定用户的DML事务或部分DDL语句。这些跳过的对象或事务可以通过视图DBA_LOGSTDBY_SKIP和DBA_LOGSTDBY_SKIP_TRANSACTION查看。

逻辑各库还有很多其他非常实用的SQL语句,这里就不列举了,读者可以关注作者的微信公众号,里面每天会推送一个非常实用的SQL语句。[考点]DG

21.

什么是OGG?它有哪些优缺点?正确答案:OGG(OracleGoldenGate)属于OracleFusionMiddleware产品线,2009年被Oracle收购,它是OracleStream的替代者。OGG软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库的同步。OGG可以在异构的IT(InformarionTechnology,信息技术)基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时复制,从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,OGG可以实现一对一、广播(一对多)、聚合(多对一)、双向复制、层叠、点对点、级联等多种灵活的拓扑结构。

OGG能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。和传统的逻辑复制一样,OGG的实现原理是首先通过抽取源端的Redo日志或者ArchiveLog,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端的数据同步。[考点]OGG

22.

RAC、DG和OGG的区别有哪些?正确答案:RAC和DG是高可用体系中的常用的两种工具,每个工具既可以独立应用,也可以相互配合使用。但是它们各自的侧重点不同,适用场景也不同。

RAC是本地的高可用集群,每个节点用来分担不同或相同的应用,以解决运算效率低下、单点故障这样的问题,它是几台硬件相同或不相同的服务器加一个共享存储构成的。RAC的强项在于解决单点故障和负载均衡,所以,RAC方案常用于7*24的核心系统,但RAC方案中的数据只有一份,尽管可以通过RAID等机制避免存储故障,但是数据本身是没有冗余的,因此需要加强备份。

DG是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,是一种异地容灾的解决方案。DG通过冗余数据的方式来提供数据保护,通过日志同步机制保证冗余数据和主库之间的同步,这种同步可以是实时、延时、同步或异步等多种形式。DG常用于异地容灾和小企业的高可用性方案,可以在备库上执行只读的查询操作,从而分散主库的性能压力。

OGG软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库的同步。OGG可以实现一对一、广播(一对多)、聚合(多对一)、双向复制、层叠、点对点、级联等多种灵活的拓扑结构,可以实现只复制某几个表的功能。

Oracle高可用性产品比较见下表。

双机热备/FailsafeOPS(OracleParallelServer)RACDG(DataGuard)OGG共享存储不是有有独立存储不是保护类型热备只有1个实例,1个数据库,做不了并发和负载均衡实例冗余,负载均衡实例级冗余数据库层次冗余schema或表级别冗余需要的软硬件资源只有两台机器和磁盘阵列,有一个漂移的IP,不能共享存储有两台机器和磁盘阵列,有两个虚拟IP可以有多台机器和磁盘阵列,1个节点有1个虚拟IP有独立的机器和独立的存储有独立的机器和独立的存储优缺点Failsafe是免费的,一台服务器闲置,硬件浪费较大在并发读写性能上较差读写并发性能较好,但是对于DBA的技能和专业性要求较高,软件上也需要单独购买是一个轻量级的容灾系统,从Oracle11g开始还能在备库节点上进行读写和自动故障转移可以在表或schema级别实现实时复制[考点]OGG

23.

OGG的进程有哪些?正确答案:下图为OGG进程结构图。

如上图所示,OGG主要包含Manager进程、Extract进程、Pump进程和Replicat进程,下面对其进行说明。

1)Manager进程是OGG的控制进程,运行在源端和目标端上。它的主要作用包含启动、监控、重启OGG的其他进程;报告错误及事件;分配数据存储空间;发布阈值报告等。在目标端和源端有且只有一个Manager进程,在Windows系统上,Manager进程作为一个服务来启动,而在Linux/Unix系统上则是一个系统进程。

按照OGG的工作原理和体系结构,在每个复制数据源和目标端都需要安装一套OGG软件,同时需要分别启动一个OGG实例,一个OGG实例就是一个管理进程(ManagerProcess),这个管理进程也是整个OGG实例运行时最主要的控制进程。

2)Extract进程运行在数据库源端,负责从源端数据表或者日志中捕获数据。在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据;在初始数据同步完成以后,Extract进程负责捕获源端数据的变化(包括DML和DDL)。Extract进程会捕获所有已配置的需要同步的对象变化,但只会将已提交的事务抽取到本地的trail文件中用于同步。当事务提交时,所有和该事务相关的日志记录被以事务为单元顺序地记录到trail文件中。Extract进程利用其内在的Checkpoint机制,周期性地检查并记录其读写的位置,通常是写入本地的trail文件中。这种机制是为了保证如果Extract进程终止或者操作系统宕机,Manager进程在重启Extract进程后,OGG能够恢复到以前的状态,从上一个断点处继续往下运行,而不会有任何数据丢失,这样就可以保证数据的完整性。Extract进程的状态包括Stopped(正常停止)、Starting(正在启动)、Running(正在运行)和Abended(AbnormalEnd,异常结束)。GGSCI命令接口工具对于每个OGG实例可以支持并发300个Extract和Replicat进程。

trail文件:为了更有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论