2oracle9i体系结构.ppt_第1页
2oracle9i体系结构.ppt_第2页
2oracle9i体系结构.ppt_第3页
2oracle9i体系结构.ppt_第4页
2oracle9i体系结构.ppt_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 Oracle9i体系结构,2.1 Oracle9i体系结构概述 2.2 Oracle9i的物理结构 2.3 Oracle9i的逻辑结构 2.4 数据库例程 2.5 Oracle9i的内存结构 2.6 Oracle9i的进程结构 2.7 数据字典,2.1 Oracle9i体系结构概述,2.1 Oracle9i体系结构概述,口令文件,例程,SGA,重做日志缓冲区,共享池,数据字典高速缓存,库高速缓存,DBWR,SMON,PMON,CKPT,LGWR,其它,用户进程,服务器进程,PGA,控制文件,数据文件,数据库,数据库缓冲区高速缓存,重做日志文件,Java 池,大型共享池,参数文件,归档

2、日志文件,2.2 Oracle9i的物理结构,数据库的物理(存储)结构是指构成数据库的 操作系统文件 Oracle数据库的物理结构主要包括四种文件,数据文件 日志文件 控制文件 配置文件,2.2.1 数据文件,用于存放数据库中所有的数据 一个数据库可包含多个数据文件 一个数据文件只能属于一个数据库 数据文件的后缀是.DBF,2.2.1 数据文件,查看数据文件 select tablespace_name,file_name from dba_data_files; col tablespace_name format a20; col file_name format a50; select

3、tablespace_name,file_name from dba_data_files; select tablespace_name,bytes/1024/1024,autoextensible,file_name from dba_data_files; set linesize 200; select name from v$datafile;,日志文件又称重做日志文件或联机重做日志文件(Online Redo Log File) 日志文件记录所有对数据库进行的修改,以便在系统发生故障时,用它对数据库进行恢复。 日志文件的后缀是.LOG,2.2.2 日志文件,每一个数据库至少包含两个

4、日志文件组。 每一个日志文件组至少包含一个日志文件成员。 每一个日志文件成员对应一个物理文件。 日志文件组以循环方式进行写操作。,日志文件的特点:,2.2.2 日志文件,2.2.2 日志文件,日志文件工作原理,镜像日志文件是为防止日志文件丢失,在不同磁盘上同时维护两个或多个联机日志文件的副本。,2.2.2 日志文件,2.2.2 日志文件,镜像日志文件工作原理,根据在事务信息将被覆盖时,是否应该将文件归档,数据库分为以下两种归档模式: 归档日志模式(Archivelog):全恢复模式,适合银行系统等 非归档日志模式(NoArchivelog):适合对数据库中数据要求不高的场所,2.2.2 日志文

5、件,2.2.2 日志文件,归档日志模式,查看日志文件 SELECT * FROM V$LOGFILE; SELECT * FROM V$LOG; select name,log_mode from v$database; archive log list;,2.2.2 日志文件,是一个较小的二进制文件,用于打开、存取控制 数据库 控制文件记录了数据库的物理结构,如数据库名、 数据文件和日志文件的名字及位置等信息。 控制文件的后缀是.CTL 控制文件对于数据库的成功启动和正常运行至关重要。,2.2.3 控制文件,在启动数据库时,必须先找到控制文件,以确定 数据文件和日志文件,只有控制文件一切正常

6、, 才能打开数据库。 并且在数据库运行过程中,控制文件必须始终保持 可用状态,以接受对数据库物理结构所做的任何修 改信息。 如果打开数据库时找不到可用的控制文件,或控制 文件所记录的信息出错,则无法打开数据库。 控制文件的内容只能由Oracle自身来修改。 每个数据库至少要有一个控制文件。,2.2.3 控制文件,查看控制文件 Select * from v$controlfile;,2.2.3 控制文件,2.2.4 配置文件,配置文件(也叫参数文件),用于在启动数据库对数据库和例程进行配置。 配置文件的后缀是.ORA Oracle9i有两个参数文件 init.ora(E:oracleadmin

7、ora9dbpfile) SPFILEORA9DB.ORA (E:oracleora90database),2.2.4 配置文件,如何判断当前数据库使用的是哪个配置文件? select name, value from v$parameter where name = spfile; value的值为空, 说明使用的配置文件是init.ora value的值不为空, 说明使用的是spfile*.ora,2.2.4 配置文件,如何判断当前数据库使用的是哪个配置文件? show parameter spfile value的值为空, 说明使用的配置文件是init.ora value的值不为空, 说

8、明使用的是spfile*.ora,2.2.5 其他文件,口令文件 用于保存具有SYSDBA、SYSOPER权限的用户名 select * from v$pwfile_users; 归档日志文件 用于保存已经写满的重做日志文件,2.3 Oracle9i的逻辑结构,Oracle的逻辑结构是由一个或多个表空间组成的 一个表空间由若干个段组成 一个段由若干个区组成 一个区由若干数据库块组成 一个数据库块对应一个或多个OS块,Oracle数据库的存储结构,2.3 Oracle9i的逻辑结构,Oracle数据库的逻辑结构,表空间分类,SYSTEM表空间 自动建立(随数据库创建) 存放数据字典 存储过程、包

9、、函数和触发器的定义 存储数据库对象的定义,2.3.1 表空间,表空间分类,回滚表空间 回滚表空间(RollBack Table Space)是用于存放回滚段信息的表空间。 回滚段中的信息是临时的、未提交的事务信息,当需要回滚事务时,从回滚段表空间中提取回滚信息撤销事务。 回滚表空间只能建立回滚段,不能在回滚表空间创建数据库对象。,2.3.1 表空间,表空间分类,临时表空间 临时表空间(Temp Table Space)一般用于存放例程运行过程中产生的临时数据(如执行用于排序、连接查询和建立索引的SQL语句时产生的临时数据)。 如果数据库使用过程中的临时数据较多且频繁,则应当在数据库中创建一个

10、专门用来存储临时数据的临时表空间。否则 临时数据会存储在SYSTEM表空间中,影响整个系统的性能。,2.3.1 表空间,表空间分类,用户表空间 用于存放用户的私有信息。,2.3.1 表空间,select * from v$tablespace; select * from dba_tablespaces; select tablespace_name,file_name from dba_data_files;,查看表空间,2.3.1 表空间,段有多种不同的类型,对应于不同类型的数据对象,常见的有:,数据段(Data Segment) 索引段(Index Segment) 回滚段(Rollba

11、ck Segment) 临时段(Temporary Segment),2.3.2 段,段的分类,回滚段作用,当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。,2.3.2 段,是数据库空间分配的逻辑单位,一个区由若干数据库块组成 缺省情况下,数据库会使用表空间中存储的存储参数来管理它们的分区 分配给段的第一个区称初始分区,以后分配的区称增量分区,2.3.3 区,主要的几个存储参数: INITIAL:段建立时分配的第一个区的大小(单位:字节) NEXT:段内分配的下一个增量区大小(单位:字节) MAXEXTENTS:分配给段的区总数 MINEXTENTS:建立段时分配的区总数,也就

12、是段的最小区数量 PCTINCREASE:为段分配的每个增量区超过上一个区的百分比,2.3.3 区,存储子句优先级,2.3.3 区,数据库块又称逻辑块或Oracle块。 一个数据库块对应一个或多个物理块(OS块) 数据库块的大小由参数DB_BLOCK_SIZE确定。,2.3.4 数据库块,2.4 数据库例程,数据库例程(instance) ,也叫数据库实例,是Oracle DBMS中用来访问数据库文件集的存储结构以及后台进程的集合,它是存取和控制数据库的软件机制。,数据库例程是运行数据库时后台运行的程序、占用的内存等的集合。,数据库例程是用户进程与数据文件之间 的桥梁,它由(一系列的内存区)与

13、后台进程组成 ,用户进程必须通过例程才能读写数据文件。,2.4 数据库例程,数据库由一些文件组成,用户不能直接理解数据库数据文件的内容,例程能理解这些信息,并把数据库里的数据取出来,翻译后展现给用户。例程还能把修改的数据,以数据库的格式存到数据文件中。另外例程还有监视进程、存档等功能,2.4 数据库例程,口令文件,例程,SGA,重做日志缓冲区,共享池,数据字典高速缓存,库高速缓存,DBWR,SMON,PMON,CKPT,LGWR,其它,用户进程,服务器进程,PGA,控制文件,数据文件,数据库,数据库缓冲区高速缓存,重做日志文件,Java 池,大型共享池,配置文件,归档 日志文件,Oracle

14、Server,Oracle 服务器,2.4 数据库例程,通常数据库与例程是一一对应的,即一个数据库对应一个例程; 在并行数据库服务器结构中,数据库与例程是一对多关系,即一个数据库对应多个例程; 多个例程同时驱动一个数据库的架构称作“集群”,同一时间一个用户只能与一个例程联系,当某一个例程出现故障时,其他例程照常运行,从而保证了数据库的安全运行。,2.4 数据库例程,Oracle 的内存结构由四个内存区组成,分别是: 系统全局区 (SGA) 程序全局区 (PGA) 排序区 软件代码区,2.5 Oracle9i的内存结构,2.5.1系统全局区,系统全局区(SGA,System Global Are

15、a),是内存结构的主要组成部分,是Oracle为一个例程分配的一组共享内存缓冲区,保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析、重做日志管理等,是例程的主要部分。 SGA 在例程启动时自动分配,当例程关闭时收回。 数据库的所有操作都要通过SGA来进行。,2.5 Oracle9i的内存结构,2.5.1系统全局区,根据存放信息的不同,SGA分为: 数据块缓冲区 共享池:库高速缓存 数据字典高速缓存 重做日志缓冲区 两个可选区:Java池 大池,2.5 Oracle9i的内存结构,2.5.1系统全局区,2.5 Oracle9i的内存结构,数据块缓冲区用于存放Orac

16、le最近从数据文件中读取的数据块。 数据块缓冲区的工作原理:教材P35 数据块缓冲区的大小有由配置文件中的db_cache_size指定。,2.5.1系统全局区,2.5 Oracle9i的内存结构,1 数据块缓冲区(Database Buffer Cache),它包括两个部分:库高速缓存(Library Cache)和数据字典高速缓存(Data Dictionary Cache) 库高速缓存存放已提交的SQL文本、编译后的代码和执行计划 数据字典高速缓存存放用于分析SQL语句的数据字典行,包含表、列定义以及权限信息 共享池的大小由配置文件中 shared_pool_size 参数指定,2.5.

17、1系统全局区,2.5 Oracle9i的内存结构,2 共享池(Shared Pool),对数据库进行的任何修改在记录到日志文件之前都必须先存放到重做日志缓冲区里。 重做日志缓冲区的大小由 log_buffer 指定,2.5.1系统全局区,2.5 Oracle9i的内存结构,3 重做日志缓冲区 (Redo log Buffer),作用:为大数据集的操作提供内存空间,以便提高这些操作的性能。 大池是一个可选的内存结构。 DBA可以根据实际需要来决定是否在SGA区中创建大池。 需要大池的操作:数据库备份和恢复,具有大量排序操作的SQL语句,并行化的数据库操作。,2.5.1系统全局区,2.5 Orac

18、le9i的内存结构,4 大池(Large Pool),如果没有大池,上述操作所需的内存空间将占据共享池内存。由于这些操作所占据的内存比较多,会导致影响到共享池的使用效率,这时候,就应该考虑在SGA区中创建大池,在大池中为这些操作分配内存 大池的大小由large_pool_size指定,2.5.1系统全局区,2.5 Oracle9i的内存结构,4 大池(Large Pool),用于存放java代码,java语句的语法分析表等 JAVA池的大小由java_pool_size指定,2.5.1系统全局区,2.5 Oracle9i的内存结构,5 JAVA池(Java Pool),是某个Oracle服务器

19、进程使用的内存区域 SGA是所有进程共享的,PGA是非共享的,每个服务器进程有自己的PGA 当服务器进程建立时分配,2.5.2程序全局区(PGA),2.5 Oracle9i的内存结构,用于存放排序操作所产生的临时数据, 其大小由初始化参数sort_area_size指定。 关于排序、sort_area_size、临时表空间(建word文档),2.5.3排序区,2.5 Oracle9i的内存结构,用于存放正在执行的程序代码,2.5.4软件代码区,2.5 Oracle9i的内存结构,2.6 Oracle9i的进程结构,在Oracle数据库管理系统中,进程由用户进程、服务器进程和后台进程组成。,口令

20、文件,例程,SGA,重做日志缓冲区,共享池,数据字典高速缓存,库高速缓存,DBWR,SMON,PMON,CKPT,LGWR,其它,用户进程,服务器进程,PGA,控制文件,数据文件,数据库,数据库缓冲区高速缓存,重做日志文件,Java 池,大型共享池,配置文件,归档 日志文件,Oracle Server,Oracle 服务器,2.6 Oracle9i的进程结构,2.6.1用户进程,是一个需要与Oracle Server交互的程序 运行于客户端 当用户运行某个工具或应用程序(如SQL*Plus)时创建,当用户退出上述程序时结束 向Oracle Server发出调用,但它并不与Oracle Serv

21、er直接交互,而是通过Server Process与Oracle Server进行交互。,2.6 Oracle9i的进程结构,是一个直接与Oracle Server交互的程序。 与Oracle Server运行于同一台机器上 使用PGA,2.6.2服务器进程,2.6 Oracle9i的进程结构,服务器进程的功能:处理用户进程的请求。 处理过程: 分析SQL命令并生成执行方案。 从数据块缓冲区中读取数据。 将执行结果返回给用户。,服务器进程的分类 专用服务器进程: 一个服务进程对应一个用户进程 共享服务器进程: 一个服务进程对应多个用户进程,轮流为用户进程服务。,2.6.2服务器进程,2.6 O

22、racle9i的进程结构,2.6.3后台进程,2.6 Oracle9i的进程结构,后台进程用来管理数据库的读写,恢复和监视等工作。 主要包括:,DBWR:数据库写进程 LGWR:日志写进程 CKPT: 检查点写进程 SMON:系统监控进程 PMON:进程监控进程 ARCH:归档进程 RECO:恢复进程 LCKN :封锁进程,将数据块缓冲区中所有修改过的数据块写到数据文件中,并使用LRU算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数。 该进程在启动例程时自动启动。,2.6.3后台进程,2.6 Oracle9i的进程结构,DBWR(Data Base Writer),数据库写进程 (

23、DBWR),在以下情况下写入: 出现检查点 脏数据缓冲区达到阈值 没有空闲缓冲区 出现超时 表空间处于 OFFLINE 状态 表空间处于 READ ONLY 状态 对表执行 DROP 或 TRUNCATE 操作 对表空间执行 BEGIN BACKUP 操作,例程,SGA,控制文件,数据文件,重做日志文件,数据库,DBWR,数据库缓冲区高速缓存,将日志缓冲区中的所有记录项写到日志文件中。 该进程在启动例程时自动启动。,2.6.3后台进程,2.6 Oracle9i的进程结构,LGWR(Log Writer),LGWR 在以下情况下写入: 事务提交时 三分之一填满时 有 1 MB 的重做时 每隔三秒

24、 DBWR 写入前,作用:同步数据文件,日志文件和控制文件 由于DBWR/LGWR的工作原理,造成了数据文件、日志文件、控制文件的不一致,这就需要CKPT进程来同步。 CKPT会更新数据文件/控制文件的头信息。,2.6.3后台进程,2.6 Oracle9i的进程结构,CKPT,在日志切换的时候 数据库用immediate ,transaction , normal 选项关闭数据库的时候 根据初始化文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的设置的数值来确定 用户触发,2.6.3后台进程,2.6 O

25、racle9i的进程结构,CKPT,CKPT工作的主要条件如下:,负责完成自动例程恢复和回收临时表空间 该进程在启动例程时自动启动,2.6.3后台进程,2.6 Oracle9i的进程结构,SMON(System Monitor),当某个进程失效时,清除相关的资源。它主要负责以下工作:,2.6.3后台进程,2.6 Oracle9i的进程结构,PMON(Process Monitor ),回滚用户的当前事务 释放相关的锁 释放其它相关的资源,ARCH不随例程的启动自动启动,只有当数据库以归档方式运行的时候,Oracle才会启动ARCH进程 当重做日志文件被写满时,日志文件进行切换,旧的重做日志文件

26、就被ARCH进程复制到一个/多个特定的目录/远程机器,形成归档日志文件。,2.6.3后台进程,2.6 Oracle9i的进程结构,ARCH,RECO是在分布式数据库中使用的一个进程 负责解决分布事务中的故障,2.6.3后台进程,2.6 Oracle9i的进程结构,RECO,用于并行服务器系统 主要完成例程之间的锁定,2.6.3后台进程,2.6 Oracle9i的进程结构,LCKN,口令文件,例程,SGA,重做日志缓冲区,共享池,数据字典高速缓存,库高速缓存,DBWR,SMON,PMON,CKPT,LGWR,其它,用户进程,服务器进程,PGA,控制文件,数据文件,数据库,数据库缓冲区高速缓存,重

27、做日志文件,Java 池,大型共享池,参数文件,归档 日志文件,2.7 数据字典,数据字典是Oracle数据库的核心组件,对用户来说,它由只读类型的表和视图组成。在其中保存着关于数据库系统本身以及其中存储的所有对象的基本信息。,数据字典提供有关以下方面的信息: 所有数据库对象的定义 如何为对象分配和使用空间 列的默认值 完整性约束信息 数据库安全信息,如用户和权限、角色等 审计信息。,存储在 SYSTEM 表空间内 由用户 SYS 拥有 由 Oracle 服务器进行维护 通过 SELECT 访问,2.7 数据字典,2.7 数据字典,数据字典的结构,基础表:存储在数据文件中 数据字典视图:基于基

28、础表的视图 ALL视图 USER视图 DBA视图 动态性能视图:存储在SGA和控制文件中,基础表 存储相关数据库信息,包括表、索引、约束等数据库对象的结构信息; 大部分数据字典基础表的名称中都包含“$”等特殊字符。 基础表的名字是很难记忆的,所以Oracle为基础表建立了视图,这些视图名不仅简单形象,还隐藏了数据字典表表之间的关系,我们通常通过视图来查询数据库的信息。,2.7 数据字典,数据字典视图 按范围分类为: DBA:所有用户的视图 ALL:用户可以访问的视图 USER:用户拥有的视图,2.7 数据字典,查看每个表空间占用空间的大小: select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 查看段的信息 SQL select segment_name from user_segments;,2.7 数据字典,查看区的信息 SQL col segment_name format a30 SQL select segment_name,extent_id,bytes,blocks fr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论