ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 11.9.19 学习笔记:备份与恢复的概念

11.9.19 学习笔记:备份与恢复的概念

原创 Linux操作系统 作者:c_shore 时间:2011-09-19 02:51:11 0 删除 编辑



DBA有关工作职责:

①尽量避免数据库出现故障

预计导致故障的常见原因并努力避免这些原因


②延长平均故障间隔时间(MTBF——Mean Time Between Failure)

确保硬件尽量可靠,通过冗余方式保护关键组件,定期执行操作系统维护,包括RAC与streams配置方法


③缩短平均恢复时间(MTTR——Mean Time To Repair)

提前确定恢复过程方案并配置备份,以便在需要时随时可用。


④最大程度地保护数据不会丢失

归档日志文件、备份数据




故障

※故障通常可以分为以下几类

①语句故障:单个数据库操作(增删改查)失败。

例如权限不足,分配空间失败、应用程序存在逻辑错误等


②用户进程故障:单个数据库会话故障。

例如用户会话异常终止,遇到程序错误等。

△后台的进程监视程序(PMON)会定期轮询服务器进程,对不再处于连接状态的用户事务进行恢复,回退未提交的更改并解除失败会话持有的任何锁定。


③网络故障:与数据库的连接出现故障

例如监听程序故障,网卡故障,网络连接失败等。

△网络故障的最佳解决方法是为网络连接提供冗余路径。通过备份监听程序、网络连接和网络接口卡,可降低网络故障影响系统可用性的可能性。


④用户错误:成功执行了操作,但是操作内容不正确

例如删除了表,或者输入了错误的数据

△如果用户尚未提交或退出程序,可做回退操作。如果用户提交了更改,则使用闪回查询来确定以前的值是什么

eg: SELECT * FROM T AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' minute) WHERE e_id=100;

⑤实例故障:数据库实例意外关闭

例如断电、硬件故障、后台进程故障与紧急关闭过程等

△startup重新启动实例。自动执行恢复,包括前滚重做日志中的更改和回退任何未提交的事务处理。


⑥介质故障:丢失数据文件

例如磁盘驱动器故障、磁盘控制器故障、删除或损坏了数据库文件(控制文件、数据文件或重做日志文件)

△从备份中还原并恢复缺失的文件




各个后台进程的功能:


(一)检查点后台进程(CKPT)

※每隔三秒(或频率更高),CKPT 进程就在控制文件中存储一次数据,以记录DBWn 从SGA 写入到磁盘的已修改数据块。即检查点

  △CKPT会触发DBWn进程

※检查点标识联机重做日志文件开始进行实例恢复的位置(这个位置称为“检查点位置”)

   △如果使用日志切换,CKPT 进程还会将这个检查点信息写入到数据文件头

用于:

①确保定期将内存中已修改的数据块写入磁盘,以便在系统出现故障时不会丢失数据

②减少实例恢复的时间,进行恢复时只要处理跟在最后一个检查点后面的联机重做日志文件

③确保在关闭过程中所有已提交数据都写入到数据文件中

※由CKPT 进程写入的检查点信息包括检查点位置、系统更改号、联机重做日志文件中开始恢复的位置、关于日志的信息等等。



(二)重做日志文件和日志写进程(LGWR)

※重做日志文件:用于记录数据库的更改

△应该进行多路复用,以避免在出现磁盘故障时文件丢失。

※日志写进程(LGWR):用于将重做记录从重做日志缓冲区(SGA中)写到重做日志组中

※LGWR何时进行写入:

①提交事务时 ②重做日志缓冲区达到三分之一满时 ③每隔三秒 ④DBWn执行写入之前


(三)归档程序进程(ARCn)

※归档进程是一个可选的后台进程,它可以保留对数据库进行的所有更改的记录。

※从一个联机重做日志组切换到另一个联机重做日志组的过程成为日志切换,ARCn在每次进行日志切换的时候都会对已填满的日志组进行归档。

※DBA可将数据库分别配置在ARCHIVELOG或NOARCHIVELOG模式下运行

①ARCHIVELOG模式:先归档已填满的重做日志组之后,才能再次使用这些组

②NOARCHIVELOG模式:每次发生日志切换时,都会覆盖联机重做日志组




实例恢复


※当打开一个数据,该数据库中的文件在关闭时没有进行同步。就会自动执行实例恢复或者崩溃恢复。

※恢复分为两个步骤:

①前滚:使用重做日志组中存储的信息将数据文件前滚到实例出现故障时,即关闭时的状态

②回退:回退所有未提交的事务。已执行但未提交的更改会返回到初始状态。


实例恢复的具体阶段

①验证数据文件是否同步:

数据文件头中包含的系统更改号(SCN)必须与控制文件中存储的当前SCN匹配,这样实例才能打开一个数据文件

②进行前滚(重做)操作:

按照重做日志组中的数据,按顺序“重做”事务处理,直到数据文件处于最新状态,此时文件中包含已提交与未提交的数据

△所有数据文件与控制文件同步之后,就会打开数据库,用户可进行登录

③进行回退(还原)操作:

回退未提交的事务处理,回退完成之后,数据文件只包含已提交的数据


优化实例恢复:

通过控制检查点位置与重做日志末尾之间的差异可优化实例恢复。

※重做缓冲区中的内容写到重做日志组中之后,才进行数据文件的写操作

(数据文件的写操作比重做写操作要慢很多)

?※检查点位置与重做日志组末尾之间的距离,永远不能大于最小重做日志组的90%。




提高可恢复性

※有效的保护数据库,有以下方法:

①计划常规备份:

大多数介质故障需要从备份还原丢失或损坏的文件


②多路复用控制文件;

多路复用控制文件可避免数据库出现故障。

△如果控制文件不存在,就不能装载数据库。恢复控制文件只需复制一个控制文件即可。

△建议:至少有3个副本,每个磁盘上一个副本,至少在单独的磁盘控制器上有一个副本。

△尽管如此,同时丢失控制文件还是有可能发生,所以在每次数据库物理结构发生更改之后,管理员都应该将控制文件备份到跟踪文件。

如下命令创建控制文件的跟踪副本:

  SQL>ALTER DATABASE BACKUP CONTROLFILE  TO TRACE;
   跟踪备份的创建位置由USER_DUMP_DEST 初始化参数指定,文件名为sid_ora_pid.trc。


③多路复用重做日志组

※重做日志组由一个或多个重做日志文件组成。组中每个日志文件都是其他日志文件的副本。

 磁盘1    成员1    成员2    成员1  

————————————————————————————————————————

 磁盘2    成员2    成员1    成员2

                组1        组2         组3

※丢失了整个日志组可以算是一种最严重的介质故障,因为这会导致丢失数据。但丢失了一个成员并不影响数据库的运行。

△Oracle 建议每个重做日志组至少包含两个文件,这两个文件要分布在不同的磁盘或控制器上,这样单个设备出现故障时就不会损坏整个日志组。

△由于不能在事务处理信息写入到日志之前完成提交,所以重做日志会严重影响数据库的性能。必须将重做日志文件置于速度最快的磁盘中。


④保留重做日志的归档副本

※要保留较早的重做日志,要指示数据库生产联机重做日志组的副本,即归档日志。

△启用归档模式,即启用ARCHIVELOG模式

 SQL> ALTER DATABASE ARCHIVELOG;
   只有数据库处于MOUNT状态时才能使用此命令。

△在切换到ARCHIVELOG 模式后要备份数据库,因为在该模式下数据库只能从上次备份进行恢复。

ckpt001.jpg

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26121819/viewspace-707853/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-08-01

  • 博文量
    32
  • 访问量
    28183