《数据库程序员面试分模拟题10.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分模拟题10.docx(18页珍藏版)》请在三一办公上搜索。
1、数据库程序员面试分模拟题10倚答题1. DBMSJ)UTPUT提示缓冲区不够,怎么增加?正确答案:采用命令DBMSOUTPUT.ENAB1.E(20000);,另外,如果DBvSOUTPUT(江南博哥)的信息不能显示,那么需要设置SETSERVEROUTPUTON0考点系统包2. 后台进程、服务器进程和用户进程之间的区别是什么?正确答案:后台进程、服务器进程和用户进程间的关系如下图所示。进程结狗(I)USERPROCESS(用户进程)用户进程指的是Oracle客户端进程。例如,常用的Oracle的SQ1.*Plus就是最常用的客户端进程。(2) SERVERPROCESS(服务器进程)服务器进
2、程指的是与客户端连接的服务器端的后台进程。对于每个前台的用户进程,后台都有一个服务器进程与之对应。服务器主要是通过它和用户进程进行联系、沟通及进行数据的交换。(3) BACKGROUNDPROCESSES(后台进程)后台进程是OraCIe的程序,在OraCle实例启动的时候启动,用来管理数据库的读写、恢复和监视等工作,例如PMO、SMON等进程。后台进程是OraCIe实例的核心。在UNIX操作系统上,OraCIe的后价进程对应于操作系统进程,也就是说,一个OraCIe后台进程将启动一个操作系统进程:在WindOWS操作系统上,OraCle的后台进程对应于操作系统线程,打开任务管理器,只能看到个
3、ORAC1.E.EXE的进程,但是通过另外的工具,就可以看到包含在ORAC1.E.EXE进程中的线程。考点后台进程3. Oracle中哪个包可以获取环境变量的值?正确答案:可以通过DBVS.SYSTEM.GETKV来获取环境变量的当前生效值。考点系统包4. 如何查询SCHEDU1.ERJOB的运行日志?正确答案:可以通过查询视图DBA_SCHEDU1.ER_JOBRUxDETI1.S来获取SCHEDU1.ERJOB的运行口志、产生的错误等信息。代码如下:SE1.ECTJRD.1.OG_ID,JRD.JOB_NAME,N.JOB_C1.ASS,TO_CHAR(JRD.1.O(1.DATE,YYY
4、Y-MM-DDHH24:M1:SS)1.OG_DATE,JRD.STATUS,JRD.ERROR#,JRD.RUN.DURATION运行时长,JRD.ADDlTlONA1._NF.0FROMDBA.SCHEDU1.EROBjoGNj)BA.SCHEDU1.ER.JOI1.RUXDETAl1.SJRDWHEREN.1.OGD=JRD.1.OGDANDN.JOkNAME=JOBNSERT_SQ1._1.HRJOB的名称ORDERBYJRD.1.OGIDDESC;IuXUDJXJMX咚jpU%=cMmIXSj69Tjq5C0UjO.OASSM浑ll29l33sRUD*X0t:nn(NMI6M:IMi
5、tto(MNIUlaMtaai5MK6JC8.NSKf.SQt,W1M.OKWrtcmCM-016MlutatoMTUleWrttotM5W91K6W5BI.St-lHICeWUJO1.aA5$2O14!JSIJ1SUCCffitCOMOMttOO如网XBJMSStuoiafi笫I1.URqASSawn29imjjjscc三coma:KteE从查询结果中可以看到,JOB_INSERT_SQ1._1.HR从2016-11-2913:03:36开始执行的时候就报错了,报错信息司以从ADDITlONA1.NFO列里找到,其报错的具体信息如卜丁ORA-OI658:UnabletocreateINITI
6、A1.extentforsegmentintablespaceTS1.llR0RA-06512:at*DB_M0NIT0R.PKG_SQ1._HISTORY_1.HR*,line180可见,涉及的程序是DB_MoNlTOR用齐下的PKG_SQ1._HISTORYJJlR包,而ORA-01658的错误是由于表空而不足引起的。考点JOB5. 如何在AWR中杳看每秒执行事务的个数?正确答案:该题考查的是对AWR报告的熟悉程度。AWR中每秒事务数在1.oadProfiIe部分的最后,负载较低的数据库每秒执行事务的个数可能小于1;而对于一些负载比较大的场景,每秒可能会有50、1000,甚至高达100oO
7、的事务,所以,这个只与具体的场景有关。考点ASHWRDDM6. 在MySQ1.中,VARCHAR与CHAR的区别是什么?VAReHAR(50)中的50代表的含义是什么?正确答案:CHAR是一种固定长度的类型,VRCHAR则是一种可变长度的类型。CHAR列的长度固定为创建表时声明的长度。长度可以为0255的任何值。当保存QIAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。VARCHAR列中的值为可变长字符串。长度可以指定为065535之间的值。VARCHR的最大有效长度由最大行大d,11使用的字符集确定。在MySQ1.
8、4.1之前的版本,VARCHAR(50)的“50”指的是50字节(Byte)。如果存放本F8汉字时,那么最多只能存放16个(每个汉字3字节)。从MySQ1.4.1版本开始,VARCHAR(50)的“50”指的是50字符(CharaCter),无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。CHAR和VARCHAR类型声明的长度表示保存的最大字符数。例如,CHAR(30)可以占用30个字符。对于MyISAv表,推荐CHAR类型;对于InnZ)B表,推荐VARCHAR类型。另外,在进行检索的时候,若列值的尾部含有空格,则CHAR列会删除其尾部的空格,而VARCHAR则会
9、保留空格。考点数据类型7. V$SESSION_1.ONGOPS视图的作用是什么?正确答案:在OraCleUg之前的版本,长时间运行的SQ1.可以通过监控V$SESSloN_1.OGO内来观察,当某个操作执行时间超过6s时,就会被记录在VSSESS10NJ0G0为中。通常可以监控到全表扫描、全索引扫描、哈希连接、并行查询等露作。考点性能诊断8. 区块链技术和比特币有什么区别?正确答案:区块能技术是比特币(比特币是一种使用P2P技术的去中心化数字货币)的底层技术,比特币在没有任何中心化机构运营和管理的情况下,多年运行非常稳定,没有出现过任何问题,所以有人注意到了它的底层技术,把比特币技术抽象提取
10、出来,称之为区块链技术,或者分布式账本技术。区块链技术不局限于比特币,它可以用于创造任何其他加密货币,比如以太坊和莱特币,每种都有它们各自的区块链。考点NeWSQ1.和区块链请列举一次你曾经处理过的故障。止确答案:没有唯一若案,读者根据自己的维护经验讲解即可,下面给出一个作者曾经处理过的故障诊断案例。1.故障环境项目Sourcedbdb类型RAC10.2.0.5.0ASMAlX64位6.1.0.0dbversiondb存储OS版本及kernel版本2.故障发生现象及报借信息有一套数据库做测试的时候,CPU利用率很高,当时抓取了CPU和AWR的信息。发生问题的时间段是1923点,其中,nmon数
11、据截图如下图所示。iumiibwmCPUTotal二二二:二:2016/8/23可以看到CPU的利用率是非常高的,下边来看看AWR中的数据。DBNameDBIdInstanceInstnumReleaseRACHostjCCAlU1.VC1654173250u-,;J102.0.5.0VUC卜一1.AAC,Yt:31.SnapldSnapTtmeSessionsCursorsZSessionBeginSnap:141823-Aug-119:04:415153.4EndSnap.142423Aug1623:09:414992.8Elapsed:245.00(mins)DBTime6.722.27
12、(mins)Top5TimedEventsEVentWartsBme(三)AvgWait(ms)%ToUiICa11TimeWaitClassDFSlockhandle1.640,15380,7254920.0OtherIenq:SQ-Icontention172.25469,65240417.3ConfiguranorCPUtime50,65012.6gcbufferbusy3,134,96830,4261075Clusterlogfilesync11.550,20622.60725.6CommIl从等待事件中可以很明显地看出,“enq:SQ-contention和DFSlockhandle
13、”这两个等待事件异常。Top5TimedEVentS”部分也是AWR报告中非常重要的部分,从这里可以看出等待事件中排在前五位的是哪些事件,从而基本上就可以判断出性能瓶颈在什么地方。在这里,enq:SQ-contention等待了172254次,等待时间为69652s,平均等待时间为69652/172254s=404ins,等待类别为COnfigUration即配置上的等待问题。3.有关序列等待的基础知识根据MYR报告的内容基本可以断定,只要解决了enq:SQ-ContentionwrtDFSlockhandle”这两个等待事件即可解决问题。其实,uenq:SQ-contention,“rowc
14、achelockDFSlockhandle”和enq:SV-contention这4个等待事件都与OraCIe的序列有关,如下:SE1.ECT*FROMV$EVENT_NAMEWHERENAMEINCrowcachelock*enq:SQ-contention,DFSlockhandle*,enq:SV-contention);EWtjEe032W255S402Cc11mtonnoderequest387油074CcnencSlC1N397W30Othe吮kQ189397T30Other26032245C38sSQrtectnrumemo2751714059451rcceMcacheid501
15、3595075359CfS必hWkt)Wwxfe8168!851S977ehSV-ZMWMbpefcdfi其中,PREMETER1的值为“namemode”或“typeImode”的事件为队列等待。在这类等待事件中,name代表队列的名称,type代表队列的类型,mode代表队列的模式。使用如下的SQ1.可以查询到锁的名称和请求的mode值:SE1.ECTCHR(BITAND(P1,-16777216)/16777215)IICHR(BITAND(PI,16711680)/65535)1.OCK,BITAND(PI,65535)MODEHROMY$SESSI0?1.WAITWHEREEVENT
16、INCenq:SQ-contention,DFSlockhandle*,enq:SV-contention);其中,MODE值见下表。模式代码1NullMode2Sub-Shoe3Sub-Exclusive4Share5Share/Sub-Exclusive6Exclusive使用如下的SQ1.可以查询SQ和SV这两种锁的解释:SE1.ECT*EROMV$1.OCK_TYBEDWHERED.TYBElN(,SV,SQ,);TYPE_;MMEIO1.WiG,11D2JGtS-USERJDBaOTONSQSeqgaeCadwcjte0NO1.otoensuethatcfOneprocewafife
17、ptenshtheswMnceudwSVSequtnceOrdemgCb)Ku0NO1.ocktoensueorderedstwreakatmnRACmode事实上,OraCle为了管理序列使用了rowcachelockSQ锁(SeqUenCeSV锁(SeqUenCe如卜.表所示的三种锁。Cache)Ordering)锁CACHE+NOORDER或产生的条件NocaciieCACHE+ORDER(单实例)CAQlE+ORDER(RAC)拥有的锁模式6-X(Exclusive)6X(Exclusive)5-SSX(ShareSub-Exclusive)OracleIOg表现为DFS表现出的等ro
18、wcachelockenq:SQ-lockhandle,而待事件contentionOracleIlg中表现为enq:SV-contention简介在赋予/NXACHE赋予rCACHE属性在RAC上节点之间顺序参数含义属性的序列上,在调用SEQUNECE.NEXTV1.过程中,将数据字典信息进行物理修改时拥有该的序列调刖NEXTVA1.期间,应该以SSX模式获得SQ锁。若许多会话同得到保障的情况下,调用SEQUENCE.NEXTV1.期间拥有该锁。在RAC环境中,时为r获取SQ锁而赋予CACHE+ORDER锁,等待事件表现为cachelockrow发生争用,则等待enq:SQ-Contenti
19、on事件Pl可以查询到锁的名称和请求的MODE值。P2值是序列的OBJECT-ID因此,Pi代表Vsrowcache若中的CACHE#利用P2值与DBA.OBJECTS的结合,就可以知道对哪个序列发生了等待现象属性的序列上发生,在OracleIOg表现为DFSlockhandle.而在OraCIeUg中表现为enq:SV-Contention0解决办法:尽量设置为NOORDER并增大其CACHE值PI可以查询到锁的名称和请求的MODE值解决办法尽量设置为NOORDER属性并增大其CACHE值,一般情况卜可以增大到100o在RAC上创建序列时,在赋予了CAeHE属性的状态下,若没有.赋予ORDE
20、R属性,则各节点将会把不同范围的序列值CACHE到内存上。比如,在拥有两个节点的RAC环境卜.,创建CAeHE值为100的序列,则节点1使用1700,节点2使用101200。若两个节点之间都通过递增方式使用序列,则必须赋予ORDER属性。OraCIe序列默认是NOoRDER,如果设置为ORDER,那么在单实例环境没有影响,在RAC环境中,多实例实际缓存相同的序列,此时在多个实例并发取该序列的时候,会有短暂的资源竞争来在多实例之间进行同步。因此,性能相比NoORDER要差,所以RAC环境非必须的情况下不要使用ORDER,尤其要避免NOCACHEORDER组合。有点必须要注意,当没有赋予CACHE
21、属性时,不管ORDER属性使用与否或RAC环境与否,一*直等待rowcacheIoCk事件。rowcacheIOCk是可以在全局范围内使用的锁,单实例环境或多实例环境同样可以发生。如果使用了CACHE,而此时DB崩溃了,那么序列会从CACHE值之后重新开始,在CAeHE中没有使用的序列会被跳过,这样就会导致序列不连续。在创建序列时,CACHE的默认值设定为较小的20。因此创建并发量多的序列时,CACHE值应该取100O以上的较大值。另外,若一次性同时创建许多会话时,有时会发生enq:SQ-contention等待事件。其原因是VSSESSION.UDSID列值是利用序列创建的。OraCle在创
22、建新的会话后,利用名为SYS.加口$5$的序列的NEXTVA1.来创建AUDSID值。在OracleIog下SYS.八如55$的CACHE值默认为20,但在OraCleUg下SYS.AUDSES$的CACHE值默认为10000,通过如下的SQ1.可以查询:SE1.ECT*1ROMDBA_SEQUENCESDWHERED.SEQUENCE.NAME=AUDSESS,;强Pdjwe瑕BdjKVMIX叫WtuEMJBeITMOU_RAGRjUCJCOC.S11EIUisTMNleiJljsUOSESSCmwifNIOCCO29774.故障解决过程首先查洵出现问题时间段的ASH视图DBAHISTCTI
23、VESESSHISTORY,通过该视图可以找到需要的序列名称。可以有多种查询方法:SE1.ECTD.SQ1.D,COUNT(I)FROMDBA_HIS1._CTIVE_SESS_HISTORYDWHERED.SAMP1.E_TIMEBETWEENTO_DATEC20160823170000,YYYYMMDDHH24MISS,)NDT(1.DATE(20160823230000,YYYYMMDDHH24M1SS,)ANDD.EVENT=enqzSQ-contention,GROUPBYD.SQ1._ID;SQ1.IDCOUNT(1)3d8b9vwzcws66b2226bwc3mqwqqdld22
24、2d66cawus5vz9qd2763yyf56pc9kzk37864dqwh46a2b7r98743jhvjgj7kbpmt15426可以看到SQ1._ID为3jhvjgj7kbpmt的SQ1.最多,查看具体SQ1.内容:SE1.ECT*FROMVSSQ1.AWHERE.SQ1._IDINC3jhvjgj7kbpmt,);SQkJEXTS2k1.ETSQ1.JD_.selectON1.NID.netvalinto:blfromDUA1.3vjQj7kbpmt由此可以知道,产生等待的序列名称为ON1.NID,另外,也可以从1 ST_ACTIVE_SESS_HISTORY视图的P2值获取到序列的
25、名称,SQ1.语句如下:SE1.ECTf).EVENT,D.PlTEX1.D.P1,f).P2TEX1.D.P2,CHR(BITAND(P1,-16777216)/16777215)CHR(BITAND(Pl,16711680)/65535)*1.ock*,BITND(P1,65535)Mode”,DB1.OCK1NG_SESS10,D.B1.OCKINGSESSIONSTATUS,D.B1.OCKINGSESSIONSERIA1.#,D.SQ1.ID,TOCHAR(D.SAMP1.ETIME,YYYYMMDDHH21MISS,)SAMP1.ETIME,D.*FROMDBA_HIST_ACTI
26、VE_SESS_HISTORYDWHERED.SAMP1.EjnMEBETWEENTO-DATE(,20160823170000,YYYYMMDDHH24MISS)NDTO_DATE(,20160823230000,YYYYMMDDHH24MlSS)ANDD.EVENT=*enq:SQ-contention,;EVENTIPlTEXTP1P2TEX.P2J1.odcMode!B1.OCKING-SESSIONenq:SQ-Contentrannamemode1397817350object47989SQ6560enq:SQ-contention11memode1397817350objectt
27、47989SQ6303enq:SQ-contentionnamemode1397817350object*47989SQ6248enq:SQcontentionnamemode1397817350object47989SQ6581enq:SQ-contentionnamemode1397817350object:47989SQ6581enq:SQ-Cortentionnamemode1397817350objectW47989SQ6581enq:SQ-contentionnamemode1397817350objects47989SQ6581enq:SQ-contentionnamemode1
28、397817350object47989SQ6581由以上的查询结果可知,序列的OBJECTD为47989,通过DBA_OBJECTS就可以查询到序列的名称了。另外,U)CK为SQ代表的是序列的CAC瓶锁(SEQUENCECACHE),MODE为6代表EXC1.USIVE排它锁。SE1.ECT*FROMDBAOBJECTSDWHERED.objectid=,47989,;IOBJEC1.NAMEISUBOBJECT_NAMEIoBJECT_JDDATA-OB)EcTDOflJeCTJYPEJON1.FfflTHHBHHE知道门手列名称后,通过DBA_SEQUENCES视图就可以查询到序列的属性
29、了:SEI,ECT*FROMDBA_SEQUENCESDWHERED.scquenCjnanIC=ON1.NID;Row1FieldsCommentsSEQUENCE_OWNERSE1.ECT2FROM(SE1.KIDoWNEKD5EGMENT_NAME,(SUM(D.BnES,1024:1024)SIZE.M3 FROMDBA.SEG(ENTSD4 GROUPBYD.0WNER.D,SEGMEK.NAtt5 ORDERBYSlZE-MDESa6 WHEREROVMM3:0三SBOEMJ三SIZEJ1.XISYSSYSSYSSYSTJIl1.7K01 .R!.OnSTAT.II.(ej:.IC
30、OU.ST50ia.1.BUS5Waomu1.HlSK理HIS三31三.SVSOIC.IIIS三27SYSgRACu1RSE1.ECTD.0VNER.D.TAB1.E_NAME,D.N1.M.ROWS2 Fromdbajablesd3 WHEREDTAB1.E.NAME=TR1.T4 ANDDoWNwIKn;0i三TABiEME双娜1.XIlI11IU-147)9101可以看到最大的表是1.Kl1.1.用户下的TJa1.1.表,大约7GB,约有440OW条的数据量,读者应该以自己实际管理的库为准。考点性能诊断14. 什么是字符设备、块设备和裸设备?正确答案:字符设备:对字符设备的读写不需要通过
31、OS的缓冲区(BUffer),它不可被文件系统MoUNT。字符特殊文件与外设进行I/O操作时每次只传输一个字符,通常不支持随机存取数据。块设备:对块设备的读写需要通过OS的缓冲区(BUffer),它可以被MO1.NT到文件系统中。块设备文件用来同外设进行定长的包传输,它使用了CaChe机制,在外设和内存之间一次可以传送一整块数据。块设备通常支持随机存取和寻址,并使用缓存器。裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被UnixZ1.inux通过文件系统来读取的特殊字符设备。裸设备可以绑定一个分区,也可以绑定一个磁盘。裸设备使用字符特殊文件,它由应用程序负贡对它进行读写操作,不经过文
32、件系统的缓冲。考点裸设备(RAN)15. 进程AMW、出IN1.和MMON这3个进程的作用分别是什么?正确答案:从如下出结果可以看到,每个ASM实例或数据库实例都有这3个进程:rootgrfe三r-PS-crcpmmroot2OjUn28?00:00)2v11une11tlg11d(I0Jun28?O(kOO2JSmjnma1.+ASMgrid56WI0Jun28?OttOOflSasmm11wn4ASMgrid368610J28?00:00:1sn.mmnl_*.ASMCQCIe三008:52?OOO1ora_iwran_ch$niCaCIC!00852?0M)0圻OraJnram-OrCh
33、mCeKie三I008:52700022OJJaMOfdasnlCfark19759IOIW)7?00:00:Ooaljmn.0a叫OKle19773I019:07?OttOOOora-11x-ofalOgOnCk19775I019圻?OJflMOOfajnmnIoralOg其中:DMMAN(MemoryManagerPrOCCSS,内存管理进程)进程会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。2)MMON(ManageabilityMonitorProCeSS,可管理性监视器进程)和它的slave进程(Mnnn)主要用来维护AWR信息和各种与可管理性相关
34、的后台任务,具体包括:启动SlaVe进程Mnnn去做AwR快照。若MMOX进程HANG住,则AWR不可用。当某个测量值(MetriCS)超过了其度量阀值(ThreShOIdVaIUe)时发出alert告警。为最近改变过的SQ1.对象捕获指标信息。3)MMN1.(Manageabi1ityMonitor1.itePrOCeSS)将SGA中的ASH(ACtiVeSessionHiStory)BUffer中的统计资料写到磁盘。当ASHBUffer满的时候MMN1.会把它写到磁盘上。考点后台进程16. OGG的告警日志文件的位置在哪里?正确答案:OGG的告警日志文件为$OGGHOME/ggserr.l
35、og,如H:oradc哝曲力OiSoGGJOMEOQCfogorcWhrggllSESOGG.HOME1,lgM峪MC妣飕呼IaiHggSEfcg2015OH143W2INFOOGG#953OradcGoWtnGueNtaiagerfOradc.11,p1111:Purging地tewyfrnggusr.GGS_DD1._HlSTokkrIhan2OI5-25138R2的S:0rowsHaedframgusr.GGS_DD1._HIST.20156C1430:02KFOOGG4)098OradcGoMatGiieMerfOrade,11t三Pinjingkhyftxnggi,GGS.DD1._HIST_A1.Toldrdun201562513:W52讼Orwdcicwlfrvm婢1.GGS_DD1.Jns1.A1.T.2015-6-(14JttO2INFOOGG-00953OradcGoMenGiUMwerfixOamgt三Purgingkhiayfrccnggus三S31ARKEROltoW2OI5-O5-25l3三2255577O三todngp.GGS.NtRKER.考点OGG17. 设有如下关系表:供应者:SUPP1.IER(SNO,SNAME,CITY),其中,SNo为供应者编号,
链接地址:https://www.31ppt.com/p-7141664.html