数据库程序员面试分类真题19.docx
《数据库程序员面试分类真题19.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题19.docx(14页珍藏版)》请在课桌文档上搜索。
1、数据库程序员面试分类真题19倚答题1. Oracle中的坏块指的是什么?正确答案:Oracle数据文件的坏块可以分为物理坏块和逻辑坏块。物理坏块指的是块格式本身已经损坏,块内的数据没有任何意义:逻(江南博哥)辑坏块指的是块内的数据在逻辑上存在问题,比如索引块的索引值没有按顺序排列导致的逻辑坏块。物理坏块一般是由于内存问题、OS问题、I/O子系统问题或硬件引起的,逻辑坏块一般是由OracleBUg等原因引起的。坏块通常是通过OraeIe的ORA-Ol578错误报告出来的,详细的损坏描述会在告警日志中打印出来。可能的报错如下:ORA-O1578:ORAC1.Edatablockcorrupted(
2、fiIe#6,block#11)ORn-Ol1IOidatafile6/u01apporacteoradataorcltbsl.dbf,那么何时进行数据块的一致性检直呢?当一个数据块被读或写的时候,将对块进行一致性检查,检查的内容包括块的版本、比较块在CaCh。和BIOCkBUffer中的数据块地址,然后根据要求进行校验(CheCkSUm).块的一致性检查由DBB1.0CKCHECKSUM和DBB1.OCKQIECKlNG两个初始化参数控制。DBB1.OCKCHECKSUM是一种物理检查,只有在写入(DBWn常规写或用户进程宜接路径写入)数据文件时,根据一个CHECKSUM算法计算数据块的校验
3、和,然后写入数据块的一个特定位置,在读取块时再进行检验,主要是为了防止1/0硬件和1/0了系统的错误。DBB1.OCK.CHECKING参数主要用于数据块的逻辑一致性检查,但只是在块内,不包H块间的逻辑检查,用于防止在内存中损坏或数据损坏。考点RMAN2. Oracle中的坏块有哪些检测方法?正确答案:坏块的检测方法主要包括卜表所示的几种。方法I)FS中:dhfil.!hr*st01,dbfblocksize=8l922)ASM中:SdbVfie=DATA般喻朋施I2H99Ml:即邂三MRdoHi.朋R此联、嬲文件和RMANW.娘肝酬文件懒教正,(b丽R令行如,一1林文件的触块,二是豌朋在生正
4、反时;5要自由的怖由包括SYWSDRtSK和SYSSYS_USER_SEGS)UWid零1命令文好憎叫名的文件反胡酬口侬FR需忑黑黑粽-畸蠢畸SEGMENTNAMEqBC1.HR,对连接文件摩跳实则政务懿文物甑.艘牌DBVRFY如麻限薪后醐施解f含飕名的文件,3)甑段.料加end&幽枷跑ID或蜥在(如)瞅睚女蟒倒减备作为林旅虏么我撼蜥In醯文算段头懿第:证存相在ASM中的贵兴件,瓦么能留院用ZK影方:dbvuse油5yStaT*gme11l#36.12130嫌不龌即名解外舷就到DBV三8:USERlDmusbuSpedfitdfctOSMIito摭第ANA1.YZE令黜分析紫鼾棘,Mtmm翱!
5、懒触,mmmmm帆vt,vnTAillUZWVovrcWmEAIw1.YZE它也磔欣个胸制婕i三国坏的OAM1.YZH辎濡JM-但行#块枚但自足不会斥记趣为CoRRUP1.版院果保存在USHlDUMP_DEST豚询用户TRACE文件中对N讪邛块)我执厅导出发作,会收到相关的SSK版(ORA-OIJ78).卬坏触好会发财根理包括HWM(酩峨)肚的槌、索引中存确械,髅?财睇的极.肝这相娥,料明颇设须燃复修妫耀奸,施卜.酬a方法;旗1:朋侬I怖通过联IOBI施多舸雎导出酬依让Ondc%轴撕的块,10231l0rade的标filft.即位全和喇魁加蝴懿块,只导出包含旧做的JHMZfift三,眦导出的表
6、射招人用我从百触源I)眦IOBI施怀_aplpabks三TBC.1.HRfile=T,BC-1.HIlSQ1.ahSyJtonseicMI0231tracecameCo叱Ufccn,htlIff;2)觑HttniWyft;SQ1.ahJysemsetCCe=10231tractoamccorutfwmrJevdV;方法2:蜩DB电REPAIR祢亩麻饿.ttffiDBMS_RPAIR处耳腋触曲Oraefe做换耳胡掾撕除削浦曲时候会蒯掷潮戈通型:SQ1.EXECDBMSREWHISK1PCORRbHB1.OCKS(U双TAB1.ENAMERAcKUPVAIIDMEDXrAFl1.E12;RMAw炖
7、麒壮湛飘.蛾的贾蟒中包含Backupvalidaitdaarase有时bE么总会或利给说BACKUPVAUDATcCHEeK1.OGICA1.DATABASEARCHIVaoGAU;考点RMAN3. BMR如何恢复坏块?正确答案:如果数据库只有很少的数据块被破坏,那么块介质恢复(BlOCkMediaRecovery,BMR)是较好的块恢复方法。BMR只能用于恢复物理损坏(PhySiCalCorruptions),在数据文件联机时即可恢复相关坏块。BMR主要使用Blockrecover命令恢复坏块,该命令有以下三种使用方式:1)使用aB1.OCKRECOVERCORRUPTION1.lST;”命
8、令恢复在VSDATABASE_B1.OeK.CORRUPTION视图中报告的所有块。2)使用aB1.OCKRECOVERDATEI1.E1B1.OCK10;”命令恢复单个块,需要指定文件号和块号。3)使用B1.OCKRIiCOVERTAB1.ESPACETSJJSERDBAXXX;命令恢熨某个表空间的坏块,需要指定表空间和数据块地址。下面给出几个恢复示例。恢复3个数据文件的损坏块:RmanBlockrecoverdatafile2block12,13datafile3block5,23,24DTFI1.E4B1.OCK20;从数据文件拷贝中恢复一系列块:Blockrecoverdtfile3b
9、lock2,3,4tablespacets_userdb4194405,4194409,4194412fromDATAFI1.ECOPY;从指定的TAG备份中恢复块:RMANblockrecovertablespacesystemdba4194404,4194405fromTAGwweekly-backup*:从用于恢夏数据到两天以前的备份中还原、恢熨SYSTEM表空间中的两个块:RVANblockrecoverTAB1.ESPACEsystemdba4194404,4194405restoreUNTI1.TIME,sysdate-2,:运行备份验证数据库,修复在V$DATABASEB1.OC
10、KCoRRUpTION中记录的所有损坏块:RMANBCKUPVA1.IDATEDATABASE;RMNB1.OCKRECOVERCORRUPTION1.IST:考点RMAN4. 如何确定坏块的对象名?正确答案:根据绝;寸工件号和块号确定数据块对象的SQ1.语句如下:SE1.ECTTAB1.ESPACE_NAME,SEGMENTjrYPE,OWNER,SEGMENT_NAME,PARTITION_NAMEFROMDBA_EXTENTSWHEREFI1.E_ID=&FI1.E_IDAND&BI.OCK_IDBETWEENB1.OCK,IDANDB1.OCK,ID+B1.OCKS-1;如下的SQ1.
11、可以确定段苫用的数据块:SE1.ECTDBMSROWID.ROWIDOBJECT(ROWID)OBJECTID,DBMSROWID.ROWIDRE1.ATIVEFNO(ROWID)FI1.E_ID,DBMS_RoWID.ROWID_B1.OCK_NUMBER(ROWID)B1.OCKID,COUNT(I)COUNTSFROM1.HK.T_BC_1.HRDGROUPBYDBMS_ROWID.ROWID_OBJECT(ROWlD),DBMS_ROWID.ROW1D_RE1.ATIVE_ENO(ROWID),DBMS_ROWID.ROWTD_B1.OCK一NUMBER(ROWID)ORDERBYDB
12、MS.ROWID.ROWID_B1.OCK_NUMBER(ROWID);关于坏块需要注意以下几点:D对于受损的数据块,仅仅坏块上的数据无法被查询或读取,其余正常块的数据依旧可以使用。2)对于受损的表对象进行聚合等相关运算时会收到错误提示,因为坏块上的数据无法被统计。3)可以基于RMAN的备份文件实现块介质恢复,其数据文件无须OFF1.INE,开销最小,影响最小。4)对于多个数据块的损坏,先执行BACKUPVA1.lDATE校验数据库或相应的数据文件以便标记受损的坏块后,填充V$DATABASE_B1.OCK工ORRUPTloN后再使用命令B1.OCKREcovERCORRUpTION1.IST
13、;一次性恢复所有的坏块。5)在缺省情况下,存在坏块的数据文件无法成功备份,也会导致自动备份脚本失败。考点RMAN5. 如果发现有坏块,那么如何检索其他未坏的数据?正确答案:首先需要找到坏块的ID(dbv工具可以实现),假设坏块ID为VBID,文件编号为VFID.运行下面的SQ1.语句查找段名:SE1.ECTSEGMENT_NAME,SEGMENT_TYPE,EXTENT_1D,B1.OCK_ID,B1.OCKSEROMDBA_EXTENTSTWHEREFI1.F-ID=ANDBETWEENB1.OCK,11)AND(B1.OCK,ID+B1.OCKS-1);找到标块所属的段名称,若段是一个表,
14、则最好建立一个临时表,存放好的数据;若段是索引,则删除它,再重:建.CREATETAB1.EGOOD_TAB1.EASSE1.ECTFROMBADAB1.EWHEREROWIDNOTIN(SE1.ECTROWIDFROMBAD.TAB1.EWHERESUBSTR(ROWIf)t10,6)=);还可以使用诊断事件10231设置在全表扫描时跳过坏块,如下:SQ1.A1.TERSYSTEMSETEVENTS,10231tracenamecontextforever,level10;然后创建一个临时表GooDJAB1.E,将原表中除坏块的数据都检索出来:SQ1.CREATETAB1.EGoODJTAB
15、1.ESSE1.ECT*FROMBADJAB1.E;最后关闭诊断事件:SQ1.A1.TEKSYSTEMSETEVENTS,10231TRACENAMECONTEXTOFF;事件10231的说明如下:oraclerhel61hr-$OeRROK1023110231,00000,skipcorruptedblockson_table_scans_*/*Action:suchblocksareskippedintablescans,andlistedintracefiles关于ROwID的结构,还nJ以参考DBvSROWlD.ROWIDCREATE函数。考点RMAN6. 1.ogMiner是什么?其
16、有哪些用途?正确答案:1.ogMiner工具可以轻松获得Kedo日志文件(包含归档日志文件)中的具体内容,特别是该工具可以分析出所有对于数据库的DM1.操作(INSERT、UPDATE、DE1.ETE等)语句。Oracle9i后还可以分析DD1.语句,另外还可分析得到些必要的回滚SQ1.语句。1.ogMiner的一个最重要的用途就是不用全部恢复数据库就可以恢夏数据库的某个变化。该工具特别适用于调试、审计或者回退某个特定的事务。1.ogMincr工具既可以用来分析在线日志,也可以用来分析离线日志文件,既可以分析本身自己数据库的重做日志文件,也可以用来分析其他数据库的重做日志文件。当分析其他数据库
17、的重做日志文件时,需要注意的是,1.ogMiner必须使用被分析数据库实例产生的字典文件,而不是安装1.ogMiner的数据库产生的字典文件,另外,必须保证安装1.ogviner数据库的字符集和被分析数据库的字符集相同。源数据库(SourceDatabaSe)平台必须和分析数据库(MiningDatabaSe)平台一样。Oracle通过1.ogMiner工具对Redo日志进行挖掘,显示出一系列可读的信息,该过程称为日志挖掘。1.ogViner通过V$1.oGMXRCONTENTS视图显示Redo日志中的信息。总的说来,1.ogMiner工具的主要用途有:1)跟踪数据库的变化。可以离线地跟踪数据
18、库的变化,而不会影响在线系统的性能。2)回退数据库的变化。回退特定的变化数据,减少PointTn-TimCRecovery的执行。3)优化和扩容计划。可通过分析日志文件中的数据以分析数据的增长模式。4)确定数据库的逻辑损坏时间,准确定位操作执行的时间和SCNe5)确定事务级要执行的精细逻辑恢复操作,可以取得相应的Undo操作。6)执行后续审计。考点RMAN7. 1.ogMiner的数据字典分为哪几种?正确答案:为了完全地转换Rcdo日志中的内容,1.ogMiner需要访问一个数据库字典。1.ogMiner使用该字典将Oracle内部的对象标识符和数据类型转换为对象名称和外部的数据格式。没有字典
19、,1.ogMiner将使用十六进制字符显示内部对象【D。1.ogMiner提供了3种提取字典文件的方式:1)将字典文件提取为一个FlatFile(平面文件或中间接口文件)。2)将字典文件提取为Redo日志。3)使用OnIineCatalOg(联机口志)。考点RMAN8. 1.ogMiner工具如何跟踪DD1.语句?正确答案:当1.ogMiner被启动时,它会自动创建自己的内部字典。如果源字典是FIatFiIe字典或Redo日志中的字典,则可以使用DDlj)ICTJRACKING参数来跟踪DD1.语句。DD1.跟踪默认是关闭的。为了打开这一句能,可以在启动1.ogVinCr时使用DD1._D【C
20、T_TRACKING参数:SQ1.EXECUTEDBMS1.OGMNRSTART1.OGMNR(OPTlONS=DBMS1.OGMNR.DD1.DICTTRACKING):当使用DD1.DICTTRACKING时,需要注意如卜几点:1)当使用联机目录(OnIineCatalog)H,也就是当使用DICT_FROM_ON1.INE_CATA1.OG参数时,是不能使用DD1.DICTJRACKING选项的。2)使而DDkDlCTJRACKING时,要求数据库处宇OBEN状态。尽量为1.ogMiner的表提供一个单独的表空间。默认情况下1.ogMiner的表是创建在SYSTEM表空间中的。使用DBM
21、S_1.OGMR_D.SETjrAB1.ESPACE可以在一个单独的表空间中重建这些1.ogMiner的袤:SQ1.EXECUTEDBMS_1.OGMNR_D.SET_TAB1.ESPACEClogmnrts$);。考RMAN9. 有哪些方法可以过滤1.ogMiner工具产生的数据?正确答案:可以使用COVMlTTED_DATA_O1.Y参数来只显示那些被提交的事务:SQ1.EXECDBMS1.oGMNR.STARTI.0GMNR(0PTI0NS=DBMSI.OGMNR.COMMITTEDDATAON1.Y);当使用这一参数时,1.ogMiner将所有的DM1.操作按照事务的关系组合在一起。这
22、些事务按照它们被提交的顺序显示出来。可以使用SKIPloRR1.PTION参数来忽略Redo口志中的所有错误:SQ1.EXECUTEDBMS,OGMNR.START_1.OGMNR(OPTIONS=DBMS_1.OGMNR.SKIP_CORRUPTlON);可以使用STARTTIME和ENDTIME参数按照时间过滤数据,还可以使用Startscn和endscn参数按照scn来过滤数据:EXECDBMSJOGMNR.STARTJ.OGMNR(STARTSCN=23573690,ENDSCN=23632671,OPTIONS=DBMS1.oGbNR.DICTFROMON1.INECATA1.oG+
23、DBMS1.OGMNR.CONTINUOUSMINE):EXECDBMSI,OGMNR.START1.OGMNR(STARTTIME=2015-06-0311:10:12,ENDTIME=2015-06-0311:13:06,OPTIONS=DBMS_1.OGMXR.DICTJROM_ON1.INE_CATA1.OG+DBMS_1.OGMNR.CONTINUOUS_MINE);考扁RMAN10. 请描述1.ogMiner的操作步骤。正确答案:一个典型的1.ogMiner的操作包含如下步骤:1)进行初始化设置。开启附加日志,设置1.ogMiner的表空间,设置UTjFluU)IR参数的值。2)施
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序员 面试 分类 19
链接地址:https://www.desk33.com/p-1416039.html