数据库程序员面试分模拟题2.docx
《数据库程序员面试分模拟题2.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分模拟题2.docx(18页珍藏版)》请在三一办公上搜索。
1、数据库程序员面试分模拟题2简答题1. 在Undo表空间数据文件丢失的情况下如何恢复?正确答案:恢复大约nJ以分为3种情况:有备份,这种情况卜.直接采用备份的文件进行恢复即可;无备份但是有完整的归档(江南博哥)文件存在,这种情况卜可以使用命令A1.TERDATABASECREATEDATAFI1.E文件号S,u01apporacleoradatalhrdbundotbs01.dbfsize50m;“来创建丢失的Und。文件,然后使用“RECOVERDATAFI1.E文件号;”进行数据库文件恢复即可;无备份,归档文件丢失,在这种情况下的恢复比较复杂。首先应该切换Und。表空间到一个新建的UndO表
2、空间中,并设置原有表空间的管理模式为手动管理模式,然后将隐含参数“_oFF1.lNE_rollback_segments”设置为TRlJE,些关键性的命令如下:A1.TERSYSTEMSETUM)C1.TAB1.ESPACE=UNDOTBS2SCOPE=SPFI1.E;A1.TERSYSTEMSETUM)C1.vANAGEMENT=MANUA1.SCOPE=SPFI1.E:A1.TERSYSTEMSET*OFF1.INEROI.1.BCKSEGMENTS=TRUESCOPD=SPFI1.E;A1.TERSYSTEMSETCORRUPTEDRo1.1.BACKSEGMENTS*=*SYSSM1.
3、1$,SYSSMU2$SCOPE=SPFI1.E;CREATEUNDOTAB1.ESPACEUNDOTBS1DTFI1.Eu03apporacteoradata/ora1024gundotbs01.dbf,SIZE50MAUToEXTENDON;A1.TERSYSTEMSETUND(1.TAB1.ESPACE=UNDoTESlSCOPE=SPFI1.E;A1.TERSYSTEMSETUND05ANAGEMENT=AUTOSCOPE=SPFI1.E;A1.TERSYSTEMRESET*_OEF1.1NE_RO1.1.BACK_SEGMENTS*SCOPE:SPFI1.ESID=*;A1.TERS
4、YSTEMRESET*_CORRUPTED_RO1.I.BACK_SEGMENTS*SCOPE=SPFI1.ESID=;考点RMAN2. 什么是间隙(NeX1.Key)锁?正确答案:当使用范围条件而不是相等条件检索数据的时候,并请求共享或排它锁时,InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫作“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙(NeXt-Key)锁。间隙锁是InnODB中行锁的种,但是这种锁锁住的不止一行数据,它锁住的是多行,是一个数据范围。间隙锁的主要作用是为了防止出现幻读(PhantomRead)
5、用在RePeated-Read(简称RR)隔离级别下。在Read-COmmiICd(简称RC)下,一般没有间隙锁(有外键情况下例外,此处不考虑)。间隙锁还用于恢熨和复制。间隙锁的出现主要集中在同一个事务中先DE1.ETE后INSERT的情况,当通过一个条件删除一条记录的时候,如果条件在数据库中已经存在,那么这个时候产生的是普通行锁,锁住这个记录,然后删除,最后释放锁。如果这条记录不存在,那么问题就来了,数据库会扫描索引,发现这个记录不存在,这个时候的DE1.ETE语句获取到的就是一个间隙锁,然后数据库会向左扫描,扫到第一个比给定参数小的值,向右扫描,扫描到第一个比给定参数大的值,然后以此为界,
6、构建一个区间,锁住整个区间内的数据,一个特别容易出现死锁的间隙锁就诞生了。在MySQ1.的InnODB存储引擎中,如果更新操作是针对个区间的,那么它会锁住这个区间内所有的记录,例如,UPDATEXXXXWHEREIDBETWEENAANDB,那么它会锁住A到B之间所有记泉,注意是所有记录,甚至这个记录并不存在也会被锁住,这个时候,如果另外一个连接需要插入一条记录到A与B之间,那么它就必须等到上一个事务结束。典型的例子就是使用AUTOJNCREMEYrID,由于这个ID是一直往上分配的,因此,当两个事务都INSERT时,会得到两个不同的ID,但是这两条记录还没有被提交,因此,也就不存在,如果这个
7、时候有一个事务进行范围操作,而且恰好要锁住不存在的ID,就是触发间隙锁问题。所以,MySQ1.中尽量不要使用区间更新。InnoDB除了通过范围条件加锁时使用间隙锁外,如果使用相等条件请求给一个不存在的记录加锁,那么InnODB也会使用间隙锁!间隙锁也存在副作用,它会把锁定范围扩大,有时候也会带来麻烦。如果要关闭,那么一是将会话隔离级别改到RC下,或者开启innodb_locks_unsafe_for_binlog(默认是OFF)。间隙锁只会出现在辅助索引上,唯一索引.主键去引亮没有间隙锁。间隙锁(无论是S还是X)只会阻塞INSERT操作。在MySQ1.数据库参数中,控制间隙锁的参数是innod
8、b_1ocks_unsafe_for_bin1og,这个参数的默认值是OFF,也就是启用间隙锁,它是一个加尔值,当宿为TRuE时,表示DlSAB1.E间隙锁。考点锁3. 如何在执行恢复的时候将数据文件恢复到别的路径?正确答案:主要采用命令setnewnamefordatafile”和4switchdatafileall;。考点RMAN4. 如何插入单引号到数据库表中?正确答案:可以用ASCIl码处理,其他特殊字符如&也一样,如下:INSERTINTOTVA1.UESCICHR(39),m,);CHR(39)代表字符或者用两个单引号表示一个:INSERTINTOTVA1.UESCm,):一两个”
9、可以表示一个5. 密码延迟验证是什么?如何屏蔽?正确答案:从OraCIeIIg开始,如果一个用户使用不正确的密码尝试登录数据库,那么随着登录失败次数的增加,每次登录验证前延迟等待的时间也会增加。通过设置EVENTS28401可以屏蔽密码延迟验证:A1.TERSYSTEMSETEVENT=28401TRACENAMECONTEXTFOREVER,1.EVE1.1,SCOI,E=SPF11.E;设置该事件后重启数据库即可。关于28401事件的解释如下:oraclcorcIalhroerrora284D128401,00000,EventtodisabledelayafterthreefailedI
10、Oginattempts*/Document:NO/*Cause:N/A/*Action:Setthiseventinyourenvironmenttodisablethelogindelay/whichwillotherwisetakeplaceafierthreefailedloginattempts./*Note:THISISNOTAUSEREBROKNUMBER/MESSAGE.THISDOESNOTNEEDTOBE/TRANS1.ATEDOKDOCUMENTED.对于正常的系统,由于密码的更改,可能存在某些被遗漏的客户端,不断重熨尝试使用错误密码登录数据库,从而引起数据库内部长时间的
11、“libraecachelock”或ttrowcacheIOCk的等待,这种情形非常常见。这种现象在Oracle10.2和11.1中体现的等待事件为rowcachelock,而在OraCIe11.2中体现的等待事件为rtIibrarycacheIockw,当出现这类问题时,非常典型的AwR报告呈现如卜工首先在TOP5中,可能会看到显著的IibraryCaCheIOCk的等待,以下范例来自OraCle11.2.0.3版本的真实情况:Top5TimedForegroundEventsEventWaltsTlm()Avgwait(mt)%DBtimeWaItCIasslibrarycachelock
12、5143.139,90261087599988Concurrency:DBCPU3I幽I1ljrsorptnSwaMon450制一WI0.00!ConcurrencyI若数据库版本小于U.2,则在WR中可能的情况如下:Top5TimedForegroundEventsEventWaitsTime(三)Avgwait(ms)%DBtimeWaitCIassrowcachelock237310130836.72ConcuencyDBCPU23127.35logfilesync1.05019182.24Commitdbfilesequentialread1,9731051.19UserI/Odire
13、ctpathread1.540640.67USerI/O在这类情况下,时间模型(TimeModelStatiStiCS)中会显示如下指标,其中,“connectionmanagementcallelapsedtime占据了主要的DBTime,这个等待直接表明是在建立数据库连接时产生的:TimeModelStatistics Totaltimeindatabaseuser-calls(DBTime):3143648.8s Statisticsincludingthewordbackground-measurebackgroundPrt Orderedby%orDBtimedesc,Statist
14、icnameStatisticNameTime(三)%OfDBTlmeiconnectionmanagementcallelapsedtime3,143,473,399.991DBCPU336.16o。1.Sqlexecuteelapsedtime122.99100011-.-,iparsetimeelapsedi2_0.00:I此外,在AWR中的DiCtionaryCacheStatS部分也可以看到很明显的等待。此问题在MOS上相应的文档为“High,1ibrarycachelockWaitTimeDuetoInvalid1.oginARempts(1309738.1)此外,从OraCIeI
15、Ig开始,开启了密码大小写验证,如果数据库是从OraCle10g升级或迁移过来的,那么需要特别地注意这个变化,可以通过初始化参数SEC_CASE_SENSITIVE_1.OGON来控制这个特性。考点用户6. 什么是SQ1.语言?SQ1.有哪些特点?正确答案:SQ1.(StructureQuery1.anguage,结构化查询语言)是一种在关系型数据库中定义和操纵数据的标准语言。关系型数据库采用SQ1.作为客户端程序与数据库服务器间沟通的标准接口。客户端发送SQ1.指令到服务器端,服务器端执行相关的指令并返回其查询的结果。在数据库服务器端执行的SQ1.指令可以实现各种数据库操作和管理功能,例如,
16、数据的查询和更新(包括添加、修改和删除数据)操作;创建、修改和删除各种数据库对象(如数据表、视图、索引等);数据库用户账户管理、权限管理等。关系数据语言的共同特点:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。考点SQ1.分类7. 1.inux下如何查看系统启动时间和运行时间?正确答窠:可以用uptime和查看procUPtime文件。Duptime命令输出:16:11:40UP59days,4:21,2users,loadaverage:0.00,0.01,0.002)杳看procuptimc文件计算系统启动时间cat/proc/uptime输出:5113
17、396.94575949.85第一数字即是系统运行的时间5113396.94秒,运用系统工具date即可算出系统启动时间。date-d,S(awk-Fprint$1,procuptime)secondago+%Y-%m-输出:2008-11-0911:50:313)杳看procUPtime文件计算系统运行时间moreprocuptimeawk-F.,run_days=$1/86400;runhour=($1%86400)/3600;run_minute=($1%3600)/60;run_second=$l(60;PrinIf(系统已运行:%d天刎时%d分%d秒n”,run_days,run_h
18、our,run_minute,runsecond)输出:系统工运行:59女4时13分9秒此外,还可以使用如下命令杳询:who-b查看最后一次系统启动的时间who-r查看当前系统运行时间lastrebootnJ以看到1.inUX系统历史启动的时间top命令的up后表示系统到目前运行了多久时间w命令的up后表示系统到目前运行了多久时间8. MySQ1.中的索引有什么优点?正确答窠:索引(IndeX)是数据库优化中最常用也是最重要的手段之通过索引通常可以帮助用户解决大多数的SQ1.性能问题。索引是帮助MySQ1.高效获取数据的数据结构,它用于快速找出在某个列中含有某一特定值的行。如果不使用索引,那么
19、MySQ1.必须从第1条记录开始读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,那么MySQ1.就能快速到达一个位国去搜寻数据文件的中间,没有必要看所有数据。索引在MySQ1.中也叫作“键(Key)”,是存储引擎用于快速找到记录的一种数据结构。总体来说,索引有如下几个优点:D索引大大减少了服务器需要扫描的数据量。2)索引可以帮助服务器避免排序和临时表。3)索引可以将随机I/O变为顺序I/O。考点索引9. E-R图向关系模型的转换一般遵循哪些原则?正确答案:E-R图向关系模型的转换一般遵循如下原则:1) 一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体
20、的码就是关系的码。例如,学生实体可以转换为如卜关系模式,其中,学号为学生关系的码:学生(学号,姓名,出生口期,所在系,年级,平均成绩)。同样,性别、宿舍、班级、档案材料、教师、课程、教室、教科书都分别转换为一个关系模式。2) 一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性。该关系的码有如下3种情况:若联系为1:1,则每个实体的码均是该关系的候选码。若联系为l:n,则关系的码为n端实体的码。若联系为m:n,则关系的码为诸实体码的组合。下面分别来讲解这3种情况。联系为1:1一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。a)如果转
21、换为一个独立的关系模式,那么与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。b)如果与某一端对应的关系模式合并,那么需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。联系为n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。a)如果转换为一个独立的关系模式,那么与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。b)如果与n端对应的关系模式合并,那么在n端实体对应模式中加入1端实体所对应关系模式的码,以及联系本身的属性。而关系的码为n端实体的码。联系为m:n一个m:n联系转换为一个关
22、系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。3)同一实体集的实体间的联系,即自联系,也可按上述1:1、l:n和m:n三种情况分别处理。例如,如果教师实体集内部存在领导与被领导的1.n自联系,那么可以将该联系与教师实体合并,这时主键职工号将多次出现,但作用不同,可用不同的属性名加以区分。例如,在合并后的关系模式中,主犍仍为职工号,再增设一个“系主任”属性,存放相应系主任的职工号。4)具有相同码的关系模式可合并。为了减少系统中的关系个数,如果两个关系模式具有相同的主键,那么可以考虑将它们合并为一个关系模式。合并方法是将其中一个关系模式的全部属性
23、加入另一个关系模式中,然后去掉其中的同义属性(nJ能同名也可能不同名),并适当调整属性的次序。考点E-R模型10. 在OraCIe中,什么是异常?正确答案:异常(EXCePtion)处理是用来处理正常执行过程中未预料到的事件,包括程序块的异常处理、预定义的错误和自定义错误。如果P1./SQ1.程序块一旦产生异常,而程序并没有指出如何处理,那么程序就会自动终止运行。异常处理部分一般放在P1./SQ1.程序体的后半部分,结构如下。EXCEPTIONWHENfirst_exceptionTHENWHENSeCOnd.exceptionTHENWHENOTHERSTHEN考点程序处理11. RESET
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序员 面试 模拟
链接地址:https://www.31ppt.com/p-7141708.html