数据库的物理结构.ppt

上传人:wuy****n92 文档编号:91841610 上传时间:2023-05-28 格式:PPT 页数:73 大小:338KB
返回 下载 相关 举报
数据库的物理结构.ppt_第1页
第1页 / 共73页
数据库的物理结构.ppt_第2页
第2页 / 共73页
点击查看更多>>
资源描述

《数据库的物理结构.ppt》由会员分享,可在线阅读,更多相关《数据库的物理结构.ppt(73页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库的物理结构数据库的组成 数据库的构成:控制文件 数据文件 重做日志文件 在讲解表空间时,已经详细介绍了数据文件。控制文件 控制文件用于记录和维护数据库的物理结构。当启动例程并打开数据库时,oracle 会根据初始化参数control_files 在例程和数据库之间建立关联。装载数据库时(mount)时,oracle 会按照初始化参数control_files 定位并打开控制文件,打开数据库时,oracle 会根据控制文件所记的载数据文件和重做日志文件。打开所有的数据文件和重做日志。控制文件简介 控制文件是oracle 数据库最重要的物理文件,控制文件不仅记载着数据库的物理结构(数据文件的

2、名称和位置、重做日志的名称和位置),装载和打开数据库时也需要这些文件,而且它们还记载日志序列号、检查点和日志历史信息,同步和恢复数据库时需要这些信息。控制文件主要记载以下信息:数据库名称 数据文件名称和位置 重做日志名称和位置 表空间名称 当前日志序列号 检查点信息 日志历史信息 RMAN 信息 控制文件是一种较小的oracle 数据库文件,尺寸在2m10m 之间,变化的尺寸主要由永久参数和RMAN 信息决定。决定控制文件的尺寸的主要因素是创建数据库时,参数 maxdatafiles maxlogfiles maxlogmembers maxloghistory maxinstances 这些

3、参数越大,控制文件就越大。多元化控制文件 因为控制文件非常重要,所以DBA 必须确保控制文件不会出现损坏或丢失,以避免带来不可挽回的损失。Oracle 建议每个oracle 数据库应该包含两个或多个以上的控制文件,但最多可以包含8个控制文件,当多元化控制文件时,为了防止磁盘损坏导致控制文件的丢失或损坏,应该将控制文件分布到不同的磁盘。如果一个数据库有多个控制文件,那么在数据库操作期间,oracle 服务器只读取control_files 中的第一个文件,但是对于需要更新的控制文件的操作,服务器要更新修改所有的控制文件。使用spfile 多元化控制文件可以直接复制一个控制文件使用spfile 多

4、元化控制文件处理意外丢失的控制文件 多元化控制文件后,多个控制文件互为镜像,内容总是保持一致,装载oracle 数据库时,系统会读取并打开control_files 参数所对应的所有的控制文件。如果某个控制文件丢失或损坏,数据库将无法装载,启动实例并装载数据库时会报告出错。出现该错误,应该修改初始化参数文件中的参数control_files,去掉损坏或丢失的控制文件,然后重新启动数据库。建立控制文件 当所有的控制文件全部损坏或部分删除时,如果没有控制文件的备份,那么DBA 必须使用 create controlfile 命令重新创建控制文件。查看控制文件内容 我们不能够象看一个文本文件一样来查

5、看控制文件的内容,我们需要用一下的方法 Alter database backup controlfile to trace 该命令会trace 一个包含create controlfile命令的脚本,并把它存储在初始化参数User_dump_dest 指定的目录中。RESETLOGS 丢失任何的联机日志组,都需要指定RESETLOGS 子句NORESETLOGS:对数据库执行完全恢复或者要使用当前的联机日志文件时,要指定这个参数。MAXLOGFILES:允许数据库中最大有多少组联机日志。MAXLOGMEMBERS:每组联机日志中最多可以有多少成员(文件)。MAXDATAFILES:数据文件的

6、最大数量。MAXINSTANCES:最多有多少个实例可以同时使用这个数据库。MAXLOGHISTORY:其意义在于限制控制文件中和视图v$log_history 中归档日志文件的最大数目。归档日志最多维持在MAXLOGHISTORY 所设置的数目创建控制文件 1、关闭例程 shutdown immediate 2、启动例程 建立控制文件时,要求例程必须处于nomount 状态,正确的设置了初始化参数control_files 后,应该重新启动例程。startup nomount 3、建立控制文件 启动例程后,就可以建立控制文件了,建立控制文件必须具有sysdba 特权,另外,建立控制文件时必须

7、提供正确的数据文件和重做日志清单。Create controlfile database demo noresetlogs Logfile group 1 d:demoredo01.log size 10m group 2 d:demoredo02.log size 10m datafile d:demosystem01.dbf d:demosysaux01.dbf d:demoundotbs01.dbf character set zhs16gbk 其中,database 用于指定数据库名,该名称必须与初始化参数db_name 完全一致,noresetlogs 选项用于指定仍然使用原来的重做

8、日志 4、alter database open 打开数据库如果指定为resetlogs,则打开数据库是使用Alter database open resetlogs重做日志文件 重做日志(Redo log)用户记录数据库的变化,当执行DML 或DDL操作时,oracle 会将数据库变化信息记载到重做日志中。Oracle 使用重做日志的目的在于出现例程失败或介质失败时实例恢复和介质的恢复。重做日志简介 重做日志用于记载事务操作引起的数据库的变化,执行DML 或DDL操作时,ORACLE 会将事务变化信息写入重做日志。每个ORACLE 数据库至少包含两个重做日志组,并且这些重做日志组是循环使用的

9、。假定oracle 数据库包含三个日志组,初始阶段后台进程LGWR将事务的变化写入日志组一,日志组一写满后,LGWR停止写日志组一,将事务变化写入日志组二,日志组二写满后,LGWR停止写日志组二,并将事务的变化写入日志组三,日志组三写满后,LGWR停止写日志组三,并将事务变化写入日志组一。基本概念 重做日志组(redo log group)重做日志成员(redo log member)日志组是由一组完全相同的重做日志文件组成,每个日志组至少包含一个重做日志文件,后台进程LGWR会将相同的事务变化写入同一个日志组的各个重做日志文件中。日志组中的每个重做日志文件都是日志成员,同一个日志组的所有日志

10、成员都具有相同的日志序列号和尺寸,互为镜像,内容完全相同。重做入口(redo entry)重做入口也称为重做记录,由一组变化的向量组成,这些变化向量包括表块变化(块位置,变化的数据),UNDO 块变化和UNDO 事务表的变化,当用户执行事务操作DDL和DML 时,服务器进程将重做记录写入重做日志缓冲区中,并由LGWR将重做记录写入重做日志中。LGWR在以下情况下开始工作 提交事务(commit)每隔三秒钟 当重做信息超过1M 重做日志缓冲区已有三分之一填满 在DBWR 进程将脏数据缓冲区写入数据文件之前。SCN SC N(system change number)SCN 用于标识数据库变化的唯

11、一标识号,其数值顺序递增,执行事务操作时,系统会为每个事务变化生成相应的SCN,日志序列号 日志序列号是重做日志的使用标识号,其数值也是顺序递增的。当进行日志切换时,日志序列号自动增一,并将该信息写入控制文件中。假定数据库含有三个日志组,当前系统正在使用日志组一,并且日志序列号为20,那么当日志组一写满后,系统停止写日志组一,并开始将事务变化写入到日志组二,此时日志序列会增加到21,当日志组二写满后,系统停止写日志组二,并且开始将事务变化写入日志组三,此时日志序列号为22.日志切换 日志切换是指后台进程LGWR停止写一个日志组,并开始写另一个日志组的事件。日志切换包括自动切换和手工切换两种方式

12、。默认情况下,日志组满后,后台进程LGWR会自动进行日志切换。使用ALTER DATABASE 命令维护日志组或日志成员时,不能删除当前日志组及日志成员,也不能移动当前日志组及成员。为了删除当前日志组及其成员或移动当前日志组的成员文件,必须执行手工日志的切换,完成相应的任务。手工日志切换的方法:alter system switch logfile 当进行日志切换时,当前的日志序列号会自动递增。日志切换完成的任务 当进行日志切换时,ORACLE 会完成以下的任务:促使发出检查点,从而使CKPT 将检查点时刻的SCN 信息写到控制文件和数据文件头部,并促使后台进程DBWR 将脏缓冲区的内容写入数

13、据文件。当数据库处于ARCHIVELOG 模式时,日志切换会促进后台进程ARCH 将日志组内容保存在归档日志。检查点(checkpoint)检查点是一个数据库事件,它用于同步数据库所有数据文件、控制文件和重做日志文件。当发出检查点时,后台进程CKPT 会将检查点时刻的SCN 写到控制文件和数据文件头部,同时促使后台进程DBWR 将所有脏数据缓冲区中的信息写到数据文件中。当oracle 发出检查点时,后台进程CKPT 促使后台进程DBWR 开始工作,而后台进程DBWR 又会促使后台进程LGWR开始工作,因此发出检查点时 CKPT、DBWR、LGWR同时工作,所以,数据文件、控制文件、重做日志文件

14、的SCN 一致。三种文件完全同步。需要注意的是当执行COMMIT 操作时,只有后台进程LGWR会将事务的变化写到重做日志中,后台进程DBWR 只有在检查点时刻才会将脏缓冲区的内容写到数据文件,出现以下情况后台进程发出检查点。1、日志切换 2、关闭数据库。当发出shutdown normal,shutdown transactional,shutdown immediate 等命令关闭数据库时,后台进程发出检查点,只有在检查点完成后才会关闭数据库,shutdown abort 命令不会发出检查点。3、手工检查点。当执行数据库备份时,为了使脏数据缓冲区的数据写入数据文件,DBA 可以执行alter

15、 system checkpoint 命令,强制后台进程发出检查点。例程恢复 例程恢复是当例程失败时后台进程SMON自动同步数据文件、控制文件和重做日志文件并打开数据库的过程。例程失败是指与例程相关的后台进程及内存结构出现故障,例程失败有以下的情况:电源断电导致oracle server 不能用 硬件故障导致oracle server 不可用,如cpu 失败,内存损坏 某个必须的后台进程DBWR,LGWR,PMON,SMON,CKPT 出现失败。例程失败类似于执行了shutdown abort 命令来关闭数据库,解决了硬件问题和电源断电等问题后,DBA 只需要执行STARTUP 命令来启动例程

16、了,不需要执行任何恢复命令。当执行startup 命令启动例程并装载数据库后,后台进程SMON会自动执行例程恢复,最终使数据库的所有文件完全同步。例程恢复的具体步骤如下:1、确定不同步的物理文件。通过比较数据文件、控制文件和重组日志文件的SCN,后台进程SMON可以确定哪些文件处于不同步的状态。2、REDO,确定了不同步的数据文件后,SMON会重新应用那些在数据文件上未执行的事务操作,并且DBWR 会将提交和未提交的数据写到数据文件以及UNDO 段上。3、REDO 之后打开数据库,此时数据库可以访问数据库 4、UNDO,在第二步后,数据文件即包含被提交的数据,也包含未被提交的数据,打开数据 库

17、后,SMON会自动使用UNDO段取消未被提交的数据。增加重做日志 当执行create database 建立数据库时,数据库管理员可以指定初始日志组个数,尺寸以及日志成员文件。出于安全和性能方面的考虑,建立数据库后DBA 可能需要增加重组日志,增加重做日志是使用alter database 完成的,执行该命令必须具有alter database 系统权限。规划日志组尺寸 执行alter database 命令为数据库增加日志组时,必须指定日志组的尺寸。如果日志组的尺寸设置国小,可能会导致日志切换频繁,间接地增加了检查点的次数,从而降低了性能。oracle 建议日志切换时间在20 到30 分钟之

18、间。当数据库处于archivelog 模式时,如果后台进程LGWR已经写满了的日志组,它会自动切换到一个新的日志组,并且后台进程ARCH 会将原有的日志组内容复制到归档日志中,并且归档日志尺寸与重做日志尺寸完全相同。对于oracle 数据库来说,同一个日志组的所有成员内容和尺寸完全相同,而不同的日志组的尺寸可以不同,但不同日志组尺寸没有任何好处,oracle 建议不同的日志组使用相同的尺寸。增加日志组 当数据并发事务很多,而日志组个数又比较少时,可能出现等待写入日志组的情况。假定:数据库只有两个日志组,每个日志组的尺寸为10M,并且该数据库频繁出现大的事务(事务改变50m),在这种情况下,可能

19、出现LGWR等待写入日志组。当事务写满日志组一时,LGWR会自动切换到日志组二,同时促使DBWR 将日志组一事务所对应的脏缓冲区数据写入数据文件,如果脏缓冲区还没有完全写入数据文件,那么该日志组的内容不能够被覆盖。如果日志组二已经写满,但日志组一事务所对应的脏缓冲区还没有写入数据文件,LGWR 等待写入日志组,从而影响性能。应该增加日志组,从而避免后台进程LGWR等待写入日志组。增加了一个日志组,并且该组中只有一个日志文件成员日志组必须至少包含一个日志成员。增加日志成员 建立日志组时,至少要为日志组指定一个日志成员。为了防止日志成员破坏而导致日志组无法使用,ORACLE 建议每个日志组至少包含

20、两个或两个以上的日志成员。如果日志组只有一个成员,并且该成员出现损坏,那么后台进程LGWR切换日志组时,ORACLE 会停止工作。删除重做日志 当日志成员出现损坏或丢失时,后台进程LGWR不能将事务变化写入该日志成员中,在这种情况下应该删除该日志成员,当日志组尺寸不合适时,需要重新建立日志组,并删除原有的日志组。删除重做日志是使用alter database 命令来完成。执行该命令要求数据库必须具有 Alter database 系统权限。当日志成员出现损坏或丢失后,后台进程LGWR不能将事务变化写入到该日志成员中,因为该日志成员没有任何作用,所以DBA 应该将它删除。可以从跟踪文件中的得到日

21、志文件的损害信息。注意:不能删除当前日志组的成员,如果删除当前日志组的成员,应该首先执行日志切换,然后删除对应的日志成员。如果日志组只有一个成员,则不能执行 alter database drop logfilemember删除日志组 执行该删除命令只是从控制文件中逻辑删除了日志组的信息,而不会删除日志组的成员文件,其成员文件必须使用OS 命令删除。当前的日志组是不能够删除的。改变重做日志位置或名称 在所有的后台进程中,LGWR活动最频繁,它需要不断地将事务变化由重做日志缓冲区写入到重做日志中,在数据文件、控制文件和重做日志这三个数据库文件中,重做日志I/O 操作最频繁。为了提高I/O 性能,应该将重做日志分布到I/O 操作相对较少,速度最快的磁盘设备上。当前的日志组不能够移动和改变日志成员只有当日志组处于inactive 状态时,才可以移动该文件Group 状态Unused:尚未记录change 的空白的group,一般组刚刚被添加Current:当前正在被LGWR使用的group(同时是active 状态)Active 未被LGWR写,instance recovery 需要,还没有完成checkpointInactive:online,未被LGWR写,对instance recovery 不再起作用了。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁