欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    数据库程序员面试分类真题10.docx

    • 资源ID:1415994       资源大小:35.26KB        全文页数:11页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库程序员面试分类真题10.docx

    数据库程序员面试分类真题10简答题1. P1./SQ1.中的%R0HTYPE和%TYPE的区别是什么?正确答案:%TYPE是定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的(江南博哥)某个列的数据类型相同。解析关于ROH'TYPE,需要了解以下内容:1)%ROWTYPE返回的是一个记录类型,其数据类型和数据库表的数据结构一致。2)声明的变量时应于数据库表或视图中列的集合。3)在与ROWTYPE之前加上数据库发名。4)记录内字段名和数据类型与参照点或视图中的列相同。具体而言,为ROWTYPE有如下优点:1)可以不必知道数据库中列的数量和类型。2)在运行期间,数据库中列的数量和类型可能发生变化,但是却不用修改代码。3)在SE1.ECT语句中使用该属性可以有效地检索表中的行。2. 使用哪个数据字典可以查询序列的定义信息?正确答案:可以通过杳询数据字典视图DBA.SEQUENCES获取序列的定义信息,NEXTV1.返回序列中下一个有效的值,任何用户都可以引用CURRVA1.中存放的序列的当前值。当序列值不符合实际需求时,可以执行A1.TERSEQUENCE命令修改序列,需要注意的是,启动序列号不可以修改(STARTWITHN)修改序列的语法和序列的创建语法一样,只是将CREATE修改为A1.TER即可。3. 同义词的定义及其作用是什么?正确答案:同义词是其他对象(例如表、实体、存储过程、函数、包、序列)的别名。同义词也可以是另一个同义词的别名。同义词的优点主要体现在以下几个方面:D当使用对象时,不需要指出对象的所有者。2)引用对象不需要指出它所在的数据库。创建同义词必须要有CREATEANYSYNONYM.CREATESYM)NYM系统权限。要创建全局的同义词,必须有CREATEPUB1.ICSYM)NYN系统权限。创建同义同的语法如下:createorreplacepublicsynonym同义词名称FOR用户名,表名称;4. 当DM1.语句中有一条数据报错时,如何让该DM1.语句继续执行?正确答案:当一个DV1.语句运行的时候,如果遇到了错误,那么这条语句会进行回滚,就好像没有执行过。对于一个大的DM1.语句而言,如果个别数据错误而导致整个语句的回滚,那么会浪费很多的资源和运行时间。所以,从OraCIeIOg开始Oraele支持记录DM1.语句的错误,而允许语句自动继续执行。这个功能可以使用DBMSERR1.OG包实现。利用CREATEERROR1.OG来创建Tl表的DM1.错误记录表:SQ1.>EXECDBMtERR1.OGcREAlE-ERRORUQTlT1.ERR1.OGV1.HRtP1.SQ1.ProCdUrcWtteSfilnycompletedUIRgwd三>DESCTI.ERR1.OG;X三toll?TypeCfiA.,M三iSU三&EK.ESGSV三Vi2(三)触皿RoSROIlDC«Ara_WKHW2CfiAJSKJAGSYAOs2(2000)AYAm2(砌BV三W2(三)1.H0rcl2sn>INSERTINTOTlSE1.ECTFROMT21.OGERRORSINTOT1.ERRWG(T1.ERR1.OGuR)REJKT1.IMfTUNUMnID;OrcwscratalSHECTtFROMT1.ERR1.OG;一,J<5一671I-9)01uw.Maj-wj¾.MK¾JOMjW1.ftowiwow.gs.<ym.tm.awj*IaUMhgtErtMAJlJ)岫-13<而:ICW-OOOOl:UnqMCcretrirtWI.T1J)«U«d22CM)M01:IhqOettCStrMt(IHiWJ1J)«Utd'!ffR.Tl-u«331 CRA-(W)Oj:UMMtOMtrjrtRt.n.A)n)btfd1B«Tl1.Hl441CRMK001:WMMWftStrort(bWK,11.A)ntt<j二:,I脚71«J52 (XAl:UTXMCOMtrart(w.11.AJ11ted'"BW-Tl-IHl66!0u-oorumjjsCOWtrart(U*!.T1.A)«bted、“飞【Htt-TI-1.HI771OflA<WOi:un9ectrart(WU>K_T1_A)wtedIEWrTU8B3 CAi:2ConmrtIWJ1.A)med=-净ek>tuh99ICM-OOOOl:ungjeConflrirt(WRPKJl-A)mixedIO10可以看到,插入成功执行,但是插入记录为。条。对应的错误信息表中已经包含了插入的信息。而且从错误信息表中还可以看到对应的错误号和详细借误信息,ORA_ERR_OPTYP$为错误操作类型,I表示为INSERT。关于1.oGERRORS的语法为,INTo语句后面跟随的就是指定的错误记录表的表名。在INTO语句后面,可以跟随一个表达式“('T1.ERR1.OGJHR')”即ORA_ERRTAG$中存储的信息,用来设置本次语句执行的相误在错误记录表中对应的TAG。有了这个语句,就可以很径易地在错误记录表中找到某次操作所对应的所有的错误,这对于错误记录表中包含了大量数据,且本次语句产生了多条借误信息的情况十分有帮助。只要这个表达式的值可以转化为字符串类型就可以。REJECT1.IVlT则限制语句出错的数量。1.HRorclasm>INSERTINTOTlSE1.ECT*FROMT21.OGERRORSINTOT1.ERR1.OG(,T1-ERR1.OG,)REJECT1.IMIT1;INSERTINTOTlSE1.ECT*EROMT21.OGERRORSINTOti_errlog('ti_errlog')rejectlimiti*ERRORat1i11e1:ORA-OOOOl:uniqueconstraint(1.HR.PK_T1_A)violated可以看到,当设置的REJEcTUMIT的宿小字出错记录数时,语句会报错,这时1.OGERRoRS语句没有起到应有的作用,插入语句仍然以报错结束。而如果将REJECT1.IMlT的限制设置大于等于出错的记录数,则插入语句就会执行成功,而所有出借的信息都会存储到1.OGERRoRS对应的表中。只要指定了1.OGERRORS语句,不管最终插入语句是否成功地执行完成,在错误记录表中都会记录语句执行过程中遇到的错误。比如第一个插入由于出错数目超过REJECT1.lMlT的限制,这时在记录表中会存在REJECT1.IMIT+1条记录数,因此这条记业错误导致了整个SQ1.语句的报错。如果不管碰到多少错误,都希望语句能继续执行,那么可以设置REJEeT1.lMIT为UN1.nnTEDo需要注意的是,即使做了回滚操作,错误日志表中的记录并不会减少,因为OraCle是利用自治事务的方式插入错误记录表的。1.OGERRORS可以用在INSERT、UPDATE、DE1.ETE和MERGE后,但是,它有以卜.限制条件:1)违反延迟约束。2)直接路径的INSERT或MERGE语句违反了唯一约束或唯一索引(注意:从OracleUg开始,已经取消了该条限制)。3)更新操作违反了唯一约束或唯一索引。4)错误日志表的列不支持的数据类型包括1.oNG、1.ONGRAW,B1.OG.C1.OB.NC1.OB.BFl1.E以及各种对象类型。OraCle不支持这些类型的原因也很简单,这些特殊的类型不是包含了大量的记录,就是需要通过特殊的方法来读取,因此Oracle没有办法在SQ1.处理的时候将对应列的信息写到错误记录表中。什么是临时表?正确答案:在创建藉表的时候,如果没有特殊的指明,那么创建的表是一个永久的关系型表,也就是说,这个表中对应的数据,除非是显式地删除,否则表中的数据是7k远都存在的。相对应的,在OraCIe数据库中,还有一种类型的表,叫作临时表。这个临时表与永久表最大的区别就是表中的数据不会永远地存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自J删除,数据库自己会H动清除。Oracle的临时表创建之后基本不占用表空间,如果没有指定临时表(包括临时表的索引)存放的表空间,那么插入临时表的数据是存放在Oracle系统的默认临时表空间中(TEMP),-个系统可能有多个临时表空间。临时发的数据只能存放在临时表空间中。临时表的数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在,会话的数据对于当前会话私有,每个会话只能看到并修改自己的数据。DM1.锁不会加到临时表的数据上。可以对临时表创建索引、视图、触发器,可以用exp和imp工具导入导出表的定义,但是不能导出数据。考点对象6. 临时表的特点有哪些?正确答案:临时表的特点有如下几点:D多用户操作的独立性。对于使用同一张临时代的不同用户,OraCle都会分配一个独立的TEMPSEGMENT,这样避免了多个用户在对同-张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性。2)数据的临时性。既然是临时表,顾名思义,存放在该表中的数据是临时性的。OraCIe根据创建临时表时指定的参数(ONCOMMITDE1.ETEROWS/ONCOMMITPRESERVEROWS),自动将数据TRUNCATE掉。考点对象7. OraCle有哪几种临时表?正确答案:Oracle数据库根据临时表的性质不同,可以分为事务临时表SNCOMMITDE1.ETERoWS)与会话临时表(ONCOMMITPRESERVEROWS)事务临时表是指数据只在当前事务内有效,该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时衣中的数据将自动被清空,其他的内容和会话级的临时表的一致(包括退出SESSION的时候,事务级的临时表的数据也会被清空)。一般情况下,如果在创建数据表的时候,没有特殊指明表是会话临时表,那么该表默认为事务临时表。事务临时表中的数据被清空的情况包括提交事务(COMMlT)、回滚事务(RO1.1.BACK)以及退出SESSION。会话临时表,顾名思义,是指数据只在当前会话内是有效的临时表。关闭当前会话或者进行新的连接之后,数据表中的内容就会被清除。会话临时表与事务临时表主要的差异就在于删除数据的时机不同。事务临时表是在事务提交或回滚的时候清除数据,而会话临时表则是在关闭当前会话的时候清除数据。只要当前会话没有关闭,即使事务完成了,会话临时表中的数据仍然存在,不会被清除。考点对象8. 如何判断某张表是否是临时表?正确答案:查看一-张表是否临时表,可以从DBAjAB1.ES视图的DURATION列来查询:SE1.ECTUTJAB1.EwNAhffi,UT.TAB1.ESPACE_NAMEIT.TEMPORARY:DEcoDHUh)URATxmsysssession松瀚1,iSysctraxSAcTIoN停务妫版t表先型fromDbajablesutwiereUnEMPoRARY=YANDunABliNMEUKpiCGE:T三XUET三SPACE.三T三OGn皿EEuSVl三OTTjBS三JJBYSS考点对象9. 默认情况下,OraCIe是否会收集临时表的统计信息?正确答案:临时表默认是不收集统计信息的,但是可以使用DBMS_STATS.GATHER_SCHEMA_STATS在SCHEMA级别收集,需要设置GATHERjrEMP为TRUE(默认为FA1.SE);也司以和普通表一样使用GATHER_TAB1.E_STATS初表级别来收集。需要注意的是,只能收集会话临时表的统计信直,不金收集事务临时表的统计信息。会话临时表的统计信息是被所有的会话所共享的,所以,在一般情况卜.,不建议收集临时表的统计信息,否则可能会导致很严重的数据库性能问题。临时表的统计信息在生成执行计划时一般是被动态采样的。考点对象10. 什么是OraCleDireetOry?正确答案:OracleDirectory可以让用户在Oracle数据库中灵活地对文件进行读写操作,极大地提高了Oracle的易用性和可扩展性。考点对象11. Oraele的DB1.NK是什么?正确答案:当用户靠党本地数据库访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的DB1.INK,通过DB1.INK可以像访问本地数据库一样访问远程数据库表中的数据。其实,DBUNK和数据库中的VIEW差不多,创建DB1.INK的时候需要知道待读取数据库的IP地址、ORAC1.ESID以及数据库用户名和密码。在创建DB1.lNK之前,普通用户必须具有相关的权限才能创建DB1.lKK,以SYS用户登录到本地数据库可以看到相关的权限:SE1.ECT*FROMUSERSYSJjRIVSTWHERET.PRIVI1.EGE1.IKEUPPER(,%1.INK%,);USERNAMEIPRIVI1.EGEJadminoptionSYSDROPPUB1.ICDATABASE1.INKnoSYSCREATEDATABASE1.INKNOSYSCREATEPUB1.ICDATABASE1.INKHO可以看出,在数据库中DB1.INK有3种权限:CREATEDATABASE1.lNK(所创建的DBUNK只能是创建者自己使用,其他用户不能使用)、CREATEPUB1.ICDATABASE1.INK(PUB1.IC表示所创建的DB1.lNK所有用户都可以使用)与DRoPPUB1.ICDATABASE1.lNK(删除公共的DBUNK)II可以使用如下授权语句给用户SCOTT授予CREATEPUB1.ICDATABASE1.INK和DROPPUB1.ICDATABASE1.INK两个权限:GRANTCREATEPUB1.ICDATABASE1.INK,DROPPUB1.ICDATABASE1.INKTOSCOTT;查询数据库的DB1.lNK可以使用SQ1.语句:SE1.ECT*IROMDBDB1.INKS。考点对象12. Oracle的表可以分为哪几类?正确答案:从理论上来讲,不存在一种能够满足所有读取要求的数据存储方式,所以,Oraele设计了大约5种数据的存储格式,详见下表。分类怖然(HaPTable)例蹦分区表索弓凰织表(IOT)ft表的旗M,K胃会收故髓他方,m以耕版IWmMM表又分为灯会送的蝴酬表岭竹务的全般附表酬频行分瓯搦*上表例提-轶触福只鹏表中的WHEM1.t可稣州多个表空MMXH.吊Hfl爆It不至于每次尉摘密表,On*可口有大表稣引分好干个里卜更方三fift.wm-n&前的表脑分区表科舞,Mt腼一”都M4处删t的蚓粒l-tff三ft*引鼬中的及它三½m.蚓快般也表作嗔蜩帆Mmm-量麟骷渊蝴髀她m三.赫2Onde中一舸M存献髓的施.匿腿舸娘姬AKU曾访随表的麟所稣的稣刑I触D眦M掩2)鼬大Bmi)«m蝴膜(自动*喇)2)产物少VIQi3)相的会½ZHi.不产物IHi弦的分区的除(把金乱侬醐帕睚个邠)2)揖裁的前兄(可叫某憎区新TRUNCATE)3)Xftttem(分区嫌EXeHANG1.前表和分区黝京个分区2间H黑郴鬼交换)4)分区SM(SP1.IT)Mg合井(MERGE)im秋牍引H引戢比孤1令目表1)可姬夕朝物序2)渺岫W),渺了因期耕所赫的系*m3)节行34配M.H三W*f*«.曼轲嘱就的器雅力解列来的(续)分类隧域(HeapIW全剧恻表分区发*三O(IOT)隹衣缺点1)更却抑眼大2)DE1.ETE无法触州(麻虾懵)3)表巳求太X.4) 一引国麹5) 5Pft(三,电朝假MW,1)硒M2)励附D诵法妹2)分区过多对系维有一定NM3)断IWJNCATE、DROPit作胎微全琳引精I)麟妹2)殊腌以Dam2)表就开瞅黔球适合大需腌计频酷接口搬计龄H志表,林炀表某黜舶我期赚关额嫡多表字真IfiH(DBAlB1.ES)SHKTaFROMdba_tablesdWH.ERED.IOT_mvrAM)D.TEMPORARY=NANDdPAR-1111ONED=NOANDd.CU三R-NAMEISNU1.1.;SE1.ECTUT.TAB1.E.NAME,DECODE(UrDuRATl0N,SY三SW会苗被:1SYSSTRANSAcnON;修圾,)财粉飕FROMDBAJAB1.ESUrWHEREUT.TEMPO-RARY=Y;SE1.ECTDPARrniONED.D.OWNERDTAB1.E_NAMEJ).TAB1.E_1.0Cla)JOTJTreId.temporaryfromdba_TAB1.ESD三REDfART.11NED=YES':SE1.ECTFROMDB.VUB1.ESDWHERED.10T.TY-PE<10T;SaEeTD.iable_nameDrU啊岫(EDrbIsterwnerFROMDBAJAB1.EDWIOED.Ol三R.NEENoTNIl1.从上衣中可以看出,没有最好的技术,只有最合适的技术。考点对象13. 给出两种检查表结构的方法。正确答案:DESCRIBE命令(平时用DESC即可);DBMSMETADATA.GETDD1.包。考点对象14. Oracle中哪个包用于生成随机值?正确答案:DBMSRANDOM是一个可以生成随机数值或者随机字符串的程序包。这个包有INITIA1.IZE。、SEED。、TERMINATEO.VA1.UEO.NORMA1.O.RANDOM(),STRINGo等几个函数,它们提供了内置的随机数生成器,可以用于快速生成陋机数。考点系统包15. OraeIe中哪个包可以获取环境变量的值?正确答案:可以通过DBMS.SYSTEM.GET_ENV来获取环境变量的当前生效值。考点系统包16. 如何让程序等待60s后继续运行?_正确答窠:可以执行$0RAC1.EjOMErdbmsadmindbmslock.sql来创建DBVS_1.OCK包,该包可以实现让程序行时等待的功能。若想普通用户使用该包,则需妻在SYS用户下执行“GRANTEXECUTEONDBMS_1.OCKTOUSER_XXX;”命令。考点系统包17. Oracle使用哪个包可以生成并传递数据库告警信息?正确答案:DBMS_A1.ERT包用于生成并传递数据库告警信息。若想使用DBMS_A1.ERT包,则必须以SYS登录,为普通用户授予执行权限。DBMS_A1.ERT能让数据库触发器在特定的数据库值发生变化时向应用程序发送报警。报警是基于事务的并且是异步的(也就是它们的操作与定时机制无关)。考点系统包18. 程序包DBMS_APP1.ICATION_INFO.READ.MODU1.E的作用是什么?正确答案:DBMS.APP1.ICATIONNFO是一个非常有用的程序包,它提供了通过VSSESSION跟踪脚云运行情况的能力,该包可以填充V$SESSloN中的C1.lENTINFO.MODU1.E和ACTloN这3列的值O在C1.IENTINFO列中存放程序的客户端信息:MoDU1.E列存放主程序名,如包的名称:ACTlON列存放程序包中的过程名。该包不仅提供了设置这些列值的过程,还提供了返回这些列值的过程。主要有如下的存储过程:1) DBVSAPP1.ICATIONNF0.SET_C1.IENTNF0:填充VSSESSIoN视图的C1.IENT_INFO列,记录客户端的信息,这里可以记录客户端的IP地址。2)DBMS_APP1.ICATloNNF0.SET.MODU1.E:填充VSSESSION视图的MODU1.E列,记录主短序名。3)DBMS_APP1.ICATI0N_INF0.READ_C1.IENT_INFO:从V$SESSIoN中读取客户端的信息。4) DBVS.APP1.ICATIONNFO.READ_MODU1.E:从V$SESSloN中读取主程序的名称。考点系统包19. 如何填充V$SESSloN的C1.lENTINTo歹IJ和CuENTIDENTIFIER?0?正确答案:Vssession的C1.IENtnfo列和CUENidentifier列往往为空,所以需要写登录触发器,然后在触受器中使用如下的凉储过程记录这2列的值:BEGINDBMS_APP1.ICATION_INFO.SET_C1.IENT_INFO(SYS.CONTEXT('USERENV','IF_ADDRESS')'DBMS.SESSION.SET_IDENTIFlER(SYS_CONTEXTCUSERENV,HOST*);END;考点系统包20. ORROWSC函数的作用是什么?正确答橐:对于每一行数据,ORAROWSCN返回每一行最近被修改的大概时间,可用于查询表最后一次被执行DM1.操作的时间。由于Oracle通过事务提交对行所在数据块来进行SCN(SyStemChangeNUmber,系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,它是系统中维持数据的一致性和顺序恢复的重要标志)的跟踪,所以,它不精确。可以通过在创建表时使用行级别的依赖跟踪来获得一个更加精确的SCNo在对视图进行查询时,不能使用ORA_ROWSCN函数,但时于视图的基表是可以使用ORA_RONSCM函数的,也能在UPDATE或DE1.ETE语句的WHERE子句中使用ORA_ROWSCN函数。ORA_ROWSCN虽然不能用于闪回查询,但是可以用闪IUI版本查询来代替ORA_ROWSCN°ORNR(MSCN也不能用于外部表。考点系统包21. 如何将信息写入Oracle的告警日志中?正确答案:使用系统存储过程“SYS.DBMS_SYSTEM.KSDWRTVlMESSAGE)”可将信息写入OraCIe的告警日志。如下:SYSorelasm>execSYS.DBMS_SYSTEM.KSDWKT(2,thisisatest,);B1./SQ1.proceduresuccessfullycompleted.查看告警日志:SatMar1818:30:272017thisisatest考点系统包22. 在Oraele中,如何获取IP地址?正确答案:若是获取服务器IP地址,则使用UT1._INADDR.GETHOSTADDRESS若是获取客户端IP地址则使用SYSCONTEXTCUSERENV,IPADDRESS*).考点系统包23. 如何在存储过程中暂停指定时间?正确答案:DBMS_1.OCK包的S1.EEP过程。例如,uDB.MS_1.OCK.S1.EEP(5);”表示暂停5s。考点系统包24. DBMS.OUTPUT提示缓冲区不够,怎么增加?正确答案:采用命令"DBMSOUTPUT.ENAB1.E(20000);,另外,如果DBVSOUTPI;T的信息不能显示,那么需要设置SETSERVEROUTPUTON0考点系统包25. 如何在OraeIe中写操作系统文件,如写口志?正确答案:可以利用UT1.JI1.E包,但是,在此之前,要注意设置好UTJFIuu)IR初始化参数。考点系统包

    注意事项

    本文(数据库程序员面试分类真题10.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开