《数据库程序员面试分模拟题1.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分模拟题1.docx(9页珍藏版)》请在第壹文秘上搜索。
1、数据库程序员面试分模拟题1筒答题1. 在OraCle中,数据块、RCdo日志块及控制文件数据块的大小分别是多少?如何杳询?正确答案:这3种数据块分别介绍如卜丁1)数据块(DataBloc(江南博哥)k),是读写数据文件的最小单位,默认是8KB,可以通过SQ1.语句“SE1.ECTFI1.E#,NAME,B1.0CK_SIZEFROMVsdatafile;查询,单位为BYTe02) Red。日志数据块(Redo1.ogBlock),其大小一般等于操作系统的系统块的大小,一般为512B或4096B.可以通过SQ1.语句aSE1.ECTB1.OCKSIZEFROMVS1.OG;,或“SE1.ECT1
2、.EBSZFROMXSKCC1.Eiw查询,单位为BYTE。3)控制文件数据块(COntrolFileBlock),默认为16KB,可以通过SQ1.语句“SE1.ECTB1.OCK_SIZEFROM句CoNTRo1.Fl1.E;”查询,单位为BYTE。考点逻辑结构2. 如何查询到数据库的增长情况?正确答案:可以通过视图dba_hist_tbspc_space_usage来获取数据库的增长情况。考点性能诊断3. 怎样收集式的统计信息?怎样收集分区表的统计信息?正确答案:主要采用DBMS_STATS.GATHER_TAB1.E_STATS包进行统计信息的收集,如下:DBMS_STATS.GATHE
3、RJrAB1.E_STATS(USER,TB-NAME,CASCADE=TRUE)普通表DBMS_STATS.GATHER_TAB1.E_STATS(USER,TB_NAME,PARTNAME=,PTPARTNAME*,GRANU1.ARITY=PARTITION,CASCADE=TRUE);一针对分区表的单个分区进行收集统计信息除此之外,还有一些其他的用法,如卜;1) EXECDBMS_STATS.GATHER_DATABASE_STATS(USER):收集当前数据库下所有用户的统计信息。2) EXECDBMS_STATS.GATHER_SCHEMA_STATS(USER):收集当前数据库用
4、户下所有对象的林计信息。当系统的分区表数据量很大时,如果每次都收集全部的分区必然会导致统计信息的收集非常慢,在OraCleIlg之后可以通过设置INCREMENTA1.来只针对数据有变动的分区做收集:EXECDBVS_STATS.SET_TAB1.E_PREFS(USER,TABI.E-NAME,INCREMENTI/,TRUE);-只收集数据变动的分区SE1.ECTDBMS_STATS.GET_PREFSCINCREMENTA1.,NU1.1.,TAB1.l1.NAME)FROMDUA1.;一查看分区表INCREMENTA1.的值考点统计信息4. 如何批量删除JOB?正确答案:可以采用SQ1
5、.来生成删除JOB的语句,首先执行以下语句,可以根据情况对结果进行过滤:SE1.ECT1EXECDBMS.SCHEDU1.ER.DROPJOB(11JoBEAME11,TRUB);FKOMUSEI1.SCHEDU1.ERJOBSTl;将以上SQ1.生成的结果曳制到命令窗口就可以批量执行了。考点JOB5. DBMSOUTPUT提示缓冲区不够,怎么增加?正确答豪:采用命令DBMS_OUTPUT.ENAB1.E(20000);”,另外,如果DBvSj)UTPUT的信息不能显示,那么东要设置SETServeroiitputon。考点系统包6. 如何监控索引的使用状况?正确答案:在开发应用程序时,可能会
6、建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,在这种情况下就需要对这些索引进行监控,以便确定它们的使用情况,并为是否可以清除它们给出依据。监控索引有两种方式:(D直接监控索引的使用情况D设置所要监控的索引:A1.TERINDEXIDXTXXMONITORINGUSAGE;2)查看该索引有没有被使用:SE1.ECT*FROMV$0BJECT_USAGE;3)关闭监控:A1.TERINDEXIDX_T_XXNOMONITORINGUSAGE:查询V$。BJEC1.USAGE就可以知适薮据库对索引的使用情况。通过段时间的监控,就可以确定哪些是无用的索引。另外,为了避免使用
7、VSobjectjsage只能查询到当前用户下索引的监控情况,可以使用如下语句查询数据库中所行被监控索引的使用情况:SE1.ECTU.NAMEOWNER,10.NAMEINDEX_NAME,TNAMETAB1.E_NAME,DECODE(BITAND(I.F1.AGS,655360,NO,YES)MONITORING,DECODE(BITAND(OU.F1.AGS,D,O,NO,YES)USED,OU.STAR1.MONITORlNGSTART.MONITORING,ou.EndjionitoringendjonitoringFROMSYS.USERSU,SYS.OBJ$IO,SYS.OBJ$
8、T.SYS.IND$I,SYS.OBJECTUSAGEOUWHEREI.OBJ=OU.OBJttAND10.OBJit=OU.OBJeANDT.OBJ#=I.BOUANDU.USER#=10.OWNERtt:(2)通过查看历史的执行计划,分析索引的使用情况可以从视图DBAJnST_SQ1._P1.AN中获取到数据库中所有索引的扫描次数情况,然后根据扫描次数和开发人员沟通是否需要保留索引。考点索引7. Oracle如何删除归档日志文件?正确答案:在RMAN工具里删除归档日志文件:1 .rmantarget/2 .CROSSCHECKRCHIVE1.OGA1.1.:3 .1.ISTEXPIREDA
9、RCHIVE1.OGA1.1.;4 .DE1.ETEEXPIREDRCHIVE1.OGA1.1.:考点RMAN8. 用一条SQ1.语句查询出每门课都大于80分的学生姓名:namekechengfenshu文学文学文学语语数语数语数英三三四四五五五笫张张李李王王王答817576908110090SE1.ECTDISTINCTNAMEFROMTAB1.EWHERENAMENOTIN(SE1.ECTDISTINCTNAMEFROMTAB1.EWHEREFENSHUV=80);。考点SQ1.部分9. 如何固定SQ1.执行计划?正确答案:在实际项目中,通常在开发环境下,一些SQ1.执行没有任何功能问题,
10、而当生产环境或生产环境的数据量发生较大的变化时,其SQ1.的执行效率非常低。此时如果更改SQ1.,那么可能需要重新修改源程序以及重新编译程序。如果修改源程序的成本比较大,那么可以使用一些方法在不改变源应用程序的情况下更改特定SQ1.的执行计划并固定下来。因为在SQ1.语句的执行计划发生更改时,可能存在性能风险。SQ1.计划发生更改的原因有很多,如优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和SQ1.概要文件创建等。有4种方式可以固定和控制执行计划,分别是使用Hint(提示)、OUT1.lNE(存储概要)、SQ1.PRoFI1.E(SQ1.概要文件)和SPM(SQ1.Plan
11、Managemem,SQ1.计划管理)。考点执行计划10. 索引的优缺点有哪些?正确答案:创建索引可以大大提高系统的性能,总体来说,索引的优点如下:1)大大加快数据的检索速度,这也是创建索引的最主要的原因。2)索引可以加速表和表之间的连接。3)索引在实现数据的参照完整性方面特别有意义,例如,在外键列上创建索引nJ以有效地避免死锁的发生,也可以防止当更新父表主键时,数据库对子表的全表锁定。4)索引是减少磁盘I/O的许多有效手段之一。5)当使用分组(GRoUPBY)和排序(ORDERBY)夕句进行数据检索时,可以显著减少查询中分组和排序的时间,大大加快数据的检索速度。6)创建唯一性索引,可以保证数
12、据库表中每一行数据的唯一性。7)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。索引的缺点如下:1)索引必须创建在表上,不能创建在视图上。2)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。3)建立索引需要占用物理空间,如果要建立聚簇索引,那么需要的空间会很大。4)当对表中的数据进行增加、删除和修改的时候,系统必须要有额外的时间来同时对索引进行更新维护,以维持数据和索引的一致性,所以,索引降低r数据的维护速度。考点基本概念11. 后台进程、服务器进程和用户进程之间的区别是什么?正确答案:后台进程、服务器进程和用户进程间的关系如下图所示。进程结狗(I)USERPR
13、OCESS(用户进程)用户进程指的是OraCIe客户端进程。例如,常用的OraCle的SQ1.*Plus就是最常用的客户端进程。(2) SERVERPRoCESS(服务器进程)服务器进程指的是与客户端连接的服务器端的后台进程。对于每个前台的用户进程,后台都有一个服务器进程与之对应。服务器主要是通过它和用户进程进行联系、沟通及进行数据的交换。(3) BACKGROUNDPROCESSES(后台进程)后台进程是OraCIe的程序,在OraCle实例启动的时候启动,用来管理数据库的读写、恢复和监视等工作,例如PW)义SMON等进程。后台进程是OraCIe实例的核心。在UNIX操作系统上,OraCIe
14、的后价进程对应于操作系统进程,也就是说,一个OraCIe后台进程将启动一个操作系统进程:在WindOWS操作系统上,OraCle的后台进程对应于操作系统线程,打开任务管理器,只能看到个ORAC1.E.EXE的进程,但是通过另外的工具,就可以看到包含在ORAC1.E.EXE进程中的线程。考点后台进程12. 分区表有哪几类?如何选择用哪种类型的分区表?正确答案:OraCIe的分区可以分为范围分区(RANGEPARTITION)、哈希分区(HASHPARTITION).列表分区(IlSTPARTITION).复合分区(组合分区)、INTERVA1.分区(间隔分区)和系统分区。其中,INTERVA1.
15、分区和系统分区是OraCleIIg的新特性,尤其INTERVA1.分区在生产环境中还是比较实用的。对于海量数据的数据库设计,分区的设计非常重要。例如,对于一个大表,应该采用哪种类型的分区,对于以后数据库的性能和管理至关重要。其实,范围分区、哈希分区和列表分区这三种分区的特点都非常明显:1)如果需要进行数据的过期化处理,那么范围分区基本上是唯一的选择。2)如果需要数据的均匀分布,那么可以考虑使用哈希分区。3)如果数据的值可以很好地对应于某个分区,那么就可以考虑使用列表分区。在上面的原则基础上,再结合性能的影响因素,来最终确定使用哪种类型的分区。如果选择的分区不能确保各分区内数据量的基本平均,那么这种分区方式有可能是不恰当的。比如对于RANGE分区,假设分了10个分区,而其中一个分区中的记录数占总记录数的90%,其他9个分区只占总记录数的10%,则这个分区方式就起不到数据平衡的作用。考点分区表13. Oracle数据库在物理上是由哪些文件组成的?正确答窠:Oracle数据库物理结构如下图所示。Oracle数据库的物理结构由拄制文件(Contr