您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第二章 Oracle体系结构
2.1物理结构2.2逻辑结构2.3内存结构2.4数据库实例与进程2.5数据字典第二章Oracle体系结构Oracle9i数据库总体结构DatabaseInstanceSGARedologbufferDatabuffercacheSharedpoolDatadict.cacheLibrarycachePMONDBWRSMONLGWRCKPTOthersUserprocessServerprocessPGAControlfilesDatafilesRedologfilesArchivedlogfilesParameterfilePasswordfile2.1.1数据文件2.1.2日志文件2.1.3控制文件2.1.4配置文件2.1物理结构数据文件是用于存储数据库数据的文件,如基表、索引数据等都物理地存储于数据文件之中,同时数据文件也是Oracle三类文件中占用磁盘空间最大的一类文件。存储了数据库的全部数据,数据文件一旦添加到数据库中,则不能删除,除非删除表空间。特征如下:1、一个数据文件只与一个数据库相联系。2、数据文件大小是动态可以改变的。3、一个表空间由一个或多个数据文件组成。查询数据文件信息,dba_data_files、v$datafile。selecttablespace_name,bytes/1024/1024“bytes(m)”autoextensible,file_namefromdba_data_files;selectfile#,chekpoint_change#fromv$datafile;2.1.1数据文件(datafiles)RedoLog文件记录对于数据库的所有修改,用于数据库的恢复如果对于日志文件进行镜像,则相同的RedoLog信息被写入多个联机的RedoLog文件中数据库分为以下两种归档模式:ARCHIVELOG(归档日志)或NOARCHIVELOG(非归档日志)模式。Oracle运行NOARCHIVELOG时只有历史日志,没有归档日志2.1.2日志文件每个Oracle数据库至少有两个RedoLog日志文件组,每组有一个或多个日志文件建议对RedoLog文件进行镜像,以保证数据库安全运行建议使用至少三个RedoLog文件组,每组2或3个日志文件组内RedoLog文件位于不同磁盘RedoLog文件是循环使用的ServersUsersDataFilesRedoLogFilesDatabaseBufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR日志产生过程123RedoLog文件镜像一个日志组中RedoLog文件具有相同的信息选择合适的日志文件大小组中的成员同时被更新每组应包含与其他组中数目相同的日志成员镜像的RedoLog文件可以防止RedoLog文件丢失RedoLog文件组Group1MemberAGroup2MemberAGroup3MemberAGroup1MemberBGroup2MemberBGroup3MemberBGroup1MemberCGroup2MemberCGroup3MemberCLogFile1LogFile2LogFile3日志切换当ORACLE从一个RedoLog文件切换到另一个日志文件时发生日志切换当LGWR写满一组日志文件时发生日志切换DBA可强制日志切换数据库关闭时发生日志切换日志切换时,当前日志文件被赋予一个新的日志序列号,用于标识其中的信息日志切换时产生检查点CKPT(Checkpoint)控制文件是描述数据库结构的二进制文件所有必须的数据文件和日志文件在控制文件中标识数据库名存储在控制文件中控制文件用于打开和存取数据库数据库恢复所需的同步信息存储在控制文件中数据库的物理组成与控制文件中的记录不同时,系统则不能正常启动或发生down机现象建议设置:至少使用两个控制文件,并存放于不同磁盘参数Control_Files指明控制文件控制文件的镜像可以在数据库创建或创建完成后进行2.1.3控制文件2.1.4配置文件配置文件是一个ASCII文本文件,记录Oracle数据库运行时的一些重要参数。名字通常为initsid*.ora格式,如:initCIMS.ora,SID相当于它所控制的数据库的标识符。每个Oracle数据库和实例都有它自己惟一的init.ora文件。Oracle9i新引入一个服务器参数文件(SPFILE),一个服务器参数文件(SPFILE)可以被认为是在Oracle数据库服务器端的初始化参数文件。存储在一个服务器参数文件的初始化参数是永久的,它提供了由Oracle数据库服务器自我调节的一个基础。服务器参数文件是二进制文件,不能使用一个文本编辑器浏览或编辑。2.2.1表空间2.2.2段2.2.3区2.2.4数据库块2.2逻辑结构2.2.5模式对象Oracle数据库存储结构DatabaseTablespaceOsBlockDataFileSegmentExtentOraclebolckLogicalPhysical1.表空间的分类2.表空间的使用3.表空间中对象的存储2.2.1表空间按功能分:Oracle中除了用户创建的存放数据对象的数据表空间外,还有以下类型的表空间:(1)System表空间(2)回滚表空间(RollBackTableSpace)(3)临时表空间(TempTableSpace)(4)用户表空间按区的管理方式分:(1)本地化管理表空间(2)数据字典管理表空间1.表空间的分类在数据库中使用多个表空间具有如下优势:(1)能够将数据字典与用户数据分离开来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突。(2)能够将回退数据与用户数据分离开来,避免由于硬盘损坏而导致永久性的数据丢失。(3)能够将表空间的数据文件分散保存到不同硬盘上,平均分布物理I/O操作。2.表空间的使用(4)能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份和恢复。(5)能够将某个表空间设置为只读状态,从而将数据库的一部分设置为只读状态。(6)能够为某种特殊用途专门设置一个表空间,比如临时表空间等,以优化表空间的使用效率。(7)能够更加灵活地为用户设置表空间限额。如果表空间只对应一个数据文件,该表空间中所有的对象都存储在此数据文件中。如果表空间对应于多个数据文件,可将一个对象的数据存储在该表空间的任意一个数据文件中,也可将同一个对象的数据分布在表空间的多个数据文件中。3.表空间中对象的存储1.数据段2.2.2段2.索引段3.临时段4.回退段数据段中保存的是表中的记录。1.数据段在Oracle数据库中每个未分区索引都有一个索引段保存索引中的索引条目。对于一个分区索引,每个分区都有一个索引段保存它的数据。2.索引段当处理查询时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句以及在排序过程中产生的临时数据。Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。3.临时段回退段用于存放数据修改之前的旧值(包括数据修改之前的位置和值)。回滚段的作用主要有以下几方面:(1)事务回滚(2)事务恢复(3)读一致性4.回退段区是由很多连续的数据块组成的数据库存储空间。缺省情况下,数据库会使用表空间中存储的存储参数来管理他们的区。2.2.3区主要的几个存储参数:INITIAL:段建立时分配的第一个区的大小(单位:字节)NEXT:段内分配的下一个增量区大小(单位:字节)MAXEXTENTS:分配给段的区总数。MINEXTENTS:建立段时分配的区的总数,也就是段的最小区数量。PCTINCREASE:为段分配的每个增量区超过上一个区的百分比。INITRANS:初始数量的DML事务条目(并发访问数据块中的行)保留的预分配空间数量。NTKXTRANS:当多个事务同时访问同一数据块的行时,为数据块中每个DML事务的条目分配的空间。数据库块也称逻辑块或Oracle块,它对应磁盘上一个或多个物理块,它的大小由初始化参数db_block_size(在文件init.ora中)决定,典型的大小是2k。2.2.4数据库块Pctfree和Pctused两个参数用来优化数据块空间的使用。PCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入到此块中;PCTUSED:指定块中数据使用空间的最低百分比;Oracle数据库的模式对象包括表、视图、序列、同义词、索引、触发器、存储过程等。2.2.5模式对象2.3内存结构2.3.1系统全局区2.3.2程序全局区2.3.3排序区2.3.4软件代码区系统全局区(SGA,SystemGlobalArea.)是内存结构的主要组成部分,是Oracle为一个实例分配的一组共享内存缓冲区,保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析,重做日志管理等。是实例的主要部分。2.3.1系统全局区数据块缓冲区中存放着Oracle系统最近从数据文件中读取的数据块。数据块缓冲区又称用户数据高速缓冲区,为所有与该实例相链接的用户进程所共享。1.数据块缓冲区数据块缓冲区的容量受物理容量限制。在Oracle9i中,数据库缓存的大小可以直接由初始化参数DB_CACHE_SIZE指定,该参数可以直接以K字节或M字节为单位来设置数据库缓存的大小。字典缓冲区用于保存数据字典中的行。数据字典缓冲区也通过最近最少使用(LRU)算法来管理。大小由数据库内部管理。字典缓存区是SQL共享池的一部分,共享池的大小(以字节为单位)由数据库文件init.ora中的SHARED_POOL_SIZE参数来设置。2.字典缓冲区对数据库进行修改的任何事务(Transaction)在记录到重做日志之前都必须首先放到重做日志缓冲区(RedoLogBuffer.)中。重做日志缓冲区是专为此开辟的一块内存区域,重做日志缓存中的内容将被LGWR后台进程随时写入重做日志文件。3.重做日志缓冲区重做日志缓存是一个循环缓存区,在使用时从顶端向底端写入数据,然后再返回到缓冲区的起始点循环写入。重做日志缓冲区的大小(以字节为单位)由init.ora文件中的LOGBUFFER参数决定。共享SQL池(SharedSQLPool)相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。SQL共享池包括库高速缓存、数据字典高速缓存和服务器控制结构。4.共享SQL池共享池的大小取决于init.ora文件参数SHARED_POOL_SIZE,它是以字节为单位的。用户必须将这个值设得足够大,以确保有足够的可用空间来装载和存储PL/SQL块和SQL语句。Java池为Java命令提供语法分析。5.Java池缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区内相同的资源。可以在SGA中创建多个缓冲池。6.多缓冲池程序全局区PGA(ProgramGlobalArea,PGA),是单个Oracle进程使用的内存区域,不属于实例的内存结构。它含有单个进程工作时需要的数据和控制信息,PGA是非共享的,只有服务进程本身才能够访问它自己的PGA区。2.3.2程序全局区排序区存在于请求排序的用户进程的内存中,由于排序需要内存空间,Oracle利用该内存排序数据,这部分空间称为排序区。该空间的大小为适应排序数据量的大小,可增长,但受初始化参数SORT_AREA_SIZER所限制。2.3.3排序区软件代码区(SoftwareCodeArea)用于存储正在执行的或可以执行的程序代码。软件代码区是只读,可安装成共享或非共享。Oracle系统程序是共享的,多个Oracle用户可存取它,而不需要在内存有多个副本。用户程序可以共享也可以不共享。2.3.4软件代码区2.4数据库实例与进程2.4.1Oracle数据库实例2.4.2进程数据库是指物理上的数据库文件或逻辑上的数据库结构。基于之上管理和控
本文标题:第二章 Oracle体系结构
链接地址:https://www.777doc.com/doc-14393 .html