资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2 第2章Oracle数据库的体系结构 本章要点 了解Oracle的物理存储结构 了解Oracle的逻辑存储结构 了解Oracle进程结构 了解Oracle内存结构 熟悉Oracle中的数据字典 理解数据字典的作用 3 2 1物理存储结构 Oracle的物理存储结构是由存储在磁盘中的操作系统文件所组成的 Oracle在运行时需要使用这些文件 一般Oracle数据库在物理上主要由3种类型的文件组成 分别是数据文件 dbf 控制文件 ctl 和重做日志文件 log 4 2 1 1数据文件 数据文件 DataFile 是指存储数据库数据的文件 数据文件一般有以下几个特点 1 一个表空间由一个或多个数据文件组成 2 一个数据文件只对应一个数据库 而一个数据库通常包含多个数据文件 3 数据文件可以通过设置其自动扩展参数 实现其自动扩展的功能 如果想要了解数据文件的信息 可以查询数据字典dba data files和v datafile 其中 dba data files主要有如下字段 file name 数据文件的名称以及存放路径 file id 数据文件在数据库中的ID号 tablespace name 数据文件对应的表空间名 bytes 数据文件的大小 blocks 数据文件所占用的数据块数 status 数据文件的状态 autoextensible 数据文件是否可扩展 5 2 1 1数据文件 另一个数据字典v datafile则记录了数据文件的动态信息 它主要有如下字段 file 存放数据文件的编号 status 数据文件的状态 checkpoint change 数据文件的同步号 随着系统的运行自动修改 以维持所有数据文件的同步 bytes 数据文件的大小 blocks 数据文件所占用的数据块数 name 数据文件的名称以及存放路径 6 2 1 2控制文件 控制文件 ControlFile 是一个很小的二进制文件 用于描述和维护数据库的物理结构 在Oracle数据库中 控制文件相当重要 它存放有数据库中数据文件和日志文件的信息 例2 3 使用数据字典v controlfile 查看当前数据库的控制文件的名称与路径 具体如下 SQL COLUMNnameFORMATA50 SQL SELECTnameFROMv controlfile NAME E APP ADMINISTRATOR ORADATA ORCL CONTROL01 CTLE APP ADMINISTRATOR ORADATA ORCL CONTROL02 CTLE APP ADMINISTRATOR ORADATA ORCL CONTROL03 CTL 7 2 1 3重做日志文件 重做日志文件 RedoLogFile 是记录数据库中所有修改信息的文件 简称日志文件 日志文件是数据库系统的最重要的文件之一 它可以保证数据库安全 是进行数据库备份与恢复的重要手段 如果日志文件受损 数据库同样可能会无法正常运行 Oracle中的日志文件组是循环使用的 当所有日志文件组的空间都被填满后 系统将重新切换到第一个日志文件组 发生日志切换时 日志文件组中已有的日志信息是否被覆盖 取决于数据库的运行模式 8 2 1 4其他文件 1 参数文件参数文件用于记录Oracle数据库的基本参数信息 主要包括数据库名和控制文件所在路径等 参数文件分为文本参数文件和服务器参数文件 2 备份文件文件受损时 可以借助于备份文件对受损文件进行恢复 对文件进行还原的过程 就是用备份文件替换该文件的过程 3 归档重做日志文件归档重做日志文件用于对写满的日志文件进行复制并保存 具体功能由归档进程ARCn实现 该进程负责将写满的重做日志文件复制到归档日志目标中 4 警告 跟踪日志文件当一个进程发现了一个内部错误时 它可以将关于错误的信息存储到它的跟踪文件中 而警告文件则是一种特殊的跟踪文件 它包含错误事件的说明 而随之产生的跟踪文件则记录该错误的详细信息 9 2 2逻辑存储结构 Oracle数据库的逻辑存储结构如图2 1所示 10 2 2 1表空间 Tablespace 表空间是Oracle中最大的逻辑存储结构 它与物理上的一个或多个数据文件相对应 每个Oracle数据库都至少拥有一个表空间 表空间的大小等于构成该表空间的所有数据文件大小的总和 在安装Oracle时 Oracle数据库系统一般会自动创建一系列表空间 如system 可以通过数据字典dba tablespaces查看表空间的信息 11 2 2 1表空间 Tablespace 12 2 2 2段 Segment 按照段中所存储数据的特征 可以将段分为4种类型1 数据段2 索引段3 临时段4 回退段 13 2 2 3区 Extent 在Oracle数据库中 区是磁盘空间分配的最小单位 由一个或多个数据块组成 当一个段中的所有空间被使用完后 系统将自动为该段分配一个新的区 一个或多个区组成一个段 所以段的大小由区的个数决定 不过 一个数据段可以包含的区的个数并不是无限制的 它由如下两个参数决定 minextents 定义段初始分配的区的个数 也就是段最少可分配的区的个数 maxextents 定义一个段最多可以分配的区的个数 14 2 2 4数据块 Block 数据块 也可以简称为块 是用来管理存储空间的最基本单位 也是最小的逻辑存储单位 Oracle数据库在进行输入输出操作时 都是以块为单位进行逻辑读写操作的 数据块都具有相同的结构 其结构如图2 2所示 块的默认大小 由初始化参数db block size指定 数据库创建完成之后 该参数值无法再修改 通过SHOWPARAMETER语句可以查看该参数的信息 如下 SQL SHOWPARAMETERdb block size NAMETYPEVALUE db block sizeinteger8192 15 2 3Oracle进程结构 Oracle数据库启动时 会启动多个Oracle后台进程 后台进程是用于执行特定任务的可执行代码块 在系统启动后异步地为所有数据库用户执行不同的任务 通过查询数据字典v bgprocess 可以了解数据库中启动的后台进程信息 16 2 3 1DBWn进程 DBWn DatabaseWriter 数据库写入 进程 是Oracle中采用LRU LeastRecentlyUsed 最近最少使用 算法将数据缓冲区中的数据写入数据文件的进程 DBWn进程主要有如下几个作用 管理数据缓冲区 以便用户进程总能找到空闲的缓冲区 将所有修改后的缓冲区数据写入数据文件 使用LRU算法将最近使用过的块保留在内存中 通过延迟写来优化磁盘I O读写 17 2 3 1DBWn进程 其工作过程如下 1 当一个用户进程产生后 服务器进程查找内存缓冲区中是否存在用户进程所需要的数据 2 如果内存中没有需要的数据 则服务器进程从数据文件中读取数据 这时 服务器进程会首先从LRU中查找是否有存放数据的空闲块 3 如果LRU中没有空闲块 则将LRU中的DIRTY数据块移入DIRTYLIST 弄脏表 4 如果DIRTYLIST超长 服务器进程将会通知DBWn进程将数据写入磁盘 刷新缓冲区 5 当LRU中有空闲块后 服务器进程从磁盘的数据文件中读取数据并存放到数据缓冲区中 18 2 3 2LGWR进程 LGWR LogWriter 日志写入 进程 是负责管理日志缓冲区的一个后台进程 用于将日志缓冲区中的日志数据写入磁盘的日志文件中 LGWR进程将日志信息同步地写入在线日志文件组的多个日志成员文件中 如果日志文件组中的某个成员文件被删除或者不可使用 则LGWR进程可以将日志信息写入该组的其他文件中 从而不影响数据库正常运行 但会在警告日志文件中记录错误 19 2 3 3CKPT进程 CKPT CheckPoint 检查点或检验点 进程 一般在发生日志切换时自动产生 用于缩短实例恢复所需的时间 在检查点期间 CKPT进程更新控制文件与数据文件的标题 从而反映最近成功的SCN SystemChangeNumber 系统更改号 在Oracle数据库中 控制检查点产生的参数有如下两种 log checkpoint timeoutlog checkpoint interval 20 2 3 4SMON进程 SMON SystemMonitor 系统监控 进程 用于数据库实例出现故障或系统崩溃时 通过将联机重做日志文件中的条目应用于数据文件 执行崩溃恢复 SMON进程一般用于定期合并字典管理的表空间中的空闲空间 此外 它还用于在系统重新启动期间清理所有表空间中的临时段 21 2 3 5PMON进程 PMON ProcessMonitor 进程监控 进程 用于在用户进程出现故障时执行进程恢复操作 负责清理内存存储区和释放该进程所使用的资源 PMON进程周期性检查调度进程和服务器进程的状态 如果发现进程已死 则重新启动它 PMON进程被有规律地唤醒 检查是否需要使用 或者其他进程发现需要时也可以调用此进程 22 2 3 6ARCn进程 ARCn ArchiveProcess 归档 进程 用于将写满的日志文件复制到归档日志文件中 防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖 一个Oracle数据库实例中 允许启动的ARCn进程的个数由参数log archive max processes决定 23 2 3 7RECO进程 RECO Recovery 恢复 进程存在于分布式数据库系统中 用于自动解决在分布式数据库中出现的事务故障 当一个数据库服务器的RECO进程试图与一个远程服务器建立通信时 如果远程服务器不可用或者无法建立网络连接 则RECO进程将自动在一个时间间隔之后再次连接 24 2 4Oracle内存结构 Oracle内存结构是影响数据库性能的主要因素之一 其结构如图2 3所示 25 2 4 1系统全局区 SGA 系统全局区 SystemGlobalArea SGA 是Oracle为系统分配的一组共享的内存结构 可以包含一个数据库实例的数据或控制信息 1 数据缓冲区数据缓冲区用于存储从磁盘数据文件中读取的数据 供所有用户共享 由于系统读取内存的速度要比读取磁盘快得多 所以数据缓冲区的存在可以提高数据库的整体效率 2 日志缓冲区日志缓冲区用于存储数据库的修改操作信息 3 共享池共享池用于保存最近执行的SQL语句 PL SQL程序的数据字典信息 它是对SQL语句和PL SQL程序进行语法分析 编译和执行的内存区域 共享池主要包括如下两种子缓存 库缓存 LibraryCache 数据字典缓存 DataDictionaryCache 4 大型池大型池 用于提供一个大的缓冲区供数据库的备份与恢复操作使用 它是SGA的可选区域 5 Java池Java池 用于在数据库中支持Java的运行 26 2 4 2程序全局区 PGA 程序全局区 ProgramGlobalArea PGA 是Oracle系统分配给一个进程的私有内存区域 程序全局区的大小由参数pga aggregate target决定 可以通过SHOWPARAMETER语句查看该参数的信息 如下 SQL SHOWPARAMETERpga aggregate target NAMETYPEVALUE pga aggregate targetbiginteger20M 27 2 5数据字典 数据字典是由Oracle自动创建并更新的一组表 它是Oracle数据库的重要组成部分 提供了数据库结构 数据库对象空间分配和数据库用户等有关的信息 数据字典的所有者为sys用户 而数据字典表和数据字典视图都被保存在system表空间中 28 2 5 1Oracle数据字典介绍 Oracle数据字典 DataDictionary 是存储在数据库中的所有对象信息的知识库 Oracle数据库管理系统使用数据字典获取对象信息和安全信息 而用户和数据库系统管理员则用数据字典来查询
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号