数据库程序员面试分模拟题4.docx

上传人:王** 文档编号:1343191 上传时间:2024-06-20 格式:DOCX 页数:13 大小:76.98KB
下载 相关 举报
数据库程序员面试分模拟题4.docx_第1页
第1页 / 共13页
数据库程序员面试分模拟题4.docx_第2页
第2页 / 共13页
数据库程序员面试分模拟题4.docx_第3页
第3页 / 共13页
数据库程序员面试分模拟题4.docx_第4页
第4页 / 共13页
数据库程序员面试分模拟题4.docx_第5页
第5页 / 共13页
数据库程序员面试分模拟题4.docx_第6页
第6页 / 共13页
数据库程序员面试分模拟题4.docx_第7页
第7页 / 共13页
数据库程序员面试分模拟题4.docx_第8页
第8页 / 共13页
数据库程序员面试分模拟题4.docx_第9页
第9页 / 共13页
数据库程序员面试分模拟题4.docx_第10页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库程序员面试分模拟题4.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分模拟题4.docx(13页珍藏版)》请在优知文库上搜索。

1、数据库程序员面试分模拟题4倚答题1. FORUPDATE和FORUPDATEOF的区别是什么?正确答案:SE1.ECT.FORUPDATE语句的语法如下:SE1.ECT.FOR(江南博哥)UPDATEOFcolumnlistWAITnNOWITSKIP1.OCKED;其中,这个OF子句在涉及多个表时,具有较大作用。若不使用OF指定锁定的表的列,则所有表的相关行均被锁定。若在OF中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。WAIT子句指定等待其他用户释放锁的秒数,以防止无限期的等待。“使用FORUPDATEWArr”子句的优点如下:D防止无限期地等待被锁定的行。2)允许应用程序中对

2、锁的等待时间进行更多的控制。3)对于交互式应用程序非常有用,因为这些用户不能等待不确定的时间。4)若使用了SKIP1.OCKED,则可以越过锁定的行,不会报告由Waitn引发的“资源忙”异常报告。在OraCIeIOg之前,SE1.EeT.FORUPDATE获取的是2级TM锁,而从OracleIOg开始,SE1.EeT.FORUPDATE获取的是3级TM锁。考点锁2. 什么是更新丢失?正确答案:更新丢失是指多个用户通过应用程序访问数据库时,由于查询数据并返回到页面和用户修改完毕单击保存按钮将修改后的结果保存到数据库这个时间段(即修改数据在页面上停留的时间)在不同用户之间可能存在偏差,从而最先查询

3、数据并且最后提交数据的用户会把其他用户所做的修改覆盖掉。当两个或多个事务选择同一行数据,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其他事务的存在。最后的更新将重写由其他事务所做的更新,这将导致数据丢失。简单来说,更新丢失就是两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。SeriaIiZabIe可以防止更新丢失问题的发生。其他的三个隔离级别都有可能发生更新丢失问题。SeriaIiZabIe虽然可以防止更新丢失,但是效率太低,通常数据库不会用这个隔离级别,所以,需要其他的机制

4、来防止更新丢失,例如悲观锁和乐观锁。考点基本概念3. 什么是HighVersionCount?正确答案:一个父游标下对应的子游标个数被称为VerSioncount,每个子游标对应一个执行计划。对于一个特定的游标有多少个版本(VCrSiOnCoUnt)属于高版本游标是没有明确定义的。对于不同的系统有不同的数量界定。HighVersionCount不仅产生的原因是多种多样的,而且会导致各种令人头痛的问题,轻则导致数据库的性能急剧下降,CPU利用率剧增,重则导致数据库挂起,触发ORA-O4031或者其他BuG导致岩机。在AWR报告中,VerSiOneoUnt大于20就会被报告出来,如下图所示。SQ1

5、.orderedbyVersionCount在VElnCOUM大干减时舸能会影麻触能这里的MCrSionCOUnl已经接近EQa,最大的5W,达奸系魅说是发电性的iodtwtI三Mw1y5wSQlkiISQlUodukVevtonCoonlAccabontSQ1.执行计划的生成,是受到很多因素影响的。相同父游标只是表示输入SQ1.的字面值相同。子游标对应的因素,如优化器类型、优化器的模式(Optimizerjiode),对应对象权限等的差异,都会影响到子游标的共享。在OraCIeIIg中,V$SQ1.SHARED工URSOR可以用来诊断子游标不共享问题的原因。该视图通过SO1._ID和CHI1

6、.D_NUMBER就可以定义某个特定子游标的信息。该视图中大部分列都是以VRCHAR2(1)的Y/N取值,每列的含义都是-个不能共享的理由。需要注意的是,这个理由N表示的是不能与第一个子游标(CHI1.D_NUMBER=O)共享的理由。考点游标4. SQ1.注入的含义是什么?正确答案:所谓SQ1.注入(SQ1.Injection),就是通过把SQ1.命令插入WEB表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务端执行恶意的SQ1.命令的目的。例如,在代码中使用下面的SQ1.语句:SQ1.=SE1.ECTTOP1*FROMUSERWHERENAME=+NAME+,ANDPASSWORD

7、=+PASSWORD+来验证用户名和密码是否正确,其中,NAME和PASSWORD是用户输入的内容,当用户输入用户名为,密码为BB或A=A时,拼接出来的SQ1.语句就为mSE1.ECTTOP1*FROMUSERWHERENAME=*AA,ANDPASSWORD=BB,OR,A,=,A,w,那么只要USER表中有数据,这条SQ1.语句就会有返IUl结果,这就达到了SQ1.注入的目的。作为DBA,永远不要信任用户的输入,相反,必须认定用户输入的数据永远都是不安全的,对用户输入的数据必须都进行过滤处理。考点SQ1.注入5. SQ1.ServerAccessOraCIe三种数据库之间的区别是什么?正确

8、答案:ACCeSS是一种桌面数据库,只适合于数据量少的应用系统,在处理少量数据和单机访问的数据时是很好的,效率也很高。但是ACCeSS数据库有一定的极限,如果数据达到100MB左右,那么很容易造成AeCeSS假死,或者消耗掉施务器的内存导致服务器崩溃。SQ1.SerVCr是基于服务器端的中型数据库,适合大容量数据的应用,在处理海量数据的效率、后台开发的灵活性、可扩展性等方面强大。因为现在数据库都使用标准的SQ1.语言对数据库进行管理,所以,如果是标准SQ1.语言,那么两者基本上都可以通用的。SQ1.SerVer还有更多的扩展,可以用存储过程、函数等。OraCle是基于服务器的大型数据库,主要应

9、用于银行、证券类业务等。考点维护操作6. 集群安装过程中的$GRID_HOME/root.sh脚本的作用是什么?正确答窠:该脚本主要执行CRS的配置、格式化OCR磁盘、更新etcinittab文件、启动OCSSd进程、新建etcoracleOCr.IoC文件等,是RAC安装过程中非常重要的一步。若后期OCR、O1.R或表决磁盘出现问题都可以通过重新执行root,sh脚本来修更集群的配置信息。京新执行root,sh脚本的过程如下:$GRIDH0MEcrsinstal1/rootcrs.pl-deconfig-force-verbose卸载配置信息SGRIDHOME/crs/instal1/roo

10、tcrs.pl-deconfig-force-verbose-lastnode-keepdg最后一个节点可以保留磁盘组ddif=devzeroof=devrhdiskNbs=1024kcount=1024清理磁盘头$DRIDJK)VE/root,sh-重新执行另外,deconfig执行完后可以考虑删除以下文件:Is-1$GRID_BASE/C1usterware/ckptGridH*fredSGRIDJIOMEZgpnp/*-typeffind$GRIDJIOMFZgpnp/*-typef-execrm-rf:集群的配置信息包含在文件$GRID_HOVE/crs/inst.a1lcrsconf

11、ig_params中,root.sh脚本根据该文件的配置信怠设置OCR的内容。在执行root,sh脚本的过程中产生的日志在目录$GRID_H0ME/cfgtoo11ogs/crsconfig/下。考点RAC7. 假定SERV表有A、B、C三个字段:SERV(ANUMBERdO)tBNUMBER(IO)jCNUMBER(10)o表RrSERV的内容如下:BCA1 10702 305011080以下两段P1./SQ1.的功能是根据A列的值,查找出对应B列的值赋予变量X,请分别判断这两段P1./SQ1.是否能正常执行,若不能正常执行,请指出错误的原因并修改。1)DEC1.AREXNUMBER;BEG

12、INSE1.ECTBINTOXFROMSERVWHEREA=I;DBMS.OUTPUT.PUTJJNECn1.CHAR(X);END;2)DEC1.AREXNUMBER;BEGINSE1.ECTBINTOXFROMSERVWHEREA=2;DBMSOUTPUT.PUT.1.INE(TOCHR(X);END:正确答案:这两段程序除了NHERE语句后的值不同以外,其他均一样。对于程序1),当=lIbl,返回了2行记录:对于程序2),当A=2时,返回了1行记录。对于变量X而言,只能接受一个值,所以,程序2)执行不报借,程序D执行报错:OKA-01422:exactfetchreturnsmoreth

13、anrequestednumberofrowso对于程序D有两种修改方法,第一种就是将SE1.ECTBINTOXFROMSERVWHEREA=匕”修改为“SE1.ECTDISTINCTBINTOXFROMSERVWHEREA=1;。第二种方法就是返回集合类型,修改后的程序块如下:DEC1.AREVarcursorsys.refcursor;XSERV%ROWTYPE;BEGINOPENVRCURSORFORSE1.ECTT.*EROMSERVTWHEREA=I;1.OOPfetchVarcursorintox;EXITWHENVRCURSOR%NOTFOUND;DBMSj)UTPUT.PUT_

14、1.INE(R.B);END1.OOP;END:考点高级操作8. 对于OraCIe数据库,使用裸设备的好处有哪些?正确答案:因为使用裸设备避免了再经过OS这一层,数据直接从磁盘到数据库进行传输,所以,使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。当然,这是在磁盘的0非常大,并且磁盘I/O已经成为系统瓶颈的情况下才成立。如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能。考点裸设备(RAW)9. 如何捕获存储过程中出现异常的行号?正确答案:使用函数DBVS.UTI1.ITY.FORMAT_ERROR_BACKTRACE可以

15、获取到出现异常时候的程序的行号,而函数DBMSJTIUTY.FORMAT_ERROR_STACK可以获取到出现异常时的错误信息,作用和SQ1.ERRM一样。考点程序处理10. 如何查询SCHEDU1.ERJOB的运行日志?正确答案:可以通过查询视图DB/_SCHEDU1.ER_JOBRUN_DETAI1.S来获取SCHEDu1.ERJOB的运行日志、产生的错误等信息。代码如下:SE1.ECTJRD.1.OG_ID,JRD.JOB_NAME,N.JOB一C1.ASS,T(1.CHAR(JRD.1.OG_DATE,YYYY-MM-DDHH24MISS,)1.OG_DATE,JRD.STATUS,JRD.ERROR#,JRD.RUxDURATlON运行时长,JRD.ADDITIONA1._INF.0FROMDBA_SCHEDU1.ERjOi1.1.OGN,)BA_SCHEDUI.ER_JOB_RUN_DETAI1.SJRDWHEREN.1.OGD=JRD.1.OGJ)ANDN.JOB.NAME=*JOB-IN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据库

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!