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

上传人:夺命阿水 文档编号:1415967 上传时间:2024-06-15 格式:DOCX 页数:13 大小:38.90KB
返回 下载 相关 举报
数据库程序员面试分模拟题11.docx_第1页
第1页 / 共13页
数据库程序员面试分模拟题11.docx_第2页
第2页 / 共13页
数据库程序员面试分模拟题11.docx_第3页
第3页 / 共13页
数据库程序员面试分模拟题11.docx_第4页
第4页 / 共13页
数据库程序员面试分模拟题11.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

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

1、数据库程序员面试分模拟题11茴答题1. OS级别删除了数据文件后如何恢且?正确答案:若使用了“A1.TERDATABSEDATAFI1.ENOFF1.INEDROP;,命令,则并不会删除数(江南博哥)据文件,这个时候可以先ON1.lNE后再用“A1.TERTAB1.ESPACEXXXDROPDATAFI1.EN;删除。如果执行“A1.TERDTBSEDATAFI1.ENOFF1.INEDROP;后并在OS级别删除了数据文件,那么首先需要使用“A1.TERDTBSECREATEDATAFI1.ENS*/tmp/ts_dd_lhr02.dbf,来添加一个数据文件,然后再执行RECOVER并ON1.

2、INE后再用“A1.TERTAB1.ESPACEXXXDROPDATAFI1.E、:”命令删除。如果产生的H志文件已经丢失,那么目标文件就不能再恢复了,这个时候只能删除表空间了,命令为“DROPTAB1.ESPACEXXXINC1.UDINGCONTENTSANDDATAFI1.ES;,。考点RMAN2. 存储过程和函数的区别是什么?正确答案:存储过程和函数都是存储在数据库中的程序,可由用户直接或间接调用,它们都可以有输出参数,都是由一系列的SQ1.语句组成。具体而言,存储过程和函数的不同点如下:1)标识符不同。函数的标识符为FUNCTlON,存储过程为PROCEDURE。2)函数必须有返回值

3、,且只能返回一个值,而存储过程可以有多个返回值。3)存储过程无返回值类型,不能将结果直接赋值给变量;函数有返回值类型,在调用函数时,除了用在SE1.ECT语句中,在其他情况下必须将函数的返回值赋给一个变量。4)函数可以在SE1.ECT语句中直接使用,而存储过程不能。例如,假设已有函数FUNGE函VGO返回NuMBER类型绝对值,那么,SQ1.语句“SE1.ECTFUNGETAVG(CO1.A)FROMTAB1.Ew是合法的。考点存储过程3. 在OraCIe中,创建视图的语法形式是怎样的?正确答窠:在Oracle中创建视图的语法如下:CREATEORREP1.ACE1ORCEVIEWSCHEMA

4、.VIE忆NAME(CO1.UMNl,C01.UMN2,.)ASSE1.ECT.WITHCHECKOPTIONCONSTRAINTCONSTRAlNT_NAMEWITHREADON1.Y:考点视图4. tkprof的作用是什么?正确答案:tkprof是一个调优工具,用于格式化10046事件和SQ1.TRACE生成的trace文件。需要注意的是,不能使用tkprof工具来处理10053事件产生的trace文件。在OS命令行中宜接输入tkprof就可以获得一个完整的参数列表.tkprof的格式如下:tkproftracefileoutputfiIeoptions考点性能诊断5. 什么是存储过程?正

5、确答案:存储过程是用户定义的一系列SO1.语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值,并且不涉及特定用户表。存储过程用于执行特定的操作,可以接收输入参数、输出参数,返回单个或多个结果集。在创建存储过程时,既可以指定输入参数(IN),也可以指定输出参数SUT),通过在存储过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行结果传递到应用环境。存储过程可以使对数据库的管理、显示数据库及其用户信息的工作更加容易。考点存储过程6. NoSQ1.兴起的原因有哪些?正确答案:大数据技术近儿年发展十分迅速,

6、在互联网公司以及传统公司都得到了广泛的应用。传统的关系数据库在应付Neb2.0网站,特别是超大规模和高并发的SNS(SocialNetworkSite,社交网)类型的Neb2.0纯动态网站己经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库NOSQ1.(NOtOnlySQ1.,泛指非关系型的数据库,意即“不仅仅是SQ1.”)则由于其本身的特点得到了非常迅速的发展,NoSQ1.数据库的产生就是为了解决大规模数据集合以及多重数据种类带来的挑战,尤其是大数据应用难题。NoSQ1.的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。NO

7、SQ1.的兴起原因主要是随着需eb2.0时代的到来,关系型数据库越来越不能满足互联网应用的需求,从而产生了NoSQ1.。这些需求包括:数据的高并发读写;数据的高可用性;海量数据存储:海量数据的实时分析等。考点NoSQ1.7. 什么是自连接?正确答案:自连接(SelfJoin)是SQ1.语句中的一种特殊连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。例如,在SCOTT.EMP中的每一个员工都有自己的MGR(经理),并且每一个经理Fl身也是公司的员工,自身也有H己的经理。如果需要将每一个员工自己的名字及其经理的名字都查询出来,SQ1.语句应该如何写呢?这个

8、时候就可以用到自连接/最终SQ1.如下:SE1.ECTA.ENAMEWORKER,B.ENMEMANAGERFROMSCOTT.EMPA,SCOTT.EMPBWHEREA.MGR=B.EMBNOORDERBYA.ENAME;对于II:等值连接,理解起来比较简单,即表和表之间是通过等值运算符来连接的,例如,O.BETWEEN.AND.等,如下:SE1.ECTEMP.EMPNO,EMP.ENAME,DEPT.1.OCFROMSCOTT.EMPINNERJOINSCOTT.DEPTONEMP.DEPTNOODEPT.DEPTNOWHEREEMPN0=7788ORDERBYEMPNO;8. MySQ1

9、.有哪些命令可以查看锁?正确答案:有如下几个命令:(l)showprocesslistshowprocesslist;显示哪些线程正在运行。如果有SUPER权限,那么就可以看到所有线程。如果有线程在UPDATE或者INSERT某个表,此时进程的StatUS为UPdating或者Sendingdata。”showprocessIist;,只列出前100条,如果想全列出,那么可以使用“showlullprocesslist;,0下面是一些常见的状态。状态含义CheckingtableClosingtables正在检查数据表(这是自动的)正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这

10、是一个很快的操作,如果不是这样的话,那么就应该确认磁盘空间是否已经满了或者磁盘是甭正处于重负中Connectout及制从服务器正在连接主服务器Copyingtotmptableondisk由于临时结果集大于map_tablc_size正在将临时表从内存存储转为磁盘存储,以此节省内存Creatingtmptable正在创建临时表以存放部分查询结果DeletingfrommaintableDeletingfromreferencetablesFlushingtablesKilied1.ockedSendingdataSortingforgroupSortingfororderOpeningtabl

11、esRemovingduplicatesReopentableRepairbysortingRepairwithkeycacheSearchingrowsforupdateSleepingSystemlock服务器正在执行多表删除中的第一部分,刚删除第一个表服务器正在执行多表删除中的第二部分,正在删除其他表的记录正在执行F1.USHTAB1.ES,等待其他线程关闭数据表发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQ1.会在每次的主循环中检查kill标志位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程被其他线程锁住1.那么ki

12、ll请求会在锁释放时马上生效被其他查询锁住了正在处理SE1.ECT查询的记录,同时正在把结果发送给客户端正在为GKOUPBY做排序正在为ORDERBY做排序这个过程应该会很快,除非受到其他因素的干扰。例如,在执行完A1.TERTAB1.E或1.oeKTAB1.E语句以前,数据表无法被其他线程打开。正尝试打开一个表正在执行一个SE1.ECTDlSTINCT方式的咨询,但是MySQ1.无法在前一个阶段优化掉那些重复的记录。因此,MySQ1.需要再次去掉重复的记录,然后再把结果发送给客户端获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表修复指令

13、正在排序以创建索引修复指令正在利用索引缓存一个一个地创建新索引。它会比RePairbySOrting慢些正在将符合条件的记录找出来以备更新。它必须在UPDATE要修改相关的记录之前就完成了正在等待客户端发送新请求正在等待取得一个外部的系统锁。如果当前没有运行多个mysqld服务器同时请求同一个表,那么可以通过增加一skip-extemalTocking参数来禁止外部系统锁UpgradinglockUpdatingUserlockWaitingfortablesINSERTDE1.AYED正在尝试取得一个锁表以插入新记录正在搜索匹配的记录,并且修改它们正在等待GET1.OCKO该线程得到通知,数

14、据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:F1.USHTAB1.EStbl_name,A1.TERTAB1.E,RENAVETAB1.E,REPAIRTAB1.E,ANA1.YZETAB1.E或OPTIMIZETAB1.EWaitingforhandlerINSERTDE1.AYED已经处理完了所有待处理的插入操作,insert正在等待新的请求(2)showopentables这条命令能够查看当前有哪些表是打开的。in_use列表示有多少线程正在使用某张表,nameOCked表示表名是否被锁

15、,这一般发生在DRoP或RENAME命令操作这张表时。而以这条命令不能杳询到当前某张表是否有死锁,谁拥有表上的这个锁等。常用命令如下:showopentablefromdb_name:showopentableswherein_use0;(3)showengineinnodbstatusG;这条命令查询innodb引擎的运行时信息。(4)查看服务器的状态showstatuslike,%lock%;(5)查询IyformatioN-SCHEVa用户下的表通过informtion-shcem下的Innodillocks.INNODB_1.OCK_WAITS和Innodbjkx这三张表可以更新监控当

16、前事务异且分析存在的软问题。查看当前状态产生的inn。CIb锁,仅在有锁等待时有结果输出:SE1.ECT*1ROMINFORMATlOMSCHEMA.1NNoDB_1.OCKS;查看当前状态产生的innodb锁等待,仅在看锁等待时有结果输出:SE1.ECT*FROMINFORMATION_SCHEMA.INNODB_1,OCK_WAITS;当前innodb内核中的活跃ACTIVE)事务:SE1.ECT*FROMINFORMATIONSCHEMA.INNODBTRX;考点锁9. 会话游标有哪些属性?il:确答案.会话游您有4个属性,见下表。属性含型简介适用对象适用SQ1.最近的FETCH是否提取

17、到数据,表示条SQ1.语句被执行成功后受其影响而改变的记录数是否陷十激灯SQ1.研OUND尔大于或等于1,若是则赋值普雷为TRUE,否则为FA1.SE。在一条DM1.八小语句被执行前,SQ1.研OuND的值是NU1.1.最近的FETCH是否没有提取到数据,表示一条SQ1.语句被INSERT、布SQ1.%NOTFOUND尔型执行成功后受其影响而改变的记录数眸油灯DE1.ETE.姑否为0,若是则赋值为黑主黑零UPDATE、TRUE,否则为FA1.SEII在一条DM1.语、八初小SE1.ECT.句被执行前,INTO.SQ1.%NOTFOUND的值是NU1.1.数SQ1.%ROWCOUNT值型表示最近

18、的一条SQ1.语句成功执行后受其影响而改变的记隐式游标、杀的数最,后续执行的SQ1.会覆盖显式游标SQ1.%ROWCOUNT的值布SQ1.%ISOPEN尔型游标是否打开,当游标打开时返回TRUEo对于隐式游标而显式游标言,SQIISOPEN的值永远是FA1.SE当执行一条DM1.语句后,DM1.语句的结果保存在这4个游标属性中,这些属性用于控制程序流程或者了解程序的状态。当运行DM1.语句时,P1./SQ1.打开一个内建游标并处理结果。在这些属性中,SQIgFOUND和So1*KOTFOUW)是布尔值,SQ1.%R0WC0UNT是整数值。需要注意的是,若游标属于隐式游标,则在P1./SO1.中

19、可以直接使用上表中的属性:若游标属于显式游标,则上表中的属性里“SQ1.%”需要替换为自定义显式游标的名称。上表中的这4个属性对于动态游标依然适用。考点游标10. 什么是数据库系统的型和值?正确答案:型(TyPe)是指一类数据的结构和属性的说明,值(ValUe)是型的个具体赋值。例如:记录型:(学号,姓名)记录值:(08450226,李多多)考点数据库系统的组成与结构11. 如何生成日期格式的文件?正确答案:在1.inuxZUnix上,使用“date+%y%m%d或$(date+%y%m%d)”,如:touchexp_table_name,date+%y%m%d,.dmpDATE=S(date

20、+%y%m%d)或者:DATErS(date+%Y%m%d-date*1daysago*)#获取昨天或多天前的El期在WindoWS上,使用dale:4,10%”,其中4是开始字符,10是提取长度,表示从date生成的日期中,提取从4开始、长度是10的串。如果想得到更精确的时间,那么在WindoWS上面还可以使用timeo考点SHE1.1.脚本系列12. E-R图向关系模型的转换一般遵循哪些原则?正确答案:E-R图向关系模型的转换一般遵循如下原则:1) 个实体型转换为个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。例如,学生实体可以转换为如下关系模式,其中,学号为学生关系的码:学生

21、(学号,姓名,出生日期,所在系,年级,平均成绩)。同样,性别、宿舍、班级、档案材料、教师、课程、教室、教科书都分别转换为一个关系模式。2) 一个联系转化为一个关系模式,与该联系相连的各实体的码以及联系的属性转化为关系的属性。该关系的码有如卜.3种情况:若联系为1:1,则每个实体的码均是该关系的候选码。若联系为1.n,则关系的码为n端实体的码。若联系为m:n,则关系的码为诸实体码的组合。下面分别来讲解这3种情况。联系为1:1一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端时应的关系模式合并。a)如果转换为一个独立的关系模式,那么与该联系相连的各实体的码以及联系本身的属性均转换为关系的

22、属性,每个实体的码均是该关系的候选码。b)如果与某一端对应的关系模式合并,那么需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。联系为l:n一个1.n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。a)如果转换为一个独立的关系模式,那么与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。b)如果与n端对应的关系模式合并,那么在n端实体对应模式中加入1端实体所对应关系模式的码,以及联系本身的属性。而关系的码为n端实体的码。联系为m:n一个m:n联系转换为个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为美系的属性,而

23、关系的码为各实体码的组合。3)同一实体集的实体间的联系,即自联系,也可按上述1:1、1.n和m:n三种情况分别处理。例如,如果教师实体集内部存在领导与被领导的l:n自联系,那么可以将该联系与教师实体合并,这时主键职工号将多次出现,但作用不同,可用不同的属性名加以区分。例如,在合弁后的关系模式中,主键仍为职工号,再增设一个“系主任”属性,存放相应系主任的职工号。4)具有相同码的关系模式可合并。为了减少系统中的关系个数,如果两个关系模式具有相同的主键,那么可以考虑将它们合并为一个关系模式。合并方法是将其中一个关系模式的全部属性加入另一个关系模式中,然后去撞其中的同义属性(可能同名也可能不同名),并

24、适当调整属性的次序。考点E-R模型13. UySQI.和Oracle如何修改命令提示符?正确答案:MySQ1.的默认提示符为mysq,可以使用prompt命令来修改,如F:全局:exportMYSQ1.PSl=(uh)d兰前会话:PromPt(ugh)djR:m:s其中,“u”代表用户名,“h”代表服务器地址,“d”代表当前数据库,R:m:s”代表时分秒,例如,23:10:10OraCle的默认命令提示符为“SQ1.”,可以使用“SETSQ1.PRoMp命令来修改,如下:SQ1.SHOWSQ1.PRoMPTsqlpromptSQ1.SQ1.SETSQ1.PROVPTJJSEW印.CONNECT

25、DENTIFIERSYSQlhrdbASYSlhrdbSHOWSQ1.PROMPTSqlpromptuser0_connect_identifierw在以上结果而,SYS表示用户,Ihrdb表示数据库。注意,以上提示符的后有一个空格。如果想全局生效,那么可以修改文件:SORAC1.EHOME/sqlplus/admin/glogin.sql0在glogin.sql文件中添加如卜的内容:setSqlpromptjjserW.connectidentifier)”这样,每次登录SQ1.*PlusJ时候,SQ1.提示符就会变为设置的内容。14. 如何查询表和索引的历史统计信息?正确答案:从OraCl

26、eIOg开始,当收集表的统计信息的时候,旧的统计数据被保留,如果因为新的统计信息而出现性能问题,旧的统计信息就可以被恢复。历史统计信息保存在以下几张表中:DWRISOPTSTATTABHlSToRY表的统计信息。2) WRISOPTSTATINDHISTORY索引的统计信息。3) WRISOPTSTATHISTHEDHISTORY列的统计信息。4)WRisOptstatjistgrmjistory直方图的信息。从视图DBA_TAB_STATS_HISTORY可以查询历史收集统计信息的时间,但是不能查询到行数,所以需要结合基表来查闻,查询的SQ1.语句如下:SE1.ECTB.OWNER,B,OB

27、JECT_NAMET.AB1.E_NAME,TO_CHAR(D.ANA1.YZET1ME,YYYY-MM-DDHH24:MI:SS)1.AST_ANA1.YZETIME,TO_CHAR(D.SAVTIME,YYYY-MM-DDHH24zMkSS,)CURR_ANA1.YZETlME,D.ROWCNTFROMSYS.WRl$_OPTSTAT_TAB_HISTORYD,DBAJ)BJECTSBWHERED.0BJ3B.OBJECTDANDB.OBJECTNAMEIN(,TEST-STAT,TPCCBOKB1.TMP,TPCCBOKBA1JN,PKTPCCBOKB1.,)ORDERBYD.OBJ#,

28、D.SVTIME;OWNEROBJECTNAMEI1.ASTANA1.YZEnMElCUW1.ANA1.YZEnMERoWcNT一1SYSTES1.srAT2016-09-0714:16:302SYS7EST.STAT2016-09-0714:16:302016-09-0714:22:42111555843SYS-TESTSTAT2016-09-0714:22:422016-09-0714:27:3411155584查询索引的历史统计信息的SQ1.语句如下:SE1.ECTB.OWNER,B.OBJECTNAMEINDEXNAME,TOCHAR(D.NA1.YZETIME,YYYY-MM-DDH

29、H24MkSS,)1.ASTANA1.YZEIIME,TOCHAR(D.SAVTIME,YYYY-MM-DDHH24:MI:SS*)CURRAN1.YZETIME,D.ROWCNT,D.B1.EVE1.,D.1.EAFCNT,f).DISTKEY,D.C1.UFACFROMSYS.WRIS_OPTSTAT_IND_HISTORYD,DBA_OBJECTSBWHERED.OBJ#=B.OBJECT_IDANDB.OBJECT_NAMEIN(INDJTEST)ORDERBYD.OBJ#,D.SAVTIME;j0W三JOBJKTJWtIIASTjWV2E11MIaJBUWUZETIMEIRoWOff

30、Iafta30ffMS1EV!C1.IfAClS-1ND.1KT20164)714:14:30201M)9-0714:16:31111554562247078715211155456EsYS1ND.TEST201W4)714:16:3!2016X)9-0714:22:44112333062248898815211233306默认情况下统计信息将被保留31天,可以使用下面的命令修改:EXECUTEDBMS_STATS.A1.TER_STATSHlSTORRETENTION(XX);xx是保留的天数注意:这些统计信息在SYSAUX表空间中占有额外的存储开销,所以应该注意并防止统计信息将表空间填满C

31、SE1.ECTDBMSSTATS.GETSTTSHISTORYRETENTIONEROMDUA1.;一查询统计信息当前保留的天数。考点统计信息15. 哪个命令可以查看所有数据库?正确答案:运行命令:showdatabases;4.考点连接数据库16. 视图的作用有哪些?正确答案:同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来FI由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表而言,视图的作用类似于筛选。定义视图可以来H当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数

32、据的视图。如果有几台不同的服务器分别存储不同地区的数据,那么当需要将这些服务器上相似结构的数据组合起来的时候,这种方式就非常有用。数据库视图的作用有以下几点:1)隐藏了数据的熨杂性,可以作为外模式,提供了一定程度的逻辑独立性O02)有利于控制用户对表中某些列或某些机密数据的访问,提高了数据的安全性。3)能够简化结构,执行复杂查询操作。4)使用户能以多种角度、更灵活地观察和共享同一数据。考点视图17. 数据独立性包括哪几个方面?正确答案:数据独立性包括物理独立性和逻辑独立性两个方面。物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的:逻辑独立性是指用户的应用程序与数据库的逻辑

33、结构是相互独立的。考点数据库安全18. 如何捕获存储过程中出现异常的行号?正确答窠:使用函数dbms_utility.format_error_backtrace可以获取到出现异常时候的程序的行号,而函数r)BMS_UTTI.ITY.FORMAT_ERROR_STACK可以获取到出现异常时的错误信息,作用和SQ1.ERRM一样。考点程序处理19. 什么是ORA-OI555?正确答案:在告警口志中记录的ORA-OI555(SnaPShOttooold,快照过旧)报错信息类似:0R.-01555:snapshottooold:rolIbacksegmentnumber107withname*_SY

34、SSMU107_1253191395$*toosmall获认情况,ORA-OI555错误发生时不会自动生成跟踪日志文件,但是可以在系统里设置下面的事件,让它在错误发生的同时生成跟踪日志文件:altersystemsetevents,1555tracenameerrorstacklevel3,;由于回滚段是循环使用的,当事务提交以后,该事务占用的回滚段事务会被标记为.活动,此时的回滚段空间可以被覆盖重用。那么问题就出现了,如果一个查询需要使用被覆盖的回滚段构造前镜像(BeforCImagC)实现一致性读,那么此时就会出现OraCIe著名的OR的01555(snapshottooold,快照过旧)

35、错误。需要注意的是,ORAoI555错误是一个安全的错误,它不会造成数据丢失或者损坏,只是会让收到该错误的查询无法继续。0R-01555错误的另外一个原因是延迟块清除(DelayeClBlockCleanout)o当一个查询触发延迟块清除时,OraCle需要去查询回滚段获得该事务的提交SC、如果事务的前镜像信息已经被覆盖,并且查询SCN也小于回滚段中记录的最小提交SCN,那么Oracle将无从判断查询SCN和事务提交SCN的大小,此时出现延迟块清除会导致ORA-OI555错误。还有一种导致ORA-OI555错误的情况出现在使用SQ1.*I,oader直接方式加载(direcl=true)数据时

36、,由于不产生Redo和Undo信息,OraClC直接指定CACHEDCOMMITSCN进行加载数据,在访问这些数据时,有时会产生ORA-Ol555错误。知道了ORA-OI555错误产生的原因就可以总结出以下方法来解决ORA-01555错误问题:1)扩大回滚段。因为回滚段是循环使用的,如果回滚段足够大,那么被提交的数据信息就能保存足够长的时间,而那些大事务就可以完成一致性读取。2)增加UNDoRETENTloN时间。在UM)ORETENT10规定的时间内,任何其他事务都不能覆盖这些数据。3)优化相关查询语句,减少一致性读。减少查询语句的一致性读,也可以降低读取不到回滚段数据的风险。4)减少不必要

37、的事务提交。提交的事务越少,产生的回滚段信息就越少。5)对大事务指定回滚段。通过以下语句可以指定事务的回滚段:SETTRANSACriONUSERO1.1.BACKSEGMENTorllback_segment;给大事务指定回滚段,即降低大事务回滚信息覆盖其他事务的回滚信息的概率,乂降低了它自身的回滚信息被覆盖的概率。大事务的存在,往往是ORA-0】555错误产生的诱因。6)使用游标时尽量使用显式游标,并且只在需要的时候打开游标,同时将所有可以在游标外做的操作从游标循环中拿出。当游标打开时,查询就开始了,直到游标关闭。减少游标的打开时间,就减少了ORAoI555错误发生的概率。7)使用回滚表空

38、间自动管理。回滚表空间闩动管理是OraCle9i后的特性,OraCle自动管理回滚段的创建和回收,并且OraeleIOg,这特性大大增强r,而在大型的数据仓库或者报表系统中,会有一些很大的查询作业存在,这时可以考虑使用手动管理,为某些大作业创建单独的回滚段。考点性能诊断20. 什么是检查点?正确答案:在OraCIe数据库系统中,写日志和写数据文件是数据库中消耗I/O较大的两种操作。在这两种操作中,写数据文件属于分散写,写日志文件是顺序写,因此为了保证数据库的性能和数据的安全,通常数据库都是在提交(COMMlT)完成之前要先保证RedO口志条目都被写入口志文件中,才会给用户反馈提交完成的通知(C

39、OmmitComplete),而保存在BUfferCaChe中的脏块会不定期地、分批地写入数据文件中。也就是说,日志写入和提交操作是同步的,而数据写入和提交操作是不同步的,修改的数据并不是在用户提交后就立马写入数据文件中。这样就存在一个问题,当数据库崩溃的时候并不能保证BUfferCaChe里面的脏数据全部写入数据文件中,那么在实例启动的时候就要使用日志文件进行恢复操作,将数据库恢熨到崩溃之前的状态,从而保证数据的一致性。那怎么确定该从何时、从哪里开始恢复呢?OraCle使用了检查点(ChCCkPOinl)来进行确定。一般所说的检查点是一种将内存中的已修改数据块与磁盘上的数据文件进行同步的数据

40、库事件(EVenI),是OraCIC在数据库一致性关闭、实例恢复和Oracle基本操作不可缺少的机制。Oracle通过检杏点确保被事务修改过的数据可以被同步至磁盘。检查点信息(CheCkPOinIInfOrnIaliOn)包含检查点位置(CheckpointPosition)、SCN联机RedO日志中开始恢复的位置等。当检查点发生时,CKPT通知DBWn进程将脏块(DirtyBUffer)写出到数据文件上,并更新数据文件头及控制文件上的检查点信息。注意,CKPT进程不负责BUfferCache中的脏数据写入磁盘中,该工作由DBWn负责:CKPT进程也不负责将Redo1.ogBUffer中的数据

41、写入联机RedO日志文件中,该工作由1.GWR负责。由于OraCIe事务在提交的时候不会将己修改数据块同步写入磁盘上,所以,CKPT进程负贲更新控制文件和数据文件头的检查点信息和触发DBWn写脏数据到磁盘。CKPT执行越频繁,DBWn写出就越频繁。检查点位置(ChCCkPointPoSition)是一种数据结构,在Redo日志流中记录的SCN号是在进行数据库实例恢熨时的起始位置。检查点位置由在数据缓冲池中存在的最老的脏数据位置决定,并且检衣点的信息存储在控制文件和数据文件头中。控制文件中记录的检查点位置是实例恢复的起点。在检查点位置前的RedO记录,其对应的BufferCache中的DirtyBuffer已经被写进了数据文件,在此位置后的Red。记录,所对应数据脏块有可能还在内存中。如果发生了实例崩溃,只需要在口志文件中找到检查点位置(1.OWCaeheRBA),从此处开始应用所有的RedO口志文件,就完成了前滚操作。考点后台进程

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号