《Oracle体系结构教学内容.ppt》由会员分享,可在线阅读,更多相关《Oracle体系结构教学内容.ppt(111页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle体系结构 本章要点本章要点Oracle服务器体系结构服务器体系结构Oracle 实例实例 Oracle内存结构内存结构 Oracle进程结构进程结构 Oracle 数据库逻辑存储结构数据库逻辑存储结构 Oracle 数据库物理存储结构数据库物理存储结构 Oracle构架构架实 例内存结构内存结构后台进程后台进程PMONSMONDBWRLGWRCKPT其他数据库数据库数据文件数据文件数据文件控制文件控制文件日志文件日志文件参数文件归档日志文件归档日志文件口令文件SGA用户进程服务器进程PGA共享池数据缓冲区日志缓冲区3.1Oracle服务器体系结构概述服务器体系结构概述lOracle
2、 服务器服务器 1、Oracle数据库数据库 Oracle数据库是一个存储数据的容器,由一些操作系统文件组成,它的基本功能是存储数据库全部的数据,数据的种类主要包括用户数据、控制数据以及操作信息等。数据库文件可分为数据数据文件、控制文件文件、控制文件和重做日志文件重做日志文件三类。Oracle数据库文件PasswordfileParameterfileArchivedlogfilesControlfilesDatafilesRedologfilesDatabase3.1Oracle服务器体系结构概述服务器体系结构概述lOracle 服务器服务器 2、Oracle实例实例 Oracle实例是运行
3、在内存中的Oracle软件,主要包括Oracle内存结构和一些Oracle进程。在启动Oracle服务器时,实际上是在内存中创建一个Oracle实例,然后由这个实例访问和控制数据库文件的存取。Oracle实例实例BackgroundprocessstructuresMemorystructuresInstanceSGARedoLogBufferSharedPoolDataDictionaryCacheLibraryCacheDBWRSMONPMONCKPTLGWROthersDatabaseBufferCacheJavaPoolLargePool3.1Oracle服务器体系结构概述服务器体系结
4、构概述lOracle 服务器服务器 3、用户进程用户进程和其它进程和其它进程 用户进程是当用户执行一个Oracle应用程序(如Pro*C/C+),或启动一个Oracle工具(如SQL*Plus)时,Oracle所创建的用于管理这些应用程序或Oracle工具与Oracle实例通信的进程。用户进程不是实例的一部分。用户进程不是实例的一部分。是一些试图连接数据是一些试图连接数据库的软件库的软件ServerUserClientClientUserServerOracleserverOracleserverServerServerUserServerApplicationserverApplicatio
5、nserverBrowserBrowser用户进程连接用户进程连接Oracle实例实例3.1Oracle服务器体系结构概述服务器体系结构概述lOracle 服务器工作过程服务器工作过程 以取款过程为例,跟踪Oracle对这一事务的执行过程,了解Oracle各组成部分的功能和Oracle服务器的工作过程。1)首先通过银行柜员机查询银行卡上存款情况。柜员机接受请求后,向远程服务器发出SQL语句:SELECT USER,ACCOUNT FROM BANK_ACCOUNT WHERE PASEWORD 123456 AND ACCOUNT_ID 1938743228;3.1Oracle服务器体系结构概
6、述服务器体系结构概述lOracle 服务器工作过程服务器工作过程 SQL语句通过网络传送到服务器端,服务器进程接收到SQL语句后,检查共享池中是否保存有该SQL语句解析后的程序代码。如果SQL不在共享池中,服务器进程将解析SQL语句,然后执行此程序,否则从共享池中取出SQL语句直接执行。服务器将保存有存款数量的数据块从数据文件中读出并放到SGA的数据高速缓存中。一旦存款数据放进数据高速缓冲区中,客户进程即可读出此数据并将其返回至柜员机。3.1Oracle服务器体系结构概述服务器体系结构概述lOracle 服务器工作过程服务器工作过程 (3)根据存款情况从银行卡上取出一部分现金。柜员机接收取款数
7、量后,形成下列SQL语句并发送到服务器:UPDATE BANK_ACCOUNT SET ACCOUNT_BALANCE=100 WHERE PASEWORD 123456 AND ACCOUNT_ID 1938743228;3.1Oracle服务器体系结构概述服务器体系结构概述lOracle 服务器工作过程服务器工作过程 Oracle按下列步骤执行UPDATE语句:(1)用户进程通过服务器进程把该语句传给Oracle实例;(2)服务器进程在共享池中查找该SQL的可执行版本。如果找到,则转向第(4)步,否则执行第(3)步;(3)解析这条SQL语句,并将其可执行版本送入共享池;(4)执行此SQL语
8、句;(5)服务器进程在数据高速缓存中查找该语句处理的数据,如果有,则转向第(7)步;否则,执行第(6)步;(6)从数据库文件中把数据读入数据高速缓冲区;(7)在回退段中记录原来的存款数量;(8)在重做日志中生成该事务的一个重做日志项;(9)将数据高速缓冲区中的存款数据改为取款后的数据;(10)LGWR进程在重做日志文件中记录已完成事务;(11)DBWn进程在数据文件中记录取款后的数据;3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 1.数据字典的概念 数据字典是Oracle数据库中最重要的逻辑结构之一,它是由一些只读的基础表和视图组成。在这些基础表中,保存着Oracl
9、e服务器所有的信息。3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 1.数据字典的概念数据字典中的信息主要包括:数据库物理结构和逻辑结构的定义数据的完整性约束信息数据库的安全信息审计信息数据库运行时的性能和统计信息其它关于数据库的基本信息3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 2.数据字典的结构基础表基础表 数据字典中的数据都是保存在基础表中的。用户视图用户视图 大多数用户通过从视图而不是从基表进行选择来检查数据字典。它们将基表数据解码为有用的信息,使用连接和WHERE子句来简化基表信息。3.1Oracle服务器体系结构概述服务器体系
10、结构概述l数据字典数据字典3.数据字典的作用获取有关用户、模式对象和存储结构的信息,从而控制和管理服务器工作。任何数据库用户都可从DD中读取关于数据库的信息,从而实现对数据库进行相关的开发、修改和维护等操作。DBA可以从数据字典中获取数据库的各种参数信息和运行状态信息,从而进行有效的数据库管理。Oracle服务器在执行DDL语句时对其进行修改3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 4.用户视图 用户视图也叫静态数据字典视图,内容是基本表中的数据,只有基本表改变后,视图的内容才随之改变。名称前缀视图中的数据内容使用者USER_该数据库用户所拥有的模式对象信息一般
11、用户或DBAALL_该数据库用户所能访问的所有模式对象信息一般用户或DBADBA_所有数据库对象信息DBA3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 4.数据字典视图类别 DBA_xxxUSER_xxxALL_xxx当前用当前用户拥有的有的对象象当前用当前用户可以可以访问的的对象象数据数据库中的所有中的所有对象象3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 4.用户视图 (1)“USER_”为前缀的用户视图通常包含执行查询的用户所拥有的对象的信息,这类视图可以被一般用户使用。例如,用户SCOTT想知道自己拥有那些表。SQLSELECT
12、TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;结果将会显示用户SCOTT所拥有的全部表的表名和表空间情况。TABLE_NAME TABLESPACE_NAME-BONUS SYSTEMDEPT SYSTEMEMP SYSTEM3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 4.用户视图 (2)ALL_为前缀的用户视图通常包含包括执行查询的用户所拥有的对象信息及授权给该用户所拥有的对象信息,这类视图可以被一般用户使用。例如,用户SCOTT想知道自己能够访问那些表。SQLSELECT TABLE_NAME,TABLESPACE_N
13、AME FROM ALL_TABLES;结果将会显示用户SCOTT所能访问的全部表的表名和表空间情况。TABLE_NAME TABLESPACE_NAME-DUAL SYSTEMSYSTEM_PRIVILEGE_MAP SYSTEMTABLE_PRIVILEGE_MAP SYSTEMSTMT_AUDIT_OPTION_MAP SYSTEM3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 4.用户视图 (3)DBA_为前缀的用户视图则包含所有数据库对象的信息,而不管其所有者是谁,这类视图只能被具有DBA权限的用户或被授予了SELECT ANY TABLE 权限的用户使用。
14、如:以用户SCOTT登录Oracle服务器,执行下述语句:SQLSELECT TABLE_NAME,TABLESPACE_NAME FROM DBA_TABLES;结果将会显示如下提示信息:ERROR 位于第 1 行:ORA-00942:表或视图不存在3.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 4.用户视图 现在以用户SYSTEM登录Oracle服务器,查询数据库用户信息。SQLSELECT TABLE_NAME,TABLESPACE_NAME FROM DBA_TABLES;结果将会显示系统中所有表的表名和表空间情况。TABLE_NAME TABLESPACE_
15、NAME -SEG$SYSTEM CLU$SYSTEM OBJ$SYSTEM 常用数据字典用户视图常用数据字典用户视图常用数据字典用户视图常用数据字典用户视图 说明:每个视图都对应着一个“DBA_”、一个“ALL_”和一个“USER_”视图。视图家族家族描描 述述TABLES 表信息,比如表空表信息,比如表空间、存、存储参数和数据行的数量参数和数据行的数量 VIEWS 视图信息,包括信息,包括视图定定义 EXTENTS 数据范数据范围信息,比如数据文件、数据段名和大小信息,比如数据文件、数据段名和大小 INDEXES 索引信息,比如索引信息,比如类型、唯一性和被涉及的表型、唯一性和被涉及的表
16、OBJECTS 对象信息,比如状象信息,比如状态和和DDL时间SOURCE 除触除触发器之外的所有内置器之外的所有内置过程、函数、包的源代程、函数、包的源代码 SYNONYMS 别名信息,比如引用的名信息,比如引用的对象和数据象和数据库链接接db_link SYS_PRIVS 系系统权限,比如限,比如grantee、privilege、admin选项 5privilidVTAB_COLUMNS 表和表和视图的列信息,包括列的数据的列信息,包括列的数据类型型 TAB_PRIVS 表表权限,比如授予者、被授予者和限,比如授予者、被授予者和权限限 TRIGGERS 触触发器信息,比如器信息,比如类型
17、、事件、触型、事件、触发体体USERS 用用户信息,比如信息,比如临时的和缺省的表空的和缺省的表空间 Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 5、动态性能表-V$视图视图 Oracle服务器在运行过程中,会将当前服务器的运行状态记录在内存中的一些“虚拟”表中,这些“虚拟”表称之为动态性能表。Oracle在动态性能表的基础上建立了动态性能视图,这些动态性能视图由前缀V_$标示,其公共同义词具有前缀V$或GV$,因此,动态性能视图一般又称为V$视图。常用的动态性能视图常用的动态性能视图常用的动态性能视图常用的动态性能视图动态性能性能视图名称名称内容内容V$CONTROL
18、FILE数据库控制文件信息V$DATABASE控制文件中数据库信息V$DATAFILE控制文件中数据文件信息V$INSTANCE当前实例信息V$PARAMETER初始化参数信息V$SESSION当前每一个会话的会话信息V$SGASGA的信息的信息V$SPPARAMETERSPFILE文件的内容V$TABLESPACE控制文件中表空间信息V$VERSIONOracle服务器核心组件的版本信息Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典例如,使用V$SGA视图查询SGA情况。首先用SYS帐户,以SYSDBA连接身份登录SQL*Plus,执行下列命令:SQLSELECT*FRO
19、M V$SGA;结果显示为:NAME VALUE-Fixed Size 453492Variable Size 109051904Database Buffers 25165824Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典例如,使用V$FIXED_TABLE视图可看所有动态性能表和动态性能视图的信息。SQLSELECT*FROM V$FIXED_TABLE;结果显示为:NAME OBJECT_ID TYPE TABLE_NUM-X$KQFTA 4294950912 TABLE 0X$KQFVI 4294950913 TABLE 1X$KQFVT 4294951149 T
20、ABLE 23.1Oracle服务器体系结构概述服务器体系结构概述l数据字典数据字典 6.其它视图例如,下面的代码以另一种方式显示当前用户(如:scott)已创建的所有表Select*from tab;TNAME TABTYPE CLUSTERID-ACCOUNT TABLEBONUS TABLEDEPT TABLEEMP TABLERECEIPT TABLESALGRADE TABLE已选择6行。3.2Oracle实例实例 Oracle实例是运行在内存中的Oracle软件,主要包括Oracle内存结构和一些Oracle进程。在启动Oracle服务器时,实际上是在内存中创建一个Oracle实例
21、,然后由这个实例访问和控制数据库文件的存取。3.2Oracle实例实例l实例的概念实例的概念 1.实例 实例就是运行状态下的Oracle软件,主要是由内存结构和一些进程组成。在Oracle中,每一个数据库至少有一个与之对应的实例,但一个实例只能打开和使用一个数据库。DatabaseInstanceSGARedologbufferDatabuffercacheSharedpoolDatadict.cacheLibrarycachePMONDBW0SMONLGWRCKPTOthersUserprocessServerprocessPGAControlfilesDatafilesRedologfil
22、esArchivedlogfilesParameterfilePasswordfileOracle体系结构体系结构OSRAMDISKNetOracle实例实例BackgroundprocessstructuresMemorystructuresInstanceSGARedoLogBufferSharedPoolDataDictionaryCacheLibraryCacheDBWRSMONPMONCKPTLGWROthersDatabaseBufferCacheJavaPoolLargePool3.2Oracle实例实例l实例的概念实例的概念 2.实例的组成系统全局区SGA。后台进程。3.2Or
23、acle实例实例l实例的概念实例的概念 实例可以实现数据库的访问和控制功能。单节点服务器多节点服务器 3.2Oracle实例实例l实例的概念实例的概念例如:假定有一台计算机上有两个数据库,分别称作ORCL和TEACH,如果这两个数据库分别有自己的SGA和独立的Oracle服务器进程集,那么就有了两个数据库实例。为了不致使这两个数据库混淆,每个实例都实例都要用称为要用称为SID(System Identifier,系统标识符,系统标识符)的符的符号来标识号来标识。3.3Oracle内存结构内存结构 内存结构是Oracle服务器体系结构中最重要的组成部分之一,是决定Oracle服务器整体性能的关键
24、因素。3.3Oracle内存结构内存结构l内存结构的组成内存结构的组成系统全局区(SGA):在实例启动的时候分配,是Oracle实例中的一个基本部分程序全局区(PGA):服务器进程启动时分配,与SGA区不同的是,PGA不是一个共享全局区,而是一个私有区。3.2Oracle内存结构内存结构l内存结构的组成内存结构的组成Oracle内存结构保存有以下信息:解析后的SQL语句和PL/SQL程序代码连接数据库的所有会话信息缓存数据,包括用户执行SQL语句和PL/SQL程序生成的数据和重做日志数据Oracle运行所需要的信息,如数据字典信息等Oracle进程共享和通信所需要的信息,例如锁信息。3.2Or
25、acle内存结构内存结构l系统全局区系统全局区(1)SGA的结构 数据库高速缓存(Database Buffer Cache)重做日志缓存(Redo Log Buffer)共享池(Shared Pool)Java池(Java Pool)大型池(Large Pool)数据字典高速缓存(Data Dictionary Cache)其它信息存储结构 SGARedologbufferDatabuffercacheSharedpoolDatadict.cacheLibrarycacheLargePoolJavaPoolSGASGA结构图结构图结构图结构图 3.2.1系统全局区系统全局区(SGA)l数据库
26、高速缓存数据库高速缓存 数据库高速缓存(Database Buffer Cache)是SGA的一个缓冲存储区,暂存有从数据文件中读取的数据,Oracle可以对这些数据进行各种数据库操作,并且连接到Oracle数据库的所有用户可以共享其中的数据。l数据库高速缓存数据库高速缓存(Database Buffer Cache)存放最近使用的数据 采用最近最少使用(LRU)算法来管理空间。有关参数:db_block_buffers db_block_size 3.2.1系统全局区系统全局区(SGA)l重做日志缓存重做日志缓存(Redo Log Buffer)存放日志条目 由log_buffer参数决定大
27、小3.2.1系统全局区系统全局区(SGA)l共享池共享池 包括:包括:字典缓冲区(Date Dictionary Cache)库缓冲区(Library Cache)大小由参数SHARED_POOL_SIZE 决定3.2.1系统全局区系统全局区(SGA)3.2.1系统全局区系统全局区(SGA)l共享池共享池 共享池(Shared Pool)主要用来存储SQL,PLSQL、过程和包、数据字典、字符设置信息和安全属性等。共享池是SGA中最关键的内存结构之一,太小的共享池会严重影响Oracle的性能和可伸缩性。l共享池共享池 1.库高速缓存 库高速缓存用来保存已经提交给Oracle的SQL语句、解析并
28、执行过的PL/SQL程序。库高速缓存又可分为:共享SQL区 在共享SQL区中,保存有执行过的SQL的解析结果和执行计划。共享PL/SQL区 共享PL/SQL区就是存储经过解析、编译后的Oracle程序单元(存储过程、函数、包和触发器等)代码的一块内存区域。3.2.1系统全局区系统全局区(SGA)l共享池共享池 2.数据字典高速缓存 保存数据字典信息 也是采取最近最少使用算法来管理空间的。3.2.1系统全局区系统全局区(SGA)l大型池大型池 1.大型池的概念 大型池(Large Pool)是用来暂存大块数据的一个内存结构。它不是Oracle实例必须有的,DBA可根据需要选配。在下述情况下,最好
29、配置大型池:在共享服务器模式下,设置大型池可以用来保存会话信息。较多的I/O服务操作,设置大型池可作为磁盘 I/O 缓冲区。进行数据库备份或恢复操作,设置大型池可作为磁盘 I/O 缓冲区。3.2.1系统全局区系统全局区(SGA)lJava池池 Java池(Java Pool)是为Java 程序设置的,用于存储 Java 的方法和类定义在共享内存中的表示法,以及在调用结束时移植到 Java 会话空间的 Java 对象。Java池是一个静态内存结构,它的大小由JAVA_POOL_SIZE设置。取值范围没有限制,可根据操作系统而定。Oracle 9i的默认值为24MB。3.2.1系统全局区系统全局区
30、(SGA)l程序全局区或叫进程全局区(PGA)是一个内存区域。l它包含单个进程工作时需要的数据和控制信息包含单个进程工作时需要的数据和控制信息。l与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域,是不共享不共享的。它类似家中的对讲电话,进程的不同部分可以相互通信,但与外界没有联系。lPGA 在创建进程时分配,在终止进程时回收 3.2.2程序全局区程序全局区(PGA)3.3进程结构进程结构 所有Oracle用户必须通过两类程序才能访问数据库,一类是应用程序或Oracle工具,另一类是Oracle代码。这两类程序构成了Oracle服务器的进程结构。l进程结构的组成进程结构的组成 O
31、racle进程的分类用户进程(User Process)用户进程执行的是应用程序代码或Oracle工具代码。Oracle进程 Oracle进程执行的是Oracle服务器的代码。它包括服务器进程和后台进程两种。3.3进程结构进程结构3.3.1用户进程用户进程 l用户进程用户进程 用户通过用户进程连接到Oracle实例,实现用户命令的提交和执行结果的获取功能。当用户运行应用程序时,Oracle自动为用户建立一个用户进程,用户进程通过用户程序接口(User Program Interface,简称UPI)在应用程序和服务器进程之间建立起了一个完整的通信连接。通过这个连接,用户和Oracle服务器建立
32、起了会话,最终实现用户访问数据库。3.3.2服务器进程服务器进程服务器进程主要完成以下功能:对用户发出的SQL语句进行语法分析、编译和执行。在数据库高速缓存中搜索所需的数据,如果数据不在数据库高速缓存中,则从磁盘中读取数据,并将数据复制到数据库高速缓存中。将结果返回给用户。服务器进程分类专用服务器进程(Dedicated Server Process)一个服务器进程只能服务于一个用户进程共享服务器进程(Shared Server Process)一个服务器进程可以服务于多个用户进程,为多个用户进程共享。3.3.2服务器进程服务器进程Oracle服务器工作模式专用服务器模式 在专用服务器模式中,
33、Oracle为每一个连接到实例上的用户进程创建一个专用的服务器进程,这个专用服务器进程只为该用户进程提供服务。共享服务器模式 在共享服务器模式中,Oracle在创建实例时启动一定数量的共享服务器进程,调度进程从服务器进程共享池中取出一个空闲的共享服务器进程为用户进程服务。3.3.2服务器进程服务器进程专用服务器进程 在专用服务器模式下,用户进程和服务器进程的数量是相等的。专用服务器进程随着用户进程的产生而产生,随着用户进程的终止而终止,并始终为一个用户进程服务。3.3.2服务器进程服务器进程共享服务器进程 在共享服务器模式下,用户进程和服务器进程的数量是不相等的。共享服务器进程是在Oracle
34、实例启动时创建的,直到数据库实例停止运行。少数服务进程为任意数量的用户进程提供。3.3.2服务器进程服务器进程3.3.3后台进程必须的后台进程包括:DBWn 数据库写进程PMON 进程监控进程CKPT 检查点进程LGWR 日志写进程SMON 系统监控进程3.3.3后台进程可选的后台进程包括:ARCn 归档进程QMNn 队列监控进程CJQ0 作业队列进程RECO 恢复进程Dnnn 调度进程LMS 锁管理服务器进程Snnn 共享服务器进程3.3.3后台进程l后台进程后台进程 Oracle为每个实例创建一组后台进程,这些后台进程执行I/O操作、监控其它进程工作、维护系统的可靠性,为多个用户的并发访问
35、提供有效的服务。3.3.3后台进程l后台进程后台进程 1.DBWn(数据库写进程)DBWn进程负责将数据库高速缓存中“脏”的数据写入到数据文件。在下列情况下,DBWn进程将“脏”数据块写入数据文件:当检查点发生时当数据库高速缓存中“脏”数据块达到一定数量时,在服务器进程需要读入大量的数据文件中的数据,但通过扫描数据库高速缓存没有找到足够的空闲块时发生超时(3秒)时设置表空间为脱机状态时设置表空间为只读状态时删除或删减一个表时备份表空间时3.3.3后台进程l后台进程后台进程 2.LGWR(日志写进程)LGWR进程是一个管理日志缓冲区的后台进程,负责将重做日志缓冲区的重做项写入到重做日志文件中。在
36、下列情况下,LGWR进程将重做日志缓冲区的数据写入到重做日志文件中:当用户提交一个事务时重做数据占有重做日志缓存13时DBWn进程将数据库高速缓存中的“脏”写入数据文件之前每3秒中执行一次LGWR进程日志切换3.3.3后台进程l后台进程后台进程 3.CKPT(检查点进程)检查点是Oracle设置的触发事件。当检查点发生时,CKPT进程将更新数据文件和控制文件的头信息,DBWn进程将数据库高速缓存中的“脏”数据块写入数据文件,DBWn进程的运行又会启动LGWR进程将重做日志缓存的内容写入重做日志文件,这样就完全同步了数据文件,日志文件和控制文件的内容。3.3.3后台进程l后台进程后台进程 3.C
37、KPT(检查点进程)CKPT工作的检查点包括:在重做日志文件切换时将表空间设置为脱机状态时数据库关闭时根据初始化参数LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、LOG_CHECKPOINT_TO_ALERT的设置的时间间隔来确定用户触发3.3.3后台进程l后台进程后台进程 4.SMON(系统监控进程)SMON进程在实例启动时,执行数据库恢复工作。如果数据库非正常关闭,在数据库再次启动时,SMON自动读取重做日志文件,对数据库进行恢复。除此之外,SMON进程还负责清理临时段,收回不再使用的存储空间,以及对表空间中的存储碎片进行整理合并等工作。3.
38、3.3后台进程l后台进程后台进程 5.PMON(进程监控进程)PMON进程在用户进程出现故障(如用户非正常关闭了应用程序等)时,清除失效的用户进程,释放用户进程所占用的资源。如PMON将回滚未提交的事务,释放锁,释放分配给失败进程的SGA和PGA资源。同SMON进程一样,PMON进程周期性地被唤醒检查是否需要它服务。3.3.3后台进程l后台进程后台进程 6.ARCn(归档进程)当数据库以归档方式运行的时候,ARCn进程负责将写满的重做日志文件复制到一个或多个指定的目录或存储设备中。这些被复制的目标文件被叫做归档日志文件。3.3.3后台进程l后台进程后台进程 7.RECO(恢复进程)RECO进程
39、用于解决分布式数据库环境下由于网络或系统故障而失败的事务。8.Dnnn(调度进程)Dnnn存在于共享服务器模式中,负责接受用户进程的请求、调度服务器进程,并将结果返回给用户。3.3.4Oracle服务器工作过程服务器工作过程 Oracle按下列步骤执行SELECT语句:(1)用户进程通过服务器进程把该语句传给Oracle实例;(2)服务器进程在共享池中查找该SQL的可执行版本。如果找到,则转向第(4)步,否则执行第(3)步;(3)解析这条SQL语句,并将其可执行版本送入共享池;(4)执行此SQL语句;(5)服务器进程在数据高速缓存中查找该语句处理的数据,如果有,则转向第(7)步;否则,执行第(
40、6)步;(6)从数据库文件中把数据读入数据高速缓冲区;(7)用户进程即可通过服务器进程读出此数据。Oracle按下列步骤执行UPDATE语句:(1)用户进程通过服务器进程把该语句传给Oracle实例;(2)服务器进程在共享池中查找该SQL的可执行版本。如果找到,则转向第(4)步,否则执行第(3)步;(3)解析这条SQL语句,并将其可执行版本送入共享池;(4)执行此SQL语句;(5)服务器进程在数据高速缓存中查找该语句处理的数据,如果有,则转向第(7)步;否则,执行第(6)步;(6)从数据库文件中把数据读入数据高速缓冲区;(7)在回退段中记录原来的存款数量;(8)在重做日志中生成该事务的一个重做
41、日志项;(9)将数据高速缓冲区中的存款数据改为取款后的数据;(10)LGWR进程在重做日志文件中记录已完成事务;(11)DBWn进程在数据文件中记录取款后的数据;3.3.4Oracle服务器工作过程服务器工作过程3.4Oracle数据库存储结构数据库存储结构 Oracle数据库是一个数据集合,它的主要功能是存储和检索数据。Oracle数据库采用了两种存储结构:逻辑存储结构逻辑存储结构和物理存储结构物理存储结构,这两种结构相互独立,互不影响。逻辑存储结构主要是指在Oracle内部使用的组织和管理数据的数据结构;物理存储结构是Oracle在操作系统中存储和管理数据的方式,即保存数据的Oracle文
42、件在操作系统中的存储结构。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构lOracle存储结构存储结构 1.逻辑存储结构块(Block)块是Oracle存储结构中最小的逻辑存储单元,是读写数据文件的最小单位。区(Extent)区是由一定数量连续的块组成的逻辑存储结构,是Oracle进行存储分配的单位。段(Segment)段是由一个或多个区组成的逻辑存储结构,可以用来保存特定的模式对象(表、索引等)。段可以分为数据段、索引段、临时段和回退段四类。表空间(Tablespace)表空间是最高一级的逻辑存储单元,是连接逻辑存储结构和物理存储结构之间的桥梁,表空间建立起了两者之间的对应关系。Or
43、acle通过表空间、段、区间和数据块,实现磁盘空间使用的细粒度控制通过表空间、段、区间和数据块,实现磁盘空间使用的细粒度控制3.4Oracle数据库逻辑存储结构数据库逻辑存储结构lOracle存储结构存储结构 2.物理存储结构 在操作系统级,Oracle以文件的形式组织和管理数据,而这些文件是存储在物理磁盘上的,是具体的物理存在,因此把这种结构叫物理存储结构。Oracle物理存储结构组成包括:数据文件 数据文件用来存储所有的数据库数据。控制文件 控制文件用来存储数据库的物理结构等信息。重做日志文件 重做日志文件用来记录对数据库的所有修改信息。数据库存储结构数据库存储结构DatabasePhys
44、icalTablespaceData fileOS blockOracle blockSegmentExtent数据库存储结构数据库存储结构3.4Oracle数据库逻辑存储结构数据库逻辑存储结构lOracle存储结构存储结构 3.模式对象模式是一个数据库对象的集合。表 Oracle数据库中基本的数据单元。视图 从表或视图中抽取出来的数据的表现形式。序列 Oracle自动生成的一个代码唯一的连续数值列。索引 一种与表相关的数据结构。利用索引,Oracle能够提高数据检索的性能。程序单元 包括存储过程、函数、程序包、触发器等。同义词 表、索引、视图或其它模式对象的一个别名。簇 一组由于共享公共列而
45、在物理上存放在一起的一个或多个表。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l块块 1.标准块 是Oracle存储结构的最小单位,是Oracle进行存储管理的最小单元。初始化参数DB_BLOCK_SIZE指定的数据块被称为标准块。标准数据块是在创建数据库时设定的,数据库创建完成后,该参数就不能改变。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l区区 区(Extent)是Oracle进行存储空间分配的最小单位,是由一系列物理上连续的块组成的逻辑存储结构。区存在于段中,是段的组成单位。一个或多个数据块组成区,一个或多个区组成一个段。3.4Oracle数据库逻辑存储结构数据库逻
46、辑存储结构l段段1.段的类型 在Oracle中,不同类型的模式对象拥有不同类型的段,主要段的类型包括:数据段(Data Segment)数据段用来存储表和簇的数据。主要包括表、分区的表和簇。索引段(Index Segment)索引段保存索引的索引条目。临时段(Temporary Segment)在临时表空间中保存临时操作的段。回退段(Rollback Segment)回退段主要用来保存数据被事务修改之前的原始数据。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l表空间表空间 表空间(Tablespace)是Oracle DB最高层次的逻辑存储结构,是由一系列数据文件组成的集合,其中保存
47、着由段、区和块等逻辑存储结构描述的各种模式对象。表空间是数据文件的集合,也是段的集合。因此,可以将表空间看作是逻辑存储结构和物理存储结构之间的桥梁,表空间建立起了两者之间的对应关系。表空间表空间Oracle的文件夹的文件夹。Oracle使用表空间组织数据库,在将数据插入到数据库之前,必须首先建立表空间,然后将数据插入表空间的一个对象中。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l表空间表空间 一个表空间必须包含一个或多个数据文件,但是一个数据文件只能属于一个表空间。一个数据库对象可以在一个数据文件中,也可以在多个数据文件中。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l表
48、空间表空间 每个数据库至少有一个表空间(系统表空间),一个表空间在某一时刻只能属于一个数据库。系统建立表空间的目的是尽量将相同目的的表存放在一起,是为了便于管理及提高使用效率。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构类型类型名称名称说明说明系统表空间SYSTEM系统表空间,存放关于表空间的名称、控制文件、数据文件等管理信息,是oracle数据库中最重要的表空间。SYSAUX辅助系统表空间。用于减少系统表空间的负荷,提高系统作业效率。10g新增的表空间非系统表空间TEMP临时表空间。存放临时表和临时数据,用于排序。UNDOTBS1重做表空间。存放数据库有关重做的相关信息和数据。US
49、ERS用户表空间。存放永久性用户对象和私有信息。EXAMPLE实例表空间。存放例子数据库的方案对象信息。3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l表空间表空间 3.表空间的查询 SQLSELECT TABLESPACE_NAME,STATUS FROM DBA_TABLESPACESTABLESPACE_NAME STATUS-SYSTEM ONLINEUNDOTBS1 ONLINETEMP ONLINE3.4Oracle数据库逻辑存储结构数据库逻辑存储结构l表空间表空间 3.表空间的查询通过数据字典DBA_FREE_SPACE查询表空间的可用空间状态。SQLSELECT TAB
50、LESPACE_NAME,SUM(BYTES)2 FROM DBA_FREE_SPACE 3 GROUP BY TABLESPACE_NAME;结果显示为:TABLESPACE_NAME SUM(BYTES)-CWMLITE 11141120DRSYS 10813440EXAMPLE 524288其中,SUM(BYTES)为总的可用空间。3.5Oracle数据库物理存储结构数据库物理存储结构 Oracle数据库的物理结构是指Oracle在运行过程中存储数据的操作系统文件。这些操作系统文件主要包括数据文件、控制文件、重做日志文件和归档日志文件四种类型。数据库物理结构与逻辑结构是相互联系、密不可分