数据库程序员面试分模拟题4.docx
《数据库程序员面试分模拟题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三种数据库之间的区别是什么?正确
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序员 面试 模拟
