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

付费下载

下载本文档

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

文档简介

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

OGG环境中如何使用OS命令?正确答案:可以使用sh命令临时执行OS命令,如下:

[考点]OGG

2.

OGG的告警日志文件的位置在哪里?正确答案:OGG的告警日志文件为$OGG_HOME/ggserr.log,如下:

[考点]OGG

3.

Logdump工具的作用是什么?正确答案:Logdump(LogFileDumpUtility)是一个OGG白带的trail文件分析工具,而且能加深对OGG工作原理的理解,非常值得花时间来研究它。Logdump组件默认在安装目录,是个可执行文件。直接输入logdump按回车键即可进入Logdump界面。[考点]OGG

4.

在一套复制环境中使用不同版本OGG需要注意什么问题?正确答案:分为以下几种情况:

1)若源端OGG版本低,目标端OGG版本高,则此种配置不需要做任何的额外改动,与两端是相同OGG版本的同步是完全一样的参数设置。

2)若源端OGG版本高,目标端OGG版本低,则此种配置需要在源头的抽取进程和传输进程的参数文件中设置TrailFile的格式,设置为与目的端OGG版本一样的格式,如下:

EXTTRAIL<wailfile>,FORMATRELEASE10.0

RMTTRAIL<trailfile>,FORMATRELEASE10.0

注意,以上命令中的10.0是目的端OGG的版本号。[考点]OGG

5.

错误“OGG-00446Couldnotfindarchivedlogforsequence”如何处理?正确答案:如果面试官问到维护OGG曾经碰到的一次故障处理过程,那么就可以拿这个错误作为案例来说明。OGG-00446主要是归档文件丢失引起,处理办法就是将缺失的归档日志找回来。如果找不到所需归档日志,那么可以按照如下2种办法来处理。

第一种办法是改变抽取进程的时间,但这可能会导致数据不一致,执行方法如下:

GGSCI(HP-HP)1>alterextractextl,beginnow

第二种办法是重新初始化,重新初始化过程如下。

源库查询到当前的SCN:

SQL>SELECTCURRENT_SCNFROMV$DATABASE;

CURRENT_SCN

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

12242466771468

基于SCN导出所需要的数据:

expdpXXX/XXXdirectory=DMPdumpfile=xpadb_20160125_01.dmpLOGFILE=xpadb_20160125.log

TABLES=BASE_ACTIONPOWER,BASE_BANKFLASHBACK_SCN=12242466771468

目标库导入所需要的数据:

impdpXXX/XXXDIRECTORY=OGGDDUMPFILE=xpadb20160125_01.dmpLOGFILE=impdp.xpadb_20160125_01.logREMAP_SCHEMA=xpadb:xpadrptREMAP_TABLESPACE=xpaddat:xpaddata

目标库重新开启应用进程:

[考点]OGG

6.

RMAN是什么?RMAN的特点有哪些?正确答案:为了更好地实现数据库的备份和恢复工作,Oracle提供了恢复管理器(RecoveryManager,RMAN)。RMAN是一个可以用来备份、恢复和还原数据库的应用程序,是随Oracle服务器软件一同安装的Oracle工具软件,通过执行相应的RMAN命令可以实现备份和恢复操作。RMAN可以用来备份和恢复数据库文件、归档日志、控制文件和系统参数文件,也可以用来执行完全或不完全的数据库恢复。RMAN有三种不同的用户接口:COMMANDLINE方式、GUI方式(集成在OEM中的备份管理器)、API方式(用于集成到第三方的备份软件中)。

RMAN具有如下特点:

1)功能类似物理备份,但比物理备份强大N倍。

2)可以把备份打包成备份集,也可以按固定大小分割备份集。

3)备份与恢复的过程可以自动管理。

4)可以使用脚本(存在RecoveryCatalog中)。

5)RMAN会检测和报告损坏的数据块。

6)可以跳过未使用的数据块。在执行RMAN备份时,RMAN不会备份从未被写入的数据块。而传统的备份方法无法知道已经使用了哪些数据块。

7)备份压缩,也可以压缩空块。RMAN使用一种Oracle特有的二进制压缩模式来节省备份设备上的空间。尽管传统的备份方法也可以使用操作系统的压缩技术,但RMAN使用的压缩算法是定制的,能够最大限度地压缩数据块中一些典型的数据。

8)执行增量备份,可以在块级别上实现增量。如果不使用增量备份,那么每次RMAN都备份已使用块;如果使用增量备份,那么每次RMAN都备份上次备份以来变化的数据块,这样可以节省大量的磁盘空间、I/O时间、CPU时间和备份时间。

9)块级别的恢复。可以只还原或修复标识为损坏的少量数据块。在RMAN修复损坏的数据块时,表空间的其他部分以及表空间中的对象仍可以联机。

10)在备份时不需要将表空间置于热备份模式。

11)可以使用RMAN来测试备份而不需要实际还原它们。[考点]RMAN

7.

RMAN可以用来备份哪些文件?不能用来备份哪些文件?正确答案:RMAN可以用来备份:①数据库:包括数据文件、控制文件、SPFILE(ServerParameterFile)文件;②表空间;③归档文件;④备份集。

RMAN不能用来备份:①联机日志文件(OnlineRedoLogs);②非READ/WRITE状态的可传输表空间;③PFILE(ParameterFile)文件。[考点]RMAN

8.

物理备份和逻辑备份分别是什么?正确答案:物理备份是指将数据库的所有物理文件完整复制到备份位置的一个过程。物理备份是所有物理文件的一个副本,例如,数据文件、控制文件、归档日志等。该副本能被存储在本地磁盘或磁带。物理备份是备份或恢复的基础,包括冷备份(非归档模式)和热备份(归档模式)。物理备份既可以在数据库打开的状态下进行,也可在数据库关闭的状态下进行,但是逻辑备份和恢复则只能在数据库打开的状态下进行。

逻辑备份是指使用工具exp或expdp将数据库对象的结构和数据导出到二进制文件的过程。当数据库对象被误操作而损坏后就可以使用工具imp或impdp利用备份的文件把数据对象导入数据库中进行恢复。逻辑备份是物理备份方式的一种补充,多用于数据迁移。

[考点]RMAN

9.

若一张表被执行了TRUNCATE操作,则如何恢复数据?正确答案:在求职数据库相关的岗位的时候,经常会被问到一个问题:在开发或维护过程中误操作TRUNCATE了一张表,如何恢复?这个时候应该由简到难地回答,可以按照如下的步骤进行回答:

1)是否有测试库,测试库的表数据和当前数据是否一致,若一致,则可以考虑从测试库把表数据导入被删除的库中。

2)是否有exp或expdp逻辑备份,若有,则可以导入被删除的库中。

3)是否有RMAN备份,若有,则可以将数据恢复到其他地方,然后将数据库exp出来,最后导入被删除的库中。

4)数据库是否开启了闪回,如果开了闪回则可以利用闪回数据库的特性找回数据。

5)利用表空间基于时间点的恢复技术(TSPITR)来恢复。

6)是否有归档,若有则可以采用LogMiner进行日志挖掘。

7)若以上这些办法都不能恢复,则可以尝试无备份情况下的恢复。这里推荐两种办法,fy_recoverdata包和gdul工具,关于这两种工具的具体使用案例可以参考作者的博客。[考点]RMAN

10.

Oracle的SCN是什么?正确答案:SCN(SystemChangeNumber,系统改变号)是一个由系统内部维护的序列号,SCN在数据库全局是唯一的。当系统需要更新的时候自动增加,它是系统中维持数据的一致性和顺序恢复的重要标志,是数据库中非常重要的一种数据结构。在数据库中,SCN作为一种时钟机制来标记数据库动作,比如,当事务发生时,数据库会用一个SCN来标记它。

在数据库中,SCN可以说是无处不在,例如,数据文件头、控制文件、数据块头、日志文件等都标记着SCN。也正因为如此,数据库的一致性维护和SCN密切相关。不管是数据的备份还是恢复都离不开SCN。由于SCN描述的是数据一致性的状态,所以,它会在各种涉及数据一致性的场合中起到重要作用。[考点]RMAN

11.

SCN可以分为哪几类?正确答案:SCN可以分为4类,系统检查点SCN(SystemCheckpointSCN)、文件检查点SCN(DatafileCheckpointSCN)、开始SCN(StartSCN)和结束SCN(StopSCN),参考下表。

[考点]RMAN

12.

如何查看系统当前SCN?正确答案:Oracle数据库提供了两种直接查看系统当前SCN的方法,一种是通过查询V$DATABASE中的CURRENT_SCN列,另外一种就是通过DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER得到,如下:

一般情况下,SCN1列和SCN2列的结果一致,但在系统比较繁忙的时候,可能SCN2比SCN1稍微大一点。[考点]RMAN

13.

SCN与时间戳如何相互转换?正确答案:一个SCN值总是发生在某一个特定的时刻,只不过由于粒度的不一样,通常会存在多个SCN对应同一个时间戳的情况。Oracle10g提供了两个新函数用于SCN和时间戳进行相互转换,这两个函数分别是SCN_TO_TIMESTAMP和TIMESTAMP_TO_SCN,通过对SCN和时间戳进行转换,极大方便了Oracle的很多备份和恢复过程。

1)SCN_TO_TIMESTAMP(scn_number):将SCN转换成时间戳。

2)TIMESTAMP_TO_SCN(timestamp):将时间戳转换成SCN。

通过以上这两个函数,最终Oracle将SCN和时间的关系建立起来。在Oracle10g之前,是没有办法通过函数转换得到SCN和时间的对应关系的,一般可以通过LogMiner分析日志获得。但是这两种函数转换要依赖于数据库内部表SMON_SCN_TIME,对于久远的SCN则不能转换。[考点]RMAN

14.

恢复分为哪些类型?正确答案:恢复分为实例恢复和介质恢复,具体分类如下图所示。

[考点]RMAN

15.

Oracle数据库的介质恢复包含哪两个过程?正确答案:介质恢复是基于物理备份恢复数据,它是Oracle数据库出现介质故障时恢复的重要保障。介质恢复包括块恢复、数据文件恢复、表空间恢复和整个数据库的恢复。介质恢复主要是针对错误类型中的介质失败,如果是少量的块失败,那么可以使用介质恢复中的块恢复来快速修复;但如果是其他情况的丢失,那么需要根据具体情况,可使用数据文件恢复、表空间恢复甚至全库恢复。

Oracle数据库的介质恢复实际上包含了两个过程:数据库还原(RESTORE)与数据库恢复(RECOVER),具体如下:

1)数据库还原是指利用备份的数据库文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。RMAN在进行还原操作时,会利用恢复目录(有建立恢复目录的话就使用目标数据库的控制文件)来获取备份信息,并从中选择最合适的备份进行修复操作。当选择备份时,有以下两个原则:①选择距离恢复目录时刻最近的备份;②优先选择镜像复制,其次才是备份集。

2)数据库恢复是指数据文件的介质恢复,即为修复后的数据文件应用联机或归档日志,从而将修复的数据库文件更新到当前时刻或指定时刻下的状态。在执行恢复数据库时,需要使用RECOVER命令。

还原是将某个时间点的数据文件的副本再拷贝回去,还原后的数据库处于不一致的状态,或不是最新的状态,还需要执行恢复操作。恢复就是使用归档日志文件和联机Redo日志文件将不一致的数据库应用到一致性状态。需要注意的是,还原只是建立在数据库备份的基础版本上,例如,如果数据库备份包括0级备份和很多1级备份,还原只是应用0级备份,恢复过程会根据情况自动应用1级备份或Redo日志将数据库恢复到一致性的状态。[考点]RMAN

16.

数据库的恢复过程分为哪两类?正确答案:数据库的恢复过程根据恢复数据的程度又分为完全恢复(CompleteRecovery)和不完全恢复(IncomnleteRecoverv),如下图所示。

1)完全恢复是一种没有数据丢失的恢复方式,能够恢复到最新的联机Redo日志中已提交的数据。在传统恢复方式中,因介质失败破坏了数据文件之后,可以在数据库、表空间和数据文件上执行完全介质恢复。

2)不完全恢复是一种与完全恢复相反的恢复方式,是一种丢失数据的恢复方式,也称为数据库基于时间点恢复(Point-in-TimeRecovery),是将整个数据库恢复到之前的某个时间点、日志序列号或者SCN号。

如果是完全恢复,那么数据库就是最新的一致性状态;如果是不完全恢复,那么数据库就是非最新的一致性状态。对于非归档模式的数据库来说,不能执行不完全恢复。不完全恢复意味着会缺失一些事务处理,即恢复目标时间和当前时间之间所做的所有数据修改都会丢失。在很多情况下,这正是想要的结果,因为可能需要撤销对数据库进行的一些更改。恢复到过去的某一时间点是删除误更改的一种方法。

不完全恢复的选项见下表。不完全恢复方式RMAN选项用户管理备份选项恢复到某个时间点UNTILTIMEUNTILTIME恢复到某个日志序列号UNTILSUQUENCEUNTILCANCEL恢复到某个SCN号UNTILSCNUNTILCHANGE[考点]RMAN

17.

Oracle数据库的不完全恢复有哪些类型?正确答案:不完全恢复的几种类型见下表。

[考点]RMAN

18.

什么是实例恢复?正确答案:实例恢复可确保数据库在一个实例失败后仍能回到一个一致性的状态。Redo日志记录了对实例的所有更改。单实例数据库拥有一个重做线程,而一个RAC数据库拥有多个重做线程,且RAC数据库的每个实例拥有一个重做线程。当事务提交时,LGWR将内存中的重做条目和事务SCN同时写入联机Redo日志。但是,DBWn进程只在最有利的时机将已修改的数据块写入数据文件。所以,未提交的更改可能会暂时存在于数据文件中,而已提交的更改也可能还不在数据文件中。

当数据库突然崩溃,而还没有来得及将BufferCache里的脏块刷新到数据文件里,同时在实例崩溃时正在运行着的事务被突然中断,则事务为中间状态,也就是既没有提交也没有回滚。这时数据文件里的内容不能体现实例崩溃时的状态。这样关闭的数据库是不一致的。当下次启动实例时,Oracle会由SMON进程自动进行实例恢复。实例启动时,SMON进程会去检查控制文件中所记录的、每个在线的、可读写的数据文件的EndSCN号。在数据库正常运行过程中,该EndSCN号始终为NULL,而当数据库正常关闭时,会进行完全检查点,并用检查点SCN号更新该字段,所以可以通过EndSCN号是否为NULL来判断是否需要实例恢复。在数据库实例崩溃时,Oracle还来不及更新该字段,则该字段仍然为NULL。当数据库再次启动时,SMON进程发现该字段为空时,就知道实例在上次没有正常关闭,于是由SMON进程就开始进行实例恢复了。

对于单实例的数据库而言,实例恢复一般是在数据库实例异常故障后、数据库重启时进行,当数据库执行了SHUTDOWNABORT或者由于操作系统、主机等原因宕机重启后,在执行ALTERDATABASEOPEN的时候,就会自动做实例恢复。在RAC环境中,如果某个实例宕机了,那么剩下的实例将会代替宕掉的实例做实例恢复。除非是所有的实例都宕机了,这样的话,第一个执行ALTERDATABASEOPEN的实例将会做实例恢复。这也是在RAC环境中,Redo日志是实例私有的组件,但是Redo日志的文件必须存放在共享存储上的原因。[考点]RMAN

19.

Oracle数据库的实例恢复分为哪两个阶段?正确答案:实例恢复的第一阶段称为前滚(RollingForward)或者缓存恢复(CacheRecovery);实例恢复的第二阶段称为回滚(RollingBack)或者事务恢复(TransactionRecovery)。前滚和回滚是Oracle数据库实例发生意外崩溃、重新启动的时候,由SMON进行的自动恢复的过程。所谓的前滚,是应用Redo来恢复BufferCache的数据,将BufferCache恢复到Crash之前状态,所以此时BufferCache中既有崩溃时已经提交但还没有写入数据文件的脏块,还有事务被突然终止而导致的既没有提交又没有回滚的事务的脏块(也就是没有COMMIT,但是DBWn已经将改变的数据刷新到底层磁盘)。前滚完成之后就可以确保联机Redo日志中所有已提交的事务操作的数据写回到数据文件中。接下来,前滚之后,任何未提交的更改必须被撤销,而回滚是在数据库做完前滚操作后并打开数据库的情况下完成的,SMON会利用Undo信息将未提交的事务全部进行回滚。具体来说,SMON进程在完成前滚后,查看Undo段头(Undo段的第1个数据块)记录的事务表(每个事务在使用Undo块时,首先要在该Undo块所在的Undo段头记录一个条目,该条目里记录了该事务相关的信息,其中包括是否提交等),将其中既没有提交也没有回滚,而是在实例崩溃时被异常终止的事务全部回滚。[考点]RMAN

20.

实例恢复和介质恢复的区别是什么?正确答案:Redo日志是Oracle为确保已经提交的事务不会丢失而建立的一种机制。实际上,Redo日志的存在是为两种场景准备的,一种称为实例恢复(InstanceRecovery),另一种称为介质恢复(MediaRecovery)。

Redo日志的数据是按照THREAD来组织的,对于单实例系统来说,只有一个THREAD;对于RAC系统来说,可能存在多个THREAD。每个数据库实例拥有一组独立的Redo日志文件,拥有独立的LogBuffer,某个实例的变化会被独立地记录到一个THREAD的Redo日志文件中。

有关实例恢复和介质恢复的区别见下表。分类实例恢复介质恢复简介数据库没有正常关闭(即非一致性关闭,例如断电、硬件故障、关键后台进程出现故障(PMON、LGWR等),执行了SHUTDOWNABORT或STARTUPFORCE命令)会导致数据库实例在重启时自动使用联机Redo日志和Undo数据执行实例恢复,具体恢复的工作是由SMON这个后台进程来完成的,SMON自动应用联机Redo日志文件中的条目和读取Undo表空间中的数据完成实例恢复而不需要任何用户干预。一个单实例数据库或者RAC数据库所有实例失败之后,第一个打开数据库的实例会自动执行实例恢复,这种形式的实例恢复称为崩溃恢复(CrashRecovery)。在RAC环境中,若RAC数据库的一部分但不是所有实例失败后,在RAC中幸存的实例自动执行失败实例的恢复介质恢复是当存储的数据文件出现故障(例如,数据文件丢失、损坏)的时候进行的,介质恢复无法自动进行,必须手动执行RECOVERDATABASE或者RECOVERDATAFILE命令来实施。在做介质恢复的时候,需要使用归档日志。介质恢复是基于物理备份恢复数据,是Oracle数据库出现介质故障时恢复的重要保障发生时机当EndSCN不等于StartSCN的时候,数据库需要做实例恢复。若数据库异常关闭,则EndSCN号将为空,数据库就需要做实例恢复当SystemCheckpointSCN、DatafileCheckpointSCN和StartSCN三者中有一个不同时就需要做介质恢复恢复的目的在数据库发生故障时,确保BufferCache中的数据不会丢失;确保数据库可以处于一致性状态。只有当联机Redo日志文件和Undo表空间的介质没有被破坏才能确保实例恢复能够成功当数据文件发生故障时,能够恢复数据利用资源OnlineRedo、ActiveRedo和UndoBackupSet、ArchiveLog、Online和InactiveRedo等过程利用Redo前滚(重做);打开数据库;利用Undo回滚RESTORE:RECOVER是否自动完成自动完成手动恢复,需要DBA干预,分为完全和不完全恢复是否需要开启归档不需要开启归档模式需要开肩归档模式举例用户在8:30:00触发了5个事务,分别是T1、T2、T3、T4、T5。在8:38:00之前,T3和T5完成,在8:38:00产生了一个检查点事件,此时系统将对数据的更改都写入数据文件中。在8:38:27时,出现故障,导致实例异常关闭,在8:38:00至8:38:27之间的操作仅仅记录在Redo日志中,并没有将这些更改写入数据文件中。当实例重新启动时,SMON将执行实例恢复。例如,在8:43:00分重启实例,SMON执行实例恢复,整个执行过程可以分为两个部分:前滚和回滚。前滚是指8:38:00至8:38:27:00之间的操作应用到数据文件上,由于这些操作都记录在Redo日志中,因此只需要从Redo日志中读取这些操作并执行即可。前滚执行完毕后,SMON进程立即打开数据库,此时,数据库处于实例异常关闭前的状态。打开数据库后进入回滚,回滚阶段是指将未提交的事务回滚,即将示例中T1、T2和T4回滚,在8:45:00时,实例恢复执行完毕在系统重启后发现数据库中数据文件被rm删除了,这个时候需要执行RESTOREDATABASE和RECOVERDATABASE命令进行介质恢复[考点]RMAN

21.

DELETE了一条数据并且提交了,该如何找回?正确答案:在Oracle中可以通过闪回技术来找回已经删除并且提交了的数据。当然,除了闪回技术外还可以采用LogMiner(使用该工具可以轻松获得Redo日志文件包含归档日志文件中的具体内容)进行日志挖掘,找出其撤销SQL并执行就可以找回DELETE语句删除的数据。[考点]RMAN

22.

rm-rf误操作后如何恢复数据库?正确答案:如果执行了rm-rf操作删除了所有的基于FS的数据文件,但是数据库还处于OPEN状态,那么,在这种情况下如何快速地恢复数据库呢?这里的前提条件是没有任何可用的RMAN备份、数据库冷备份等,也就是说,没有任何备份。在这种情况下可以通过系统的文件句柄号来恢复数据文件。[考点]RMAN

23.

在丢失归档的情况下如何进行数据文件的恢复?正确答案:如果一个表空间的数据文件损坏,在有备份的情况下,那么可以使用数据文件的备份进行还原,但是还需要归档文件进行恢复,才能使数据文件到达一个最新的一致性状态,从而才能打开数据库。如果需要的归档文件无法提供,比如被删除了,那么在这种情况下如何打开数据库呢?

在这种情况下由于缺少归档,数据库无法恢复,但是如果与该表空间相关的数据改变很少或者基本没有改变的情况下可以通过改变数据文件头的SCN号,让其和SystemCheckpointSCN、DatafileCheckpointSCN号一致,就可以让Oracle避开对该文件的检查,Oracle就不会去做介质恢复,而只做实例恢复,这样就可以实现完全恢复,及时打开数据库。

一般来说,推进数据文件头的SCN号有两种处理办法:第一,利用BBED(BlockBrowerandEditor)修改数据文件头,推进SCN号来打开数据库;第二,设置隐含参数“_ALLOW_RESETLOGS_CORRUPTION”为TRuE来打开数据库,该参数默认为FALSE,待数据库打开后,要将该参数从参数文件中去掉,命令如下:

ALTERSYSTEMSET"_ALLOW_RESETLOGS_CORRUPTION"=TRUESCOPE=SPFILE;--跳过数据库一致性检查

ALTERSYSTEMRESET"_ALLOW_RESETLOGS_CORRUPTION"SCOPE=SPFILESID='*';--取消该参数[考点]RMAN

24.

数据文件OFFLINE之后必须要做的一件事是什么?正确答案:数据文件OFFLINE之后必须要做的一件事就是立刻执行一次RECOVER操作,这样无论

温馨提示

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

最新文档

评论

0/150

提交评论