数据库的物理结构(4)

上传人:飞*** 文档编号:60144167 上传时间:2018-11-14 格式:PPT 页数:73 大小:448KB
返回 下载 相关 举报
数据库的物理结构(4)_第1页
第1页 / 共73页
数据库的物理结构(4)_第2页
第2页 / 共73页
数据库的物理结构(4)_第3页
第3页 / 共73页
数据库的物理结构(4)_第4页
第4页 / 共73页
数据库的物理结构(4)_第5页
第5页 / 共73页
点击查看更多>>
资源描述

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

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可以执行

15、alter 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,在第二步后,数据文件即包含被提交的数据,也包含未被提交的数据,打开数据 库后,SMON会自动使用UNDO段取消未被提交的数据。,增加重做日志,当执行create database建立数据库时,数据库管理员可以指定初始日志组个数,尺寸以及日志成员文件。 出于安全和性能方面的考虑,建立数据库后DBA可能需要增加重组日志,增加重做日志是使用alter database完成的,

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

当前位置:首页 > 行业资料 > 其它行业文档

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