数据库程序员面试分类真题11.docx
《数据库程序员面试分类真题11.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题11.docx(33页珍藏版)》请在课桌文档上搜索。
1、数据库程序员面试分类真题11筒答题1. 数据库和实例的区别是什么?正确答案:数据库(DatabaSe)是一个数据集合,Oracle数据库将其数据存放在数据文件中。在物理结构上,OraCle数据库必(江南博哥)需的3类文件分别是数据文件、控制文件和联机Redo志文件。在逻辑结构上,OraC控数据库由表空间、段、区和块组成。数据库名称由DBMAME来标识。实例(InStance)是操作Oracle数据库的一种手段。它是由OS分配的一块内存(包括SGA和PGA)和一些后台进程(PMoN、SMONx1.GWR.CKHDBWn等)组成的。一个数据库可以被个实例(SingIeInstance,单实例)或多
2、个实例访问或挂载(RAC,集群)。实例启动时读取初始化参数文件(SPFl1.E或PFl1.E)。实例名称由INSTANCENAME来标识。考点逻辑结构2. 在OraCIe中,数据块、RedO日志块及控制文件数据块的大小分别是多少?如何查询?正确答案:这3种数据块分别介绍如下:D数据块(DataBlock),是读写数据文件的母小单位,默认是8KB,可以通过SQ1.语句“SE1.ECTFI1.E#,NAME,B1.OCK_SIZEFROMV$DATAFl1.E句查询,单位为BYTE2) RedoR志数据块(Redo1.ogBlock),其大小一般等于操作系统的系统块的大小,一般为512B或4096
3、B,可以通过SQ1.语句“SE1.ECTB1.OCKSIZEHKOMV$1.OG:w或“SE1.ECT1.EBSZFROMXSKCC1.E;w查询,单位为BYTE。3)控制文件数据块(ControlFileBlock),默认为16KB,可以通过SQ1.语句“SE1.ECTB1.OCK_SIZEFROMV$C0NTRO1.FI1.E;”查询,单位为BYTE。考点逻辑结构3. 行链接和行迁移有什么区别?正确答案:当一行的数据过长而不能存储在单个数据块中时.,可能发生两种事情:行链接(ROWChaining)或行迁移(RoWVigration)。D行链接:当第一次插入行时,由于行太长而不能容纳在一个
4、数据块中时,就会发生行链接。在这种情况下,OraCle会使用与该块链接的一个或多个数据块来容纳该行的数据。行链接经常在插入比较大的行时才会发生,例如包含1.oNG、1.oNGROW、1.oB等类型的数据。在这些情况下,行链接是不可避免的。行链接通常由INSERT操作引起。2)行迁移:当一个行上的更新操作导致当前的数据增加以至于不能再容纳在当前块,这个时候就需要进行行迁移,在这种情况下,OraCle将会迁移整行数据到一个新的数据块中。一个行迁移意味着整行数据都将会移动,原始的数据块上仅仅保留的是指向新块的一个地址信息。发生行迁移的时候行的ROWID不会改变。行迁移的情况主要是由于表上的PCTFR
5、EE参数设置过小所致,所以必须设置一个合适的PCTFREE参数。可以使用exp/imp工具导入导出来处理行迁移。行迁移通常由UPDATE操作引起。考点逻辑结构4. Oracle数据库块由哪几部分组成?正确答窠:操作系统块是操作系统读写的最小操作单元,也是操作系统文件的属性之当创建一个Oracle数据库时,选择一个基于操作系统块的整数倍大小作为Oracle数据库块的大小。Oracle数据库读写操作则是以Oracle块为最小单位,而非操作系统块。数据库块也称逻辑块或OraCIe块,它对应磁盘上一个或多个物理块,它的大小由初始化参数DBB1.OCKSIZE决定,可以定义数据块为2KB、4KB、8KB
6、、16KB、32KB甚至更大,默认OraCIe块大小是8KB。若一旦设置了OraCle数据块的大小,则在整个数据库生命期间不能被更改。使用一个合适的OraCIe块大小对于数据库的调优是非常重要的。OS在每次执行I/O的时候是以OS的块为单位:Oracle在每次执行I/O的时候是以Oracle块为单位。Oracle块具有以下特点:1)最小的1/0单元。2)包含一个或多个OS块。3)大小由参数DB_B1.OCK_SIZE决定。4)数据库创建时曾置,双据库创建后不能更改。在OraCIe中,不论数据块中存储的是表CrAB1.E)、索引(INDEX)或簇表(C1.USTERTAB1.E),其内部结构都是
7、类似的。OraCle块的结构如下图所示。可用空间行数据数据块头(包括标濮内容和可变内容)表目录行目录由上图可以看出,-个OraCIe块大约由数据块头(BIoCkHeader,包括标准内容和可变内容,CommonndVariableHeader)表目录(TableDirectory)行目录(RowDirectory)可用空间(FreeSpace)和行数据(RowDala)这几部分组成。图中两个箭头表示一个数据块中的可用空间区的容量是可变的。D数据块头:主要包含有数据块地址的一些基本信息(块地址,BlockAddreSS)和段的类型(表段、索引段等)。块头自上而下进行增长。2)表目录:如果一个堆组
8、织表在此数据块中存储了数据行,那么该表的信息将被记录在数据块的表目录中。多个表可以将行存储在相同的块中。3)行目录:此区域包含数据块中存储的数据行的信息,即每个数据行片断(KowPieCe)在行数据中的地址。一个数据块中可能保存一个完整的数据行,也可能只保存数据行的一部分。当一个数据块(DataBloCk)的行目录空间被使用后,即使数据行被删除(DE1.ETE),行目录空间也不会被回收。举例来说,当一个曾经包含50条记录的数据块被清空后,其块头(Header)的行目录仍然占用100B的空间。仅在块中插入新行时,数据库才会重用此空间。4)可用空间:是指可以为以后的更新和插入操作分配的空间,大小受
9、PCTFREE和PCTuSED两个参数影响。可用空间位于块的中部,允许头和行数据空间在必要时进行增长。当插入新行或用更大的值更新现有行的列时,行数据会占用可用空间。导致块头增长的事件包括行目录需要更多的行条目和需要的事务处理插槽数多于最初配置的数目。块中的可用空间最初是相邻的。但是,删除和更新操作可能会使块中的可用空间变成碎片。5)行数据:数据块中行数据包含了表或索引的实际数据。一个数据行可以跨多个数据块。行数据空间自下而上进行增长。考点逻辑结构5. 什么是ASSM和MSSM?PCTFREE和PCTUSED的作用是什么?正确答案:段空间有两种管理方式,分别是手动段空间管理(ManUalSegm
10、entSpaceManagement,MSSM)和自动段空间管理(AUIoSegmentSpaceManagement,ASSM)0自动段空间管理(ASSM),它首次出现在OraCle9.2中。自由列表FREE1.lST被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(FreeBlock),因此能够改善分段存储本质。ASSM会忽略PCTUSED参数而只使用PCTBREE参数。对于MSSM而言,可以设置EREE1.1ST,PCTUSED和PCTEKEE等参数来控制如何分配和使用段中的空间。1.FREE1.lST(自由列表)Oracle通过维护FREE1.IST列表来记录或
11、更新所有可用的数据块。当执行INSERT语句时,OraCIe首先在FREE1.lST列表上搜索可用的空闲数据块,搜索成功之后将数据插入那个空闲块。块在。FREE1.IST列表中的可用性由PCTFREE参数值来决定。起初一个空块在FREE1.lST列表上列出,并且会一直保留,直到空闲空间达到PCTFREE设定的值。当一个块被使用且达到PCTFREE设定的值之后,该块将从FREE1.lST列表移除,而当数据块的可用空间低于PCTUSED值的时候,该块又会回收,即重新回到FREE1.IST列表。Oraele使用FREE1.lST方式以提高数据库性能。因此,每一个INSERT操作,OraCIe仅仅需要
12、搜索FREE1.lST结构,而不是搜索所有数据块。从OraCIe9i开始,引入了ASSM,它让Oraele自动管理FREE1.IST。在ASSM里,OraCle使用位图方式来标记数据块是否可用,这种数据块的空间管理方式比用一个列表来管理效率更高。2. PCTFREE(空闲率)和PCTUSED(使用率)PCTFREE和PCTUSED这两个参数是面试中常问到的概念。它们用来优化数据块空间的使用,控制数据块是否出现在FREE1.lST中。当创建或者更改任何表和索引的时候,Oracle在空间控制方面使用这两个存储参数。1)PCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此
13、上限时,新的数据将不能再插入此块中。当数据块中的FREE空间小于PCTFREE设置的空间时,该数据块从FREE1.IST中去掉,当块由于DM1.操作FREE空间大于PCTUSED设置的空间时,该数据库块将被添加在FREE1.lST链表中。对于表和索引来说,该值默认为10%,通过查询DBAJAB1.ES或DBAINDEXES视图的PeT_FREE列可以获取到该属性的值。该值适用$MSSM和ASSMe2)PCTUSED:指定块中数据使用空间的最低百分比:用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用状态的块可以执行插入操作,不可用状态的块只能执行删除和修改,可用状态的块被放
14、在FREE1.lST中。该值只针对表有效,默认值为40%,通过雀询DBAJAB1.ES视图的PCTJJSED列可以获取到该属性的值。该值仅适用于MSSMo若要修改表的PCTFREE和PCTUSED的值,可以使用A1.TER语句修改。需要注意的是,修改之后只对新块起作用,若要对表中原有的块起作用,则可以使用MOVE重新组织表,SQ1.语句如下:A1.TERTAB1.ET_TEST_1.HRPCTFREE20;A1.TERTAB1.ETTEST1.HRMOVE;若要修改索引的PCTFREE的值,可以使用如卜的SQ1.语句:A1.TERINDEXPK_TEST_1.HRREBUI1.DPCTFREE
15、20:考点逻辑结构6. Oracle数据库在物理上是由哪些文件组成的?正确答窠:Oracle数据库物理结构如下图所示。Oracle数据库的物理结构由拄制文件(ContrOlFiles)数据文件(DataFiles)、联机Redo口志文件(OnIineRedo1.ogFiles)参数文件(ParameterFile)、归档日志文件(ArChiVe1.ogFiIeS)和密码文件(PaSSWOrdFiIe)组成。D控制文件:包含维护和验证数据库完整性的必要信息,其中记录r数据库的物理结构。例如,控制文件用于识别数据文件和Redo日志文件。每个Oracle数据库都有相应的控制文件,一个数据库至少需要一
16、个控制文件,控制文件属于二进制文件。控制文件的命名格式通常为ctr*Sl。2)数据文件:存储数据的文件。3)联机Redo日志文件:包含对数据库所做的更改记录,一个数据库至少需要两组联机Red。日志文件。联机Redo日志文件也叫在线重做日志文件或联机重做口志文件。4)参数文件:定义Oracle实例的特性,分为SPFI1.E和PFI1.E两种类型的参数文件。5)归档文件:归档文件是联机RedoH志文件的脱机副本,这些归档文件对于介质恢复很重要。6)密码文件:认证哪些用户有权限启动和关闭OraCIe实例。Oracle中逻辑结构包括表空间(TAB1.ESPACE)、段(SEGMENT).I(EXTEN
17、T)和块(B1.OCK)。数据库由表空间构成,而表空间乂由段构成,段乂由区构成,区又由Oracle块构成,即块一区T段表空间一数据库。考点物理结构7. 什么是专用服务器和共享服务器?正确答案:在连接到Oracle数据库的时候,可以有两种连接模式,一种叫作专用服务器连接(DediCatedServer),另外一种叫作共享服务器连接(SharedServer)下面分别讲解这两种连接方式的不同点。专用服务器:每次在对OraCIC进行访问的时候,Oraele服务器的1.istener会得到这个访问请求,然后会为这个访问创建一个新的进程来进行服务。所以说,对于每一个客户端的访问,都会生成一个新的进程进行
18、服务,是一种类似一对一的映射关系。这种连接模式的一个很重要的特点就是UGA(USerGlobalrea,用户全局区)是存储在PGA(PrOgralnGlobalArea,程序全局区)中的,这个特性也很好说明了当前用户的内存空间是按照进程来进行分配的。专用服务器连接模式是Oracle默认的连接模式。共享服务器:也叫多线程服务器(MUlti-ThreadedServer,MTS)若采用共享服务器模式,则在数据库初始化的时候就会创建-一批服务器连接的进程,然后把这些连接进程放入一个连接池来进行管理。初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的。在连接建立的时候,1.iStener首
19、先接收到客户端的建立连接的请求,然后1.iStener生成一个叫作调度器(DiSPalChCr)的进程与客户端进行连接。调度器把客户端的请求放在SGA(SystemGlobalArea,系统全局区)的一个请求队列中,然后在共享服务器连接池中杳找有无空闲的连接,然后让这个空闲的服务器进行处理。处理完毕以后再把处理结果放在SGA的相应队列中。调度器通过查询相应队列,得到返回结果,再返回给客户端。这种连接模式的优点在于服务器进程的数量可以得到控制,不大可能出现因为连接数过多而造成服务器内存崩溃。但是由于增加了复杂度以及请求相应队列,可能在性能上有所下降。如果在前端使用了WeblogiC的连接池,那么
20、在数据库级别就没有必要再使用共享服务器/,因为这时的用户连接已经在Weblogic层面上得到了控制。其实专用服务器和共享服务器是可以并存的,即使使用了共享服务器,某些管理操作也是必须在专用服务器模式下来做的,比如STARTUP或SHUTDOWN.考点物理结构8. 在OraCle中,什么是延迟段创建(DeferredSegmentCreation)?正确答案:在Oraele11.2,当创建一个空表或者空分区时,为了加快创建速度,OraCIe并不会立即分配初始段和空间,实际的表段(TabIeSCgmCnI)被延迟到第一行数据插入时创建。延迟段创建特性通过DEFERRH1.SEGMENT/REATI
21、0参数控制,默认为TRUE,表示开启该功能。延迟段创建可以节省空间,加快初始化过程,是面向性能和资源的一个优化。可以通过修改参数DEFERRED一SEGMENT_CREATION来关闭这个特性:A1.TERSYSTEMSETDEFERRED_SEGMENT_CREATI0N=F1.ASE:该参数为动态参数,不需要量启数据虚。可以通过如下的SQ1.语句找到所有的空衣(未分配任何区的表):SE1.ECTSEGMENTCREATED,TAB1.EJAME!-,ROMUSERJrAB1.ESWHERESEGMENT.CREATED=N0;延山段创建的限制条件有:1)延迟段创建不支持的表类型包括索引组织
22、表UndCX-OrganiZCdTables)簇表(ClUSteredTables),全局临时表(GlObaITemporaryTables)会话级临时表(SeSSion-SPeCifiCTemporaryTables)、内部表(InternalTables)、TyPed表(TyPedTabIes)、AQ表(AQTabIeS)和外部表(ExternalTables)o2)用户SYS、SYSTEM.PUB1.IC.OUT1.N和XDB下的表不支持延迟段创建。3)延迟段创建不支持位图连接索引(BitmaPJoinIndeXeS)和域索引(DomainIndexes)04)延迟段创建不支持字典管理表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序员 面试 分类 11

链接地址:https://www.desk33.com/p-1415995.html