oracle数据库物理结构技术课件

上传人:博****1 文档编号:569293116 上传时间:2024-07-28 格式:PPT 页数:40 大小:765KB
返回 下载 相关 举报
oracle数据库物理结构技术课件_第1页
第1页 / 共40页
oracle数据库物理结构技术课件_第2页
第2页 / 共40页
oracle数据库物理结构技术课件_第3页
第3页 / 共40页
oracle数据库物理结构技术课件_第4页
第4页 / 共40页
oracle数据库物理结构技术课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《oracle数据库物理结构技术课件》由会员分享,可在线阅读,更多相关《oracle数据库物理结构技术课件(40页珍藏版)》请在金锄头文库上搜索。

1、第二章 Oracle数据库体系结构续杨进1学习课件2.4 数据库物理结构数据库是数据存储的容器,作用是用来收集、存储数据和返回信息。数据库的存储结构就是数据库存储数据的方式。前面已经谈到数据库的存储结构可以分为逻辑结构和物理结构两个方面,两者相互独立又密切相关。 2学习课件从逻辑结构方面讲,Oracle 数据库以逻辑结构进行内部的管理和维护的,这些结构包括表空间、段、区和块。从物理结构方面讲,Oracle 数据库有外部的存储方法,Oracle 数据库由一系列的物理文件组成,主要有数据文件、控制文件和重做日志文件 3学习课件物理结构以及和表空间的关系如图4学习课件数据文件数据文件:用于存放所有的

2、系统和用户数据,默认以DBF 为扩展名。日志文件:日志文件:记录了对数据库进行的所有操作,默认以LOG 为扩展名。控制文件:控制文件:记录了数据库所有文件的控制信息,默认以CTL 为扩展名。Oracle 将这些文件默认安装在Oracle 安装目录下的oradata 子目录下,以实例命名的子目录下。在创建新的数据库时,可以选择数据库的安装目录。5学习课件2.4.1 数据文件(Data Files)数据文件是用于存储数据库数据的物理文件,它由若干个操作系统文件组成,在数据文件中存储着用户数据(表、索引等)、数据字典以及回滚段数据等。数据文件和表空间有着密切的关系,Oracle 数据数据库至少要包含

3、一个数据文件库至少要包含一个数据文件,并且数据文件是表空间的物理组成元素,一个表空间可以包含多个数据文件,并且每个数据文件只能惟一地属于某个表空间。 关于“表空间”在后面会给大家详细介绍。6学习课件【实例2-3】查看数据文件的位置和名称。1)以管理员身份登录SQL CONNECT / AS SYSDBA已连接。7学习课件2.4.2 日志文件(Redo Log Files)重做日志文件是用于记录数据库变化的物理文件,其作用是在发生意外时恢复Oracle数据库。默认为每个数据库创建3 个重做日志文件,每个日志文个重做日志文件,每个日志文件作为一个组件作为一个组(数据库至少要包含两个重做日志组)。日

4、志组的文件是循环使用的,当一个日志写满后,自动切换到另一个日志文件。重做日志有两种工作模式,归档模式和非归档模式。重做日志有两种工作模式,归档模式和非归档模式。在归档模式下,将对重做日志文件进行归档,保留所有的重做日志记录,这样数据库可以从所有类型的失败中恢复。非归档模式不保留以前的重做日志记录,这样数据库只能从掉电等事件中恢复。8学习课件【实例2-4】查看日志文件的位置和名称。9学习课件2.4.3 控制文件(Control Files)控制文件是一个很小的二进制文件,用于记录和维护控制文件是一个很小的二进制文件,用于记录和维护数据库结构,数据库结构,Oracle 数据库至少要包含一个控制文件

5、。数据库至少要包含一个控制文件。一般情况下,实例和数据库是一一对应的关系,Oracle 数据库通过控制文件在实例和数据库之间建立关联。在启动数据库时,系统会根据初始化参数control_files来定位控制文件,Oracle 从控制文件中读取组成数据库所有物理文件的信息,这样就可以打开必要的文件。如果控制文件丢失或出现错误,数据库的启动就会失败。为了保护数据库的安全,Oracle 采用复合控制文件,即控制文件同时可以有多个镜像。10学习课件查看控制文件内容:Alter database backup controlfrile to trace as /home/oracle/ctl.trc;【

6、实例2-5】查看日志文件的位置和名称。11学习课件2.4.4 归档日志文件(ArchiveLog)重做日志可用于进行“实例恢复”(例如电源断电时的恢复),但如果执行介质恢复如果执行介质恢复(例如数据文件意外丢失),则必须要用到归档日志,则必须要用到归档日志。归档日志是非活动重做日志的备份,数据库只有处于ARCHIVELOG 模式时才会生成归档日志,并且每次日志切换都会生成归档日志。12学习课件如图所示:假定数据库只包含两个日志组,并且处于ARCHIVELOG 模式。初始阶段LGWR 会将事务变化写入到日志组一,当日志组一写满之后,LGWR 会将事务变化写入到日志组二中,并且会促使ARCn 进程

7、将日志组一的内容保存到归档日志中,依此类推。13学习课件【实例2-6】查看归档模式。14学习课件2.4.5 初始化参数文件除了以上文件,Oracle 数据库中还用到初始化参数文件(Parameter File)、口令文件(Password File)、跟踪文件(Trace File)和警告文件(Alert File)。实例是由一组内存结构和后台进程组成的,那么这些内存结构到底要占用多大内存,且当启动实例时会运行哪些后台进程呢?这是通过定义参数文件中的初始化参数来完成的,初始化参数文件有两种:静态初始化参数文件静态初始化参数文件,该文件是一个可以编辑的文本文件;服务器端初始化参数文件服务器端初始

8、化参数文件,一个二进制格式的文件,驻留在服务器端。初始化参数会在以后的章节介绍。15学习课件2.4.6 其他文件其他文件主要包括口令文件(Password File)、跟踪文件(Trace File)和警告文件(AlertFile)。它们属于操作系统文件,不是数据库文件的一部分。口令文件口令文件用于存放特权用户及其口令的文件,“特权用户”是指具有启动、关闭Oracle服务器并建立数据库等特殊权利的用户。SYS 账户是一个具有系统管理员特权的账户。跟踪文件跟踪文件用于存放后台进程和服务器进程的跟踪信息。后台进程跟踪文件存放着后台进16学习课件2.4.6 其他文件跟踪文件用于跟踪文件用于存放后台进

9、程和服务器进程的跟踪信息。后台进程跟踪文件存放着后台进程的警告和错误信息,并且每个后台进程都有相应的跟踪文件。服务器进程跟踪文件用于存放SQL 语句的跟踪信息,并且只有在激活SQL 跟踪后才会生成服务器进程跟踪文件,该类文件会记载SQL 语句的执行时间、执行计划等信息,并且主要用于SQL 语句调整。警告文件警告文件由连续的消息和错误组成。通过查看警告文件,可以查看到Oracle 内部错误、块损坏错误以及非默认的初始化参数值,并且可以监视特权用户的所有操作,例如启动、关闭数据库等。17学习课件2.5 数据库逻辑结构在Oracle 数据库中,数据被组织成逻辑对象,如我们常用的表、视图、索引等数据对

10、象。 为了很好的组织和管理这些对象,需要合理的分配空间。逻辑对象存储是通过表空间(Table Space)、段(Segment)、数据区间(Extent,简称区)和数据块(Block)来完成的。 它们并不是相互独立的,表空间包含一些段,段由数据区间组成,数据区间由连续的数据块组成。它们的作用和相互的关系如图18学习课件2.5 数据库逻辑结构19学习课件2.5.1 表空间表空间用于组织数据库的数据,数据库逻辑上表空间用于组织数据库的数据,数据库逻辑上由一个或多个表空间组成,而表空间物理由一个或多个表空间组成,而表空间物理上是由一个或多个数据文件组成的。上是由一个或多个数据文件组成的。通过使用多个

11、表空间,数据库的数据对象被分门别类存放在不同的表空间中。这样数据库的管理员可以有效的控制数据库的磁盘空间,并控制用户的空间使用配额。通过使用不同类型的表空间,还可以提高数据访问的性能。20学习课件SYSTEM 表空间是系统表空间,用来存放表空间、数据文件等管理信息;USERS 表空间,用来存放用户的私有信息。管理员可以为其他数据库应用创建新的表空间。【实例2-7】查看表空间。21学习课件2.2 Oracle 内存结构Oracle 的内存由系统全局区系统全局区(System Global Area,简称SGA)和程序全局区程序全局区(ProgramGlobal Area,简称PGA)组成。SGA

12、 是一组由Oracle 分配的共享内存区域,用户和进程可以共享其中的信息,在实例启动时分配。当实例启动时,SGA 存储区被自动分配,当实例关闭时,存储区被回收。22学习课件在启动数据库实例时,可以看到SGA 分配的信息在实例启动后也可用SHOW SGA(或SELECT * FROM v$sga)显示SGA 信息。PGA 是数据库服务器内存中为进程分配的专用的内存区域,是进程私有的内存区,在进程启动时分配。23学习课件1.5.2 段段是一个动态存储分配概念。它用来存储能够自动增长的数段是一个动态存储分配概念。它用来存储能够自动增长的数据库对象,如表会随着数据的插入不断扩大所占有的存储空据库对象,

13、如表会随着数据的插入不断扩大所占有的存储空间间, 一般情况下一个数据库对象拥有一个段。一般情况下一个数据库对象拥有一个段。段由多个区组成,这些区可以连续,也可以不连续。表空间可以包含一个或多个段,但一个段只能属于一个表空间。段有多种类型,不同的数据库对象需要分配不同类型的段。存放表的段称为数据段;存放索引的段称为索引段;用来存放排序操作所产生的临时数据的段称为临时段,临时段在必要时创建,使用完毕后即撤销;存放事务对数据的修改的旧值的段称为回滚段,回滚段的作用是用来撤销对数据的修改。24学习课件2.5.3 区(Extents)数据区间简称为区,区是为段分配空间的逻辑单位,Oracle 在分配空间

14、时,并不是以块为单位进行的,而是将多个连续的块一次性的分配给数据库对象。这些连续的块在回收存储空间时,也一起回收。这些连续的数据块就是数据区间。当创建一个数据库对象时,Oracle为这些对象创建一个段,并分配初始区。当段中的初始区的存储空间使用完毕后,Oracle会为段自动分配新的区,每个区的大小不要求相同25学习课件2.5.4 数据块数据块是Oracle 数据库I/O 最基本的单位,也是最小的逻辑存储单位。Oracle 数据库以块为单位进行逻辑读/写操作。常见块的大小为2KB 或4KB,通常为操作系统数据块大小的整数倍。在Oracle9i 之前,数据块的尺寸是由初始化参数数据块的尺寸是由初始

15、化参数DB_BLOCK_SIZE 确定的确定的。在建立了数据库之后数据块的尺寸是不能改变的,并且所有表空间的数据块尺寸都是完全相同的。从从Oracle9i 开始,允许不同类型的表空间采用不同的数据块开始,允许不同类型的表空间采用不同的数据块尺寸,尺寸,Oracle9i 仍然保留了初始化参数仍然保留了初始化参数DB_BLOCK_SIZE,此时,此时该参数用于定义默认(也称标准)数据块的尺寸该参数用于定义默认(也称标准)数据块的尺寸,并且SYSTEM表空间的数据块会使用该尺寸,而其他表空间则可以根据情况来确定数据块尺寸。26学习课件【实例2-8】查看标准块的大小。27学习课件2.6 SQL 语句的

16、处理在本章的最后,我们通过SQL 语句的提交和处理过程来进一步了解Oracle 服务器的工作原理。用户的SQL 语句根据其特点可划分为,返回返回查询结果的查询语句查询结果的查询语句;生成生成日志日志记录记录DML 操作操作;确保确保数据写入数据库,并在实例故障时可以恢复数据写入数据库,并在实例故障时可以恢复的的Commit 操作。操作。28学习课件2.6.1 连接和建立会话当客户应用需要执行SQL 语句时,首先要建立用户进程,同时在服务器端会自动为该用户进程派生一个新的服务进程。默认情况下,用户进程与服务器进程是一一对应的关系。当客户端运行SQL 语句时,用户进程会通过网络将该SQL 语句发送

17、到对应的服务进程,并且由服务进程执行该SQL 语句,服务器进程在执行了SQL 语句之后,会将SQL 语句的结果通过网络返回到用户进程。29学习课件2.6 SQL 语句的处理“连接连接”(Connection)是用户进程到服务器进程是用户进程到服务器进程的网络通信通道,连接和用户进程是一的网络通信通道,连接和用户进程是一一对应的一对应的;而而“会话会话”(Session)则是特定用户的连接,连则是特定用户的连接,连接和会话是一对多的关系,但同接和会话是一对多的关系,但同一时刻一时刻一个连接一个连接对应于一个会话对应于一个会话。例如,当以SQL*Plus 连接到Oracle 服务器时,需要建立了一

18、个物理“连接”。而以SCOTT用户登录后,会建立SCOTT 会话。30学习课件2.6.2 处理查询语句)查询操作分为4 个步骤: 语句解析(Parse) 绑定变量(Bind) 执行(Execute) 提取数据(Fetch)31学习课件1)语句解析当一个查询语句(SELECT)发送到服务器端后,服务进程首先使用Oracle 内部的“散列”(HASH)函数取得该语句的解析代码值,如果在共享池中存在相同的解析代码值,表明该语句已经存在,那么服务器进程会跳过“解析”阶段,直接转入下一阶段。如果该解析代码值在共享池中不存在,服务器进程会检查该语句是否符合SQL 语法规则,并检查表名、列名是否正确,以及是

19、否有相应的查询权限,然后生成该语句的“执行计划”,最终将SELECT 语句和执行计划装载到库高速缓存。执行计划实际是Oracle 内部执行SQL 语句的具体步骤,执行计划的优劣会对应用系统性能产生很大的影响,所以在开发应用系统时一定要采用“执行计划最佳”的SQL 语句。例如,一个表上建立有索引和没有索引,生成的执行计划可能是不同的。32学习课件2)绑定变量在此阶段,如果查询语句中有绑定变量,语句就要获得绑定的变量值。3)执行经过语句解析,Oracle 最终生成了执行计划,并将该执行计划装载到了库高速缓存。在执行阶段,服务器进程将按照执行计划中所安排的步骤来执行SELECT 语句。首先,服务器进

20、程要确定被选择行所在数据块是否已经被读取到数据高速缓存,如果该数据块内容已经被读取到数据高速缓存,则转入“提取数据”阶段; 如果该数据块没有被读取到数据高速缓存,那么服务进程会将数据块内容复制到数据高速缓存的缓冲区中33学习课件4)提取数据(fetch)经过语句执行之后,被选择行所在数据块内容已经被复制到了数据高速缓存的缓冲区中。在提取数据阶段,服务器进程从数据高速缓存中选择相应数据行,并将结果返回到用户进程。 34学习课件1.6.3 处理DML 语句处理DML 语句分为3 个步骤: 语句解析(语句解析(Parse) 绑定变量(绑定变量(Bind) 执行(执行(Execute)1语句解析语句解

21、析类似于处理SELECT 语句的过程,服务器进程根据HASH 函数生成该语句的解析代码值,然后检查DML 语句语法、DML 语句所对应的表名、列名等,最终生成该语句的执行计划,然后将DML 语句及执行计划存储到库高速缓存35学习课件2绑定变量绑定变量在此阶段,如果DML 语句中有绑定变量,语句就要获得绑定的变量值。3执行执行DML在经过语句解析之后,DML 语句的执行计划被存储到了库高速缓存。在执行阶段,服务器进程将按照解析阶段所生成的执行计划来执行该DML 语句。对于UPDATE 语句,服务进程首先要检查对应的数据块和回滚块在数据高速缓存中是否已经存在,如果不存在,则会从数据文件中将对应的数

22、据块和回滚块内容复制到数据高速缓存。回滚块用来存储旧值,这样在必要时就可以回滚DML 语句。然后,服务器进程在要修改的数据行上加锁,防止其他用户修改该数据。36学习课件最后,服务器进程将旧数据写入到回滚块所对应的缓冲区,将新数据写入到数据块所对应的缓冲区。同时将数据块和回滚块的变化记载到重做日志缓冲区。服务器进程写入数据块和回滚块都是在数据高速缓存中完成的。被修改的数据块和回滚块被标识为“脏缓冲区”。DELETE 和INSERT 语句的处理过程类似UPDATE,DELETE 语句的旧值包含被删除行的所有列值,而INSERT 语句旧值包含的是行位置信息。对于DDL 语句,与DML 语句有所不同,

23、因为执行DDL 语句需要写数据字典。DDL语句的执行包含语句解析、数据字典查找和执行过程。37学习课件2.6.4 处理Commit 语句当用户发出COMMIT 命令时,服务器进程首首先先将COMMIT和SCN 写入到重做日志缓冲区;然后然后LGWR 进程将重做日志缓冲区的所有重做记录写入到重做日志文件中;在将事务修改写入到重做日志之后,服务器进程将提交成功信息返回到用户进程;最后最后,服务器进程释放事务所占有的锁。COMMIT 语句会导致将修改记录到重做日志文件,而不会写入数据文件。38学习课件2.7 小结本章介绍了Oracle 服务器的总体结构以及工作原理,Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统。Oracle 服务器由实例和数据库两部分构成。实例由内存结构和后台进程组成。Oracle 内存结构被总称为SGA,包括数据高速缓冲区、重做日志缓冲区、共享池、Java 池和大池;后台进程主要包括以下几个进程SMON、PMON、DBWn、CKPT、LGWR 和ARCn。Oracle 数据库由数据文件、控制文件和重做日志文件组成。在逻辑结构上,Oracle 数据库由表空间、段、数据区间和数据块构成。39学习课件2.8 练习见word文档40学习课件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号