Oracle9i数据库体系结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Oracle9i数据库体系结构Oracle9i数据库体系结构Oracle9i物理结构SGA(SystemGlobalArea)BackgroundProcessesServersUsersDataFilesRedoLogFilesControlFilesParameterFileServerParameterFileE_mail:tengyc@263.net5日志文件(RedoLogFiles)RedoLog文件记录对于数据库的所有修改,用于数据库的恢复如果对于日志文件进行镜像,则相同的RedoLog信息被写入多个联机的RedoLog文件中Oracle运行NOARCHIVELOG时只有历史日志,没有归档日志E_mail:tengyc@263.net6日志文件(RedoLogFiles)每个Oracle数据库至少有两个RedoLog日志文件组,每组有一个或多个日志文件建议对RedoLog文件进行镜像,以保证数据库安全运行建议使用四个RedoLog文件组,每组2或3个日志文件组内RedoLog文件位于不同磁盘RedoLog文件是循环使用的ServersUsersDataFilesRedoLogFilesDatabaseBufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR日志产生过程123E_mail:tengyc@263.net8RedoLog文件镜像一个日志组中RedoLog文件具有相同的信息选择合适的日志文件大小组中的成员同时被更新每组应包含与其他组中数目相同的日志成员镜像的RedoLog文件可以防止RedoLog文件丢失Oracle9iDatabase(WindowsNT)Oracle9iDatabase(Unix)E_mail:tengyc@263.net11日志切换当ORACLE从一个RedoLog文件切换到另一个日志文件时发生日志切换当LGWR写满一组日志文件时发生日志切换DBA可强制日志切换数据库关闭时发生日志切换日志切换时,当前日志文件被赋予一个新的日志序列号,用于标识其中的信息日志切换时产生检查点CKPT(Checkpoint)RedoLog文件组Group1MemberAGroup2MemberAGroup3MemberAGroup1MemberBGroup2MemberBGroup3MemberBGroup1MemberCGroup2MemberCGroup3MemberCLogFile1LogFile2LogFile3Oracle9iforUnix日志文件结构(SunSolaris)redo01.logredo02.logredo03.log三个日志文件组,每组一个日志成员Oracle9i日志文件结构(WindowsNT)Redo01.log三个日志文件组,每组一个日志成员Redo02.logRedo03.logOracle9i数据库参数文件服务器参数参数spfileServerParameterFile文本参数pfileParameterFileE_mail:tengyc@263.net16控制文件(ControlFiles)控制文件是描述数据库结构的二进制文件控制文件所有必须的数据文件和日志文件在控制文件中标识数据库名存储在控制文件中控制文件用于打开和存取数据库数据库恢复所需的同步信息存储在控制文件中控制文件数据库的物理组成与控制文件中的记录不同时,系统则不能正常启动或发生down机现象E_mail:tengyc@263.net17控制文件(ControlFiles)建议设置:至少使用两个控制文件,并存放于不同磁盘参数Control_Files指明控制文件控制文件的镜像可以在数据库创建或创建完成后进行Oracle9iDatabase(WindowsNT)Oracle9iDatabase(Unix)Oracle9i逻辑结构DatabaseTablespaceSegmentDataIndexTempRollbackExtentFreeUsedDataBlockPartofPartofOracle9i数据库的逻辑结构表空间Oracle表空间类型数据字典管理表空间(Oracle7,8,8i)本地化管理表空间(Oracle8i,9i)UniformAutoAllocateOracle表空间类型E_mail:tengyc@263.net24Oracle9i临时段管理Oracle9i的缺省临时表空间(DefaultTemporaryTablespace)用于用户排序时SQL的Orderby语句使用,在创建用户时指定用户缺省的临时表空间。在Oracle9i中,允许数据库管理员重新创建并设置系统临时表空间,而不使用系统表空间作为排序、汇总等临时表空间使用。如果系统设置了系统缺省临时表空间,则用户不得使用其他表空间作为临时表空间使用。E_mail:tengyc@263.net25回退段(RollbackSegments)为什么要设回退段?回退段是数据库的一部分,是Oracle数据库的一个重要参数,其设计是否正确直接影响到数据库的动态性能。Rollback段的使用用于保存一个事务的操作,以便在某些情况下回退或取消操作。每个Oracle数据库都有多个回退段回退段的作用并发操作时,保证数据的读一致性使用SQL语句rollback回退一个事务的操作E_mail:tengyc@263.net26回退段(RollbackSegments)事务恢复的需要回退段操作举例由于语句错误回退一个事务回退一个事务、或回退事务到一个保存点(SavePoint)由于异常进程中断而回退在例程恢复中回退所有没未完成的事务Oracle9i自动Undo空间管理在Oracle8i以前的数据库中,对于回退段的设置与管理已一直是一个十分复杂的工作,其正确的设置既困难又费时。对于大的事务往往产生回退段不足的错误,或在RBS表空间回退段中消耗过大。Oracle9i引如了一个新的概念,即AutomaticUndoManagement,Undo空间自动管理。在Oracle9i中,可以使用传统的回退段,也可以使用Undo表空间,Oracle9i对Undo空间自动管理,使回退段的管理变的十分容易。在Oracle9i中,可以使用自动Undo管理代替回退段,Oracle9i使用Undo表空间,并对Undo空间自动管理。Oracle9i自动Undo空间管理在Oracle8i中,私通使用手动管理Undo空间,使用在RBS表空间中创建大的回退段的方法处理大的事务,由于一个事务只可以使用一个回退段,当一个回退段动态扩展超过区最大值、或超过数据文件的允许扩展范围时,将产生回退段不足的错误,事务被进行过程被终止。在Oracle9i中,一个事务可以使用多个回退段。使用Oracle9i的Undo空间自动管理特点,当一个回退段不足时,Oracle会自动使用其他回退段,不终止事务的运行。在Oracle9i中,数据库管理员只需了解Undo表空间是否有足够的空间即可。自动Undo空间管理Oracle9i内存结构ServersUsersDataFilesRedoLogFilesDatabaseBufferCacheSharedPoolRedoLogBufferSGA(SystemGlobalArea)DBWRARCHLGWR系统全局区SGAServersUsersDataFilesRedoLogFilesDatabaseBufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR数据缓冲区(DatabaseBufferCache)DB数据缓冲区Dirtylist....LRUlist....DatafilesDatafiles数据缓冲区(DatabaseBufferCache)ServerDBWRSGAFree,Dirty,PinnedServersUsersDataFilesRedoLogFilesDatabaseBufferCacheSharedPoolRedoLogBufferSGADBWRARCHLGWR日志缓冲区(RedoLogBuffer)ServersUsersDataFilesDatabaseBufferCacheSharedPoolSGADBWR共享池(SharedGlobalArea)ServersServersUsersUsersOracle9i实例的进程结构E_mail:tengyc@263.net37Oracle启动时,将分配系统全局区SGA并启动Oracle后台进程(BackgroundProcesses)。内存区域和后台进程合称为一个Oracle实例(Instance)。SGA是由Oracle为一个实例分配的一组共享内存区域后台进程异步地为所有的数据库用户执行不同的任务参数文件决定了实例的特征及大小不正确的参数文件,会导致实例启动失败Oracle数据库的Instance决定了动态运行的数据库的ORACLE_SIDOracle实例(Instance)SystemGlobalAreaBackgroundProcessesServersUsersDataFilesRedoLogFilesControlFilesOracle数据库进程结构Oracle可以在多进程和单进程配置下工作。多进程配置多个进程执行Oracle代码的不同部分多进程允许多个用户同时使用单进程配置所有的Oracle代码由一个进程执行单进程实例只允许单个用户使用主要用于单任务的机器上通常使用的Oracle都是多进程实例结构DatabaseBufferCacheSharedPoolSGAOracle数据库单进程结构ORACLERDBMSSERVER应用软件DatabaseBufferCacheSharedPoolSGALISTENEROracle数据库多进程结构DBWRLGWRDnnnUSERRECOCKPTSMONPMONARCH用户进程与服务器进程ServersUsersDataFilesDatabaseBufferCacheSharedPoolSGADBWRUser与Server进程ServersServersUsersUsersE_mail:tengyc@263.net44用户进程与服务器进程用户进程(UserProcess)在用户运行应用程序时自动产品产生系统创建服务器进程(ServerProcess)处理用户进程的请求Server进程和User进程通信并为所连接的User进程请求服务E_mail:tengyc@263.net45Server进程工作过程:分析、编译、执行用户的SQL语句确定执行计划,形成分析树从磁盘数据文件将数据读入SGA的共享数据库缓冲区将SQL语句的结果返回给用户进程相同的SQL代码只编译一次存在SQL优化问题DBWR进程E_mail:tengyc@263.net47DBWR进程在存储数据之前,服务器进程必须将数据放入数据缓冲区快存中修改后的数据块通过后台进程:数据库写(DatabaseWriter-DBWR)写回磁盘为处理SQL语句,Server进程使用了SGA中的共享内存E_mail:tengyc@263.net48DBWR进程DBWR管理DatabaseBufferCache以便user进程总能找到空闲的缓冲区将所有修改后的缓冲区数据写入数据文件使用LRU算法来将最近使用过的块保留在内存中通过延迟写来优化磁盘I/O读写可以启动多个数据写入进程参数DB_WRITER_PROCESSES决定DBWR启动的个数进程名称分别为DBW0、DBW1、、、DBWjE_mail:tengyc@263.net49DBWR进程DBWR在下面情况将dirty缓冲区写入磁盘:dirty队列达到一定长度某个进程

1 / 63
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功