《数据库程序员面试分模拟题9.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分模拟题9.docx(10页珍藏版)》请在课桌文档上搜索。
1、数据库程序员面试分模拟题9茴答题1. 等待事件有哪些分类?正确答案:Oracle的等待事件主要nJ以分为两类:空闲(Idle)等待事件和非空闲(NOnTdIe)等待事件。1)空闲等待事件指(江南博哥)Oracle正等待某种工作,在诊断和优化数据库的时候,不用过多注意这部分事件。2)非空闲等待事件专门针对Oracle的活动,指数据库任务或应用运行过程中发生的等待,这些等待事件是在调整数据库的时候需要关注与研究的。通过如下的SQ1.语句可以查询等待事件的类型:SE1.ECTWAIT_C1.ASS#,W.A1T_C1.ASS_ID,WA1T_C1.ASS,COUNT(*)ASCOUNT”FROMV$
2、EVEy1.NAMEGROUPBYWAn1.C1.ASS#,WAIT_C1.ASS_ID,WAIT_C1.ASSORDERBYWAIT_C1.ASS#;考点等待事件2. 如何切换到某个特定的数据库?正确答案:运行命令:usedatabaseIame;。考点连接数据库3. 什么是数据库镜像?它有什么用途?正确答案:数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。数据库镜像的用途有:D用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBVS自动
3、利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。2)提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。考点数据库系统的组成与结构4. 数据文件OFF1.lNE之后必须要做的一件事是什么?正确答案:数据文件OFF1.INE之后必须要做的一件事就是立刻执行一次RECOVER操作,这样无论过了多久之后,在ON1.lNE该数据文件的时候就不需要执行RECOVER操作了。考点RMAN5. 什么是OGG?它有哪些优缺点?正确答案:OGG(OracleGoldenGate)属于OraCleFusionMi
4、ddIeWare产品线,2009年被OraCIe收购,它是OraCIeStream的替代者。OGG软件是一种基于口志的结构化数据复制备份软件,它通过解析源数据库在线Fl志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库的同步。OGG可以在异构的IT(InfornarionTechnology,信息技术)基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时且制,从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,OGG可以实现一对一、广播(一对
5、多)、聚合(多对一)、双向复制、层会、点对点、级联等多种灵活的拓扑结构。OGG能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。和传统的逻辑复制一样,OGG的实现原理是首先通过抽取源端的Redo口志或者ArChiVe1.og,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端的数据同步。考点OGG6. 会话游标的含义是什么?共享游标和会话游标的区别有哪些?正确答案:会话游标(SeSSiOnCUrSOr)是当前会话(SeSSiOro解析和执行SQ1.的载体,即会活游标用于在当前会话中解析和执行SQ1.,会话游标是以哈
6、希表的方式缓存在PGA中(共享游标是缓存在SGA的库缓存里)。在目标SQ1.的执行过程中,会话游标起承上启卜的作用。因为Oraele依靠会话游标来将目标SQ1.所涉及的数据从BUfferCaehe的对应数据块读到PGA里,然后在PGA里做后续的排序、表连接等处理,最后将最终的处理结果返回给用户,所以,会话游标是当前会话解析和执行SQ1.的载体。共享游标和会话游标的对比见下表。共享游标会话游标穿7缓存在SGA中的年共享池里的库缓存在每个会话的PGA中位置缓存中生命周期共享游标在所有会话之间共享共享游标无生命周期,会进行缓存会话游标与会话是一一对应的,不同会话的会话游标之间不能共享,这是与共享游标
7、的木质区别。会话游标是有生命周期的,每个会话游标在使用的过程中都至少会经历一次OPen、Parse、Bind、Execute,FetCh和CIOSe中的一个或多个阶段。OraCle会根据参数SESSIoMCACHED/URSORS的值来决定是否将已经用过的会话游标缓存五时应会话的PGA中1)会话游标足以哈希式的方式缓存在PGA中,意味着Oracle会通过棚关的哈希运算来存储和访问在当前会话的PGA中的对应会话游标。这种访问机制和共享游标是一样的,可以简单地认为Oracle是根据目标SQ1.的SQ1.文本的哈希值去PGA中的相应HaShBUCket中找匹配的会话游标。由于在缓存会话游标的哈希印玄
8、表的对应HaShBUCket中,OraCle会存储目标SQ1.对伏尔应的父游标的库缓存对象句柄地址,所以,OraCle可以通过会话游标找到对应的父游标,进而就可以找到对应子游标中目标SQ1.的解析树和执行计划,然后OraCIe就可以重用目标SQ1.的解析树和执行计划来执行SQ1.语句了2) 一个会话游标只能对应个共享游标,而一个共享游标却可以同时对应多个会话游标考点游标7. 使用哪个数据字典可以查询序列的定义信息?正确答案:可以通过查询数据字典视图DBA.SEQUENCES获取序列的定义信息,NEXTV1.返回序列中下一个有效的值,任何用户都可以引用CURRVA1.中存放的序列的当前值。当序列
9、值不符合实际需求时,可以执行A1.TERSEQUENcE命令修改序列,需要注意的是,启动序列号不可以修改(STARTWITHN)o修改序列的语法和序列的创建语法一样,只是将CREATE修改为A1.TER即可。8. 分区表有什么优点?正确答案:分区表有如下的优点:D增强可用性。如果表的一个分区由于系统故障而不能使用,那么表的其余好的分区仍可以使用。2)减少关闭时间。如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,可能比整个大表修熨花的时间更少。3)维护轻松。单独管理每个分区比管理单个大表要轻松得多。4)均衡I/O。可以把表的不同分区分配到不同的磁盘来平衡I/O,改善性能。5)改善性
10、能。对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快。6)分区对用户透明,最终用户感觉不到分区的存在。考点分区表9. 如何知道当前绑定了什么裸设备?正确答窠:“raw-qa”命令可以列出当前绑定的所有裸设备。考点裸设备(RAW)10. 如何查看逻辑DG备库SQ1.Apply的进度?正确答案:_SQhSttECT1.AnSUcNlMNM1.SeWP1.lED-ScNlATBuiMtMlNKGJIMEAPP1.IEDjnMEFROMVSloGsTDBY.PROGRESS;1.A三MNDC-StXAPP1.lED.SQi1.A三JI!EWNIffiTHEAPF1.IE
11、DJljE88三殿889631668188蜕166802OIIKI5-1816:27:0820IH5-18此03:科201M6T816:03S考点DGH.InnoDB存储引擎支持哪些事务类型?正确答案:对于InnODB存储引擎来说,其支持扁平事务、带有保存点的扁平事务、链事务和分布式事务。对于嵌套事务,其原生不支持。因此对有并发事务需求的用户来说,MySQ1.数据库或InnoDB存储引挈就显得无能为力,然而用户仍可以通过带保存点的事务来模拟串行的嵌套事务。考点存储引擎12. 如何获取用户的权限?正确答案:若要获取一个用户的角色、系统权限、对象权限以及列权限,则可以通过以上介绍的数据字典视图来获
12、取也可以通过DBMS.METADATA.GETGRANTED_DD1.来获取。SE1.ECTDBMS.METADATA.GET_DD1.(USER,1.HR)DD1.SQ1.FROMDUA1.UNIONA1.1.SE1.ECTDBMSMETADATA.GETGRANTEDDD1.(OBJECTGRANT,1.HR)FROMDUA1.UNIONA1.1.SE1.ECTDBMS.METADATA.GET_GRANTED_DD1.CRO1.E-GRNT,/1.HR,)FROMDUA1.UNIONA1.1.SE1.ECTDBMSMETADATA.GETGRANTEDDD1.(,SYSTEMGRANT,
13、1.HR)FROMDUA1.:将结果复制出来简单地用文本编辑工具编辑后即可运行。另外还可以通过exp或expdp来获取用户的权限,这里不再演示。考点权限13. 如何得到真实的执行计划?正确答案:在Oracle数据库中判断得到的执行计划是否准确,就是看目标SQ1.是否被真正执行过,真正执行过的SQ1.所对应的执行计划就是准确的,反之则有可能不准,因此,通过10046事件及如卜的几种方式得到的执行计划是最准确的,而从其他方式获取到的执行计划都有可能不准确。SE1.ECT*IROMTAB1.E(DBMSXP1.AN.DISP1.AYCURSOR(NU1.1.,NU1.1.,ADVANCED1.1.S
14、TTS,):SE1.ECT*FROMTAB1.E(DBMS_XP1.AN.DISP1.AY_CURSORCsql_id/hash_value,CH11.D-CURSOR-NUMBER,ADVANCEDA1.1.STATS,);SE1.ECT*1ROMTAB1.E(DBMS_XP1.AN.DISP1.AY.AWR(,sql-id,);这里需要注意的是,虽然SQ1.*Blus的AUTOTKCE功能有部分是真实执行了SQ1.语句的(例如所有DM1.语句),但是由于该命令所显示的执行订划来源于调用EXP1.AlNP1.AN命令,所以,其得到的执行计划依然可能不准确(特别是在使用了绑定变量的情况下)。考
15、点执行计划14. 数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?正确答案:数据库系统中可能发生各种各样的故障,大致可以分为事务内部的故障;系统故障;介质故障:计算机病毒。其中,事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据。考点数据库系统的组成与结构15. MySQ1.数据类型有哪些属性?正确答案:数据类型的属性包括auto_increment、binary、default-,index,notnull、null、primarykey.UniqUe和ZerOfi11,具体见下表。属性列l)auto_increment
16、能为新插入的行赋予一,个唯一的整数标识符,该扇性只用于整数类型2)aut.o_increment一般从1开始,每行增加1。可以通过44A1.TERTAB1.ETB.NAMEAUT0_INCREMENT=n;”语句强制设置自动增长列为初始值,山是该强制的默认值是保留在内存中的。如果该值在使用之前数据库重新启动,那么这个强制的默认值就会丢失,需要在数据库启动以后重新设置3)可以使用1.AST_NSERTD()查洵当前线程最后插入记录使用的值。如果一次插入了多条记录,那么返回的是第一duto_increment条记录使用的自动增长值-4)MySQ1.要求将auto_increment属性用于作为主键
17、的列5)每个表只允许有一个auto_increment列6)自动增长列可以手工插入,但是插入的值如果是空或者0,那么实际插入的将是自动增长后的值7)对于InnoDB表,自动增长列必须是索引。如果是组合索引,也必须是组合索引的第一列,但是对于MylSAM表,自动增长列可以是组合索引的其他列,这样插入记录后,自动增长列是按照组合索引的前几列进行排序后递增的binarybinary属性只用于CHAR和VRC1IAR值。当为列指定了该属性时,将以区分大小写的方式排序和比较default属性确保在没有任何值可用的情况K,赋予某个常量值,这个值必须是常量,因为MySQ1.不允许插入函数或表default达
18、式值。此外,此属性无法用于B1.OB或TEXT列。如果已经为此列指定了NU1.1.屈性,那么当没有指定默认值时默认值将为NU1.1.,否则默认值将依赖于字段的数据类型如果所有其他因素都相同,要加速数据库查询,那么使用索引通常是最重要的一个步骤。索引一个列会为该列创建一index个有序的键数组,每个键指向其相应的表行。以后针对输入条件可以搜索这个有序的键数组,与搜索整个未索引的表相比,这将在性能方面得到极大的提升如果将一个列定义为notnull,那么将不允许向该列插入nul1notnull值。建议在重要情况下始终使用notnull属性,因为它提供了一个基本验证,确保已经向奁洵传递了所有必要的值为
19、列指定null属性时,该列可以保持为空,而不论行中其他列null是否已经被填充。null精确的说法是“无”,而不是空字符串或Oprimarykey属性用于确保指定行的唯一性。指定为主键的列中,值不能重复,也不能为空。为指定为主键的列赋予auto_increment属性是很常见的,因为此列不必与行数据有任何关系,而只是作为一个唯标识符。主健又分为以下两种:1)单字段主键。如果输入数据库中的每行都已经有不可修改的primarykey唯一标识符,一般会使用单字段主键。注意,此主键一旦设置就不能再修改2)多字段主键。如果记录中任何一个字段都不可能保证唯一性,那么就可以使用多字段主键。这时,多个字段联合
20、起来确保唯一性。如果出现这种情况,那么指定一个autoincrement整数作为主键是更好的办法被赋予unique属性的列将确保所有值都有不同的值,只是uniquenull值可以重复。一般会指定一个列为UniqUe,以确保该列的所有值都不同zerofill属性可用于任何数值类型,用0填充所有剩余字段空zerofill间。例如,无符号int的默认宽度是10:因此,当“零填充”的int值为4时,将表示它为0000000004考点数据类型16. 什么是更新丢失?正确答案:更新丢失是指多个用户通过应用程序访问数据库时,由于查询数据并返回到页面和用户修改完毕单击保存按钮将修改后的结果保存到数据库这个时间
21、段(即修改数据在页面上停留的时间)在不同用户之间可能存在偏差,从而最先查询数据并且最后提交数据的用户会把其他用户所做的修改覆盖掉。当两个或多个事务选择同一行数据,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其他事务的存在。最后的更新将重写由其他事务所做的更新,这将导致数据丢失。简单来说,更新丢失就是两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆滥了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。SerialiZable可以防止更新丢失问题的发生。其他的三个隔离级别都有可能发生更新丢失问题。SerialiZabIe虽然可以防止
22、更新丢失,但是效率太低,通常数据库不会用这个隔离级别,所以,需要其他的机制来防止更新丢失,例如悲观锁和乐观锁。考点基本概念17. 给出下面语句的可能的优化思路。CREATETAB1.ET_YH_20170705_UIR(XINT);BEGINFORIIN1.1000001.OOPEXECUTEIMMEDIATE,INSERTINTOT_YH_20170705_1.HRVA1.UESCI);COMMIT;END1.oOP;END;正确答案:优化思路行:采用绑定变量;使用静态SQ1.;采用批量提交或循环外提交;根据功能,可以去掉P1./SQ1.块,采用直接一次性插入的方式来完成,SQ1.为“INS
23、ERTINTOT_YH_20170705_l.HRSE1.ECTROWNUMFROMDUA1.CONNECTBY1.EVE1.=100000,:仓采用直接脉径方式,例如,“CREATETAB1.ETYll201707051.lIRSSE1.ECTROWNUMXFROMDUA1.CONNECTBY1.EVE1.=100000;,:采用NO1.oGGlNG和PARA1.1.E1.的方式,例如,“CREATETAB1.ETYH_20170705_1.HRNO1.OGGINGPARA1.1.E1.8SSE1.ECTROWNUMXFROMDUA1.CONNECTBY1.EVE1.=100000,考点SQ
24、1.优化18. ASMM和AMM的区别有哪些?正确答案:有关ASMI和AMM的区别见下表。MttAMMASMM全咨AUlOmMKMcmoQManlgCnXnlAuiomMxShardMcnwyMInamCU中文名自励4耨,蝌械H版本OndellgOndeIQg侬M釉秋棚闱蹴纬(MEMORY.TARGET)IHM大内有大个初始化”(MEMORYMXjMGEr)M以秋多台上翅AMM.AMM可H任曳制。内存保打粗推定的状虬OradeUf-.MEMORYTARGETM轴动MSGA和PGA的大小.城内存姓碗,实舲自动在SGA和PGA加做曲JiiittRIASMM.眼讨好工如喊M组件初小,mSGA设卜惬的
25、大小.Onck如动根标频励变化,mW的大小就1) SK1.OCK_SGA力FA1.SE(KA为FA1.SE)2) MEMORYTARGET.MEMORYMAXTARGET的蛾mo3) SGAjARGE1.PGA.AGGREGATETARGET蚓曲AOI)SIAmncS1.EVE1.教谀展为TYMA1.(RUfi)A1.1.2)SGATARGETmtOffiKftAMMASMM3)触IhsHARED_POo1.SIZE、1.ARGE_Poo1.SZEJA-POO1.SIZE、DBfACHE0EESTREAMS.FOO1.-SIZE)0启用麻A1.TERSYSTEMSETMEMoRY_MAXjAR
26、GET=IO24MSCOPE-SPH1.E;-Ifi烈脾A1.TERSYSTEMSETMEMoRYJARGEr=392M;A1.TERSYSTEMSETSGAJARGET=0;A1.TERSYSTEMSETFGA_AGGREGATEjARGEr0;SE1.ECT(SE1.ECTSw(V41.UE)FROMVSSGAr(SE1.ECTCVRRENT三FROMV$SGA_DYNAMIC_而_MEMORY),SGAJARGETFROMDUA1.A1.TERSYSTwSETSGAJARGET=992M;A1.TERSYSrEMSETSllARH)-P(X)1.三0:A1.TERSYSTEMSET1.A
27、RGE.POO1.SIZE=O;A1.TERSYSTEMSEnWAJloO1._SIZE0;A1.TERSYSIBISETDB_CACHEllZE=(kA1.TERSYSTBISHSTREAMS.POO1.SIZE=0;票用MEMORYTARGCT.MBWRYMAXTARGH的SGAjARGETM为。MMW大内做(HUft峰)YN考点内存结构19. 如何查询到数据库的增长情况?正确答案:可以通过视图DBA_HIST_TBSPC_SPACE_USAGE来获取数据库的增长情况。考点性能诊断20. 如何在执行恢复的时候将数据文件恢复到别的路径?正确答案:主要采用命令setnewnamefordatafile和switchdatafileall;0考点RMAN