Oracle数据库的备份及恢复策略研究

正在看的ORACLE教程是:Oracle数据库的备份及恢复策略研究。 摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略。本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例。

  关键词 Oracle 数据库 备份 恢复

  引言

  随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题。为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质、操作系统、软件和其它事件导致重要数据库文件严重损坏的情况下影响RDBMS(关系数据库管理系统),进而影响信息系统的正常运行。这就需要在此类系统失败的情况履芄患笆薄⒂行У亟性帜鸦指础;指炊У氖菘馕募诤艽蟪潭壬先【鲇谒捎玫谋阜莶呗裕蚨疚亩阅壳傲餍械腛racle8数据库的备份及恢复策略进行了探讨。

  数据库备份、恢复的基本规则

  1、多工联机重作日志文件

  每个数据库实例都有其自己的联机重作日志组,在操作数据库时,Oracle首先将数据库的全部改变保存在重作日志缓冲区中,随后日志记录器进程(LGWR)将数据从系统共用区SGA(System Global Area)的重作日志缓冲区写入联机重作日志文件,在磁盘崩溃或实例失败时,可以通过与之相关的联机重作日志来保护数据库,将损失降至最低,但Oracle在默认的方式下只创建一组重作日志文件(每一组只有一个项目文件),为了减少丢失这些重要的重作日志文件的危险,因此需要对其进行镜像拷贝。

  在Oracle级多工联机重作日志文件,即增加多个文件到每个组以便镜像数据,这样I/O故障或写丢失只损坏一个拷贝,从而保证了LGWR后台进程至少能够向一个成员写入信息,数据库仍然可以继续运行。同时应保证日志组的成员不应驻存在同一物理设备上,因为这将削弱多重日志文件的作用。

  2、镜像拷贝控制文件

  控制文件描述通用的数据库结构,它存储了大量数据库状态信息,包括物理结构和联机重作日志文件在当时的名称、位置、状态。控制文件在数据库启动时被Oracle实例读取,保持打开并随着操作而文件内容更新,直到实例关闭为止。在它打开的过程中能够同步需要恢复的信息,包括检查点信息,因此若损坏或丢失了控制文件,Oracle将不能继续工作,因此应在系统中保持控制文件的多个拷贝,且这些拷贝应置于安装于不同磁盘控制器下的不同磁盘设备中。

  由于Oracle没有提供对控制文件多工的完整支持,因此应在对控制文件使用操作系统或硬件镜像,即在修改初始化文件的control_files参数后重新启动数据库前,应将控制文件复制到定义的新位置,否则数据库启动时将会出错。

  3、激活归档进程

  当数据库运行于NOARCHIVELOG模式下时,只能在完全关闭数据库后进行数据库的一致备份,并且同时禁用了联机重作日志的存档,这样在Oracle实例失败时只能将数据库修复到最近的完整数据库备份时的那一点上,不能在失效点处对实例进行恢复。而在ARCHIVELOG模式下,数据库不仅可以进行一致备份,还可以在数据库打开的情况下进行联机备份。通过数据库的备份和联机与存档的重作日志文件,用户可以恢复所有已提交的事务,并允许将数据库恢复到指定的时间、SCN或日志系列号处,增大了恢复的灵活性,减少了故障时的数据丢失。因此数据库应运行于ARCHIVELOG模式。

  在ARCHIVELOG模式下为了防止文件损坏和介质故障,应把日志归档到不同的磁盘上,这可以通过在初始化文件中为归档重作日志指定多个目标实现。

  4、数据库实施较大改变时备份

  因为控制文件中保存了数据库的模式结构信息,因此在对数据库进行较大改变(包括改变表结构,增加、删除日志文件或数据文件等)时应立即备份控制文件及相应的数据文件。

  5、使用RESETLOGS选项打开数据库后进行备份

  在以RESETLOGS选项打开数据库后,应对整个数据库进行脱机或联机的备份,否则将不能恢复重置日志后的改变。

  当以RESETLOGS选项打开数据库时,Oracle将抛弃恢复中没有应用的重复信息,并确保永远不再运用,同时还将初始化控制文件中关于联机日志和重作线程的信息、清除联机日志中的内容。因此,RESETLOGS前的归档日志的序列号将与RESETLOGS后的Oracle控制文件的要求值不相符(备份文件中的检查点比控制文件中的检查点旧),即在恢复中不能应用以前的归档日志文件,从而导致RESETLOGS操作之前的备份在新形体中无用。

  6、避免备份联机重作日志文件

  由于文中提出了多工联机重作日志文件且数据库运行于ARCHIVELOG模式,ARCH进程能够将联机重作日志归档,因此不必对其进行备份。若用备份的联机重作日志文件重建它,可能会引起日志文件序列号的混乱,从而破坏数据库,得到适得其反的结果。

  7、重置联机日志

  在进行了不完全恢复或用备份控制文件进行恢复后,应重置联机日志。

  为了确保数据库的一致性,必须保证在恢复后所有数据文件都恢复到同一个时间点,但不完全恢复可能导致数据文件中具有一个与其它文件不同的检查点,导致数据库的一致性受到破坏。同样,备份的控制文件中保存的SCN和计数器与当前日志文件中的值可能不同,从而也破坏了数据库的一致性,因此应在进行完上述两项操作后重置联机日志。

  8、数据库的逻辑备份

  以上所述备份都为物理备份,是实际物理数据库文件从一处拷贝到另一处的备份,除此之外还可使用Oracle提供的导出实用程序进行数据库的逻辑备份。Oracle同时还提供了相应的导入实用程序重建逻辑备份中保存的信息。

  逻辑备份只拷贝数据库中的数据,而不记录数据位置的备份过程。它利用SQL语句,从数据库中导出数据到一个存放在合适位置的外部文件中,同时并可检测到数据块的损坏,因此可用其作为物理备份的补充。

  备份策略

  考虑到如今大部分信息系统每周的业务是24×7操作,因此采用联机备份,否则可每隔一定时间进行一次脱机备份。

  应用上述规则,可得出下述典型的备份策略:

  ①镜像拷贝重作日志文件;

  ②镜像拷贝控制文件;

  ③激活归档进程,即以ARCHIVELOG模式操作数据库;

  ④每天进行数据库的部分联机备份(每天进行数据库的完全热备份将无畏地增加数据库的负担且没有必要,同时也增加了数据库恢复时的灵活性);

  ⑤每隔一周或几周进行一次数据库的逻辑备份。

  实际项目应用

  当数据库中的文件达到一定数量后,DBA可能记不住该备份的文件的名或位置,因此,若能使备份过程自动化可有效地减轻DBA的负担,同时不会遗漏应备份的文件,应用自动批处理文件及脚本文件可实现备份、恢复的自动化。下面简介了在实际项目开发中应用本文所提出的自动备份、恢复策略,通过实际应用,证明了该策略的正确性和可行性。

  (1)下述脚本实现联机重作日志的多工:

  (2)下列VB代码自动建立联机备份的批处理文件及相应的脚本文件。

  运行得到的自动批处理文件,即可自动进行数据库的联机备份。

  (3)在从备份中恢复数据文件后,执行下列脚本将数据库的恢复程序。

  结束语

  提高数据库灾难后恢复的可靠性正越来越多地受到人们的关注,本文根据个人在实际项目开发过程中的经验及恢复时的灵活性对Oracle数据库的备份及恢复进行了探讨,并提出了典型的备份策略,用户可以根据自己的实际情况及数据库结构在此基础上灵活应用。

(0)

相关推荐

  • Oracle数据库系统紧急故障处理方法

    正在看的ORACLE教程是:Oracle数据库系统紧急故障处理方法.Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障.这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起.所以我们首先要判断问题的起因,如果是硬件故障则首先要解决硬件问题.在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理. 控制文件损坏: 控制文件记录了关于oracle的重要配置信息,如数据库名.字符集名字.各个数据文件.日志文件的位置等等信息.控制文件的损坏,会导致数据库异常关闭.一

  • Oracle ASM数据库故障数据恢复解决方案

    一.故障描述 ASM磁盘组掉线 ,ASM实例不能mount.ASM磁盘组有4个500G的磁盘组成,数据库和ASM软件为10.2.0.1,急需恢复oracle数据库. 二.故障分析 分析组成ASM磁盘组的磁盘,取出ASM元数据,对元数据进行分析:ASM存储元数据损坏,导致diskgroup无法mount.重组ASM存储空间,从ASM磁盘组中导出数据库文件,然后对数据库文件进行检测,修复.如果数据库文件完好,可以利用从ASM磁盘组中导出的数据库文件启动数据库.如果数据库文件损坏,这底层解析这些数据库

  • oracle中fdisk导致的ASM磁盘数据丢失的解决方法

    11.2.0.3 数据库因asm磁盘头块损坏宕机,出现错误ORA-15196.更详细的错误如下:ORA-15196: invalid ASM block header [kfc.c:26076] [endian_kfbh] [256] [0 != 1]进一步的检查发现DataGuard同样损坏.这让大家陷入不解,为何主库和备库会同时损坏? 最终经过仔细检查发现:是SA发现主机上一块磁盘没用,在主备都执行了fdisk mkfs. 最终的恢复得益于用户的异地灾备环境.这个案例给我们的警示是:1.DB

  • oracle数据库创建备份与恢复脚本整理

    1:创建用户 复制代码 代码如下: create temporary tablespace user_temp tempfile 'D:\app\topwqp\oradata\orcl\user_temp.dbf' size 500m autoextend on next 50m maxsize 2048m extent management local; create tablespace ts_mydb logging datafile 'D:\app\topwqp\oradata\orcl

  • ORACLE 数据库RMAN备份恢复

    机器A: select instance_name from v$instance; select name from v$database; select name from v$datafile; 查询日志模式: archive log list; shutdown immediate; startup mount; 把日志改为归档模式: alter database archivelog; alter database open; alter system archive log curr

  • 关于系统重装后Oracle数据库完全恢复的解决办法

    昨日,服务器一磁盘意外故障,c盘数据丢失,重新安装操作系统后,完全还原意外前的数据方法: 完全按照原配置(安装路径.实例名.用户名.密码)重新安装oracle后,将之前留下的oracle文件夹完全拷贝覆盖当前新安装的oracle,启动数据库管理器,数据库完好如初,数据毫发未损,包括之前的job都完全恢复,而且系统代码配置也完全不需要修改,非常省事.

  • 探索ORACLE之ASM概念(完整版)

    一.     ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的LVM,它不仅支持单实例,同时对RAC的支持也是非常好.ASM可以自动管理磁盘组并提供有效的数据冗余功能.使用ASM(自动存储管理)后,数据库管理员不再需要对ORACLE中成千上万的数据文件进行管理和分类,从而简化了DBA的工作量,可以使得工作效率大大提高. 二.     什么是ASM ASM它提供

  • oracle drop table(表)数据恢复方法

    复制代码 代码如下: --查看数据库回收站 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin; --恢复  FLASHBACK TABLE 表名 TO BEFORE DROP; 此举 可以恢复表结构,同时 数据也恢复了 必须9i或10g以上版本支持,flashback无法恢复全文索引

  • Oracle数据库的备份及恢复策略研究

    正在看的ORACLE教程是:Oracle数据库的备份及恢复策略研究. 摘 要 恢复丢失的数据库文件在很大程度上取决于所采用的备份策略.本文从恢复的灵活性出发,对Oracle8数据库的备份及恢复策略进行了探讨,并给出了Windows 2000环境下使备份过程自动化的脚本文件的项目开发实例. 关键词 Oracle 数据库 备份 恢复 引言 随着信息系统在各种商务活动中重要性的不断增强,维护系统数据的可用性已成为当前一个十分重要的课题.为了有效地保持健康的信息系统,必须采取一定的措施防止在由介质.操作

  • 有关Oracle数据库的备份情况

    正在看的ORACLE教程是:有关Oracle数据库的备份情况. 一.意义:当我们使用一个数据库时,总希望数据库的内容是可靠的.正确的,但由于计算机系统的故障(硬件故障.网络故障.进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失.因此当发生上述故障后,希望能重新建立一个完整的数据库,该处理称为数据库恢复.恢复子系统是数据库管理系统的一个重要组成部分.恢复处理随所发生的故障类型所影响的结构而变化.二.备份的方法ORACLE数据库有三种标

  • DB2数据库的备份和恢复

    正在看的db2教程是:DB2数据库的备份和恢复.最近,我恢复了一个数据库.其中的辛苦不予言表,我想写出自己用到的一些语句,和遇到相同问题的xdjm共勉. 首先谈db2数据库的备份,我用的是backup命令. db2 backup database 数据库名(我的库是jsdb) 忘了说了,在backup之前需要停止你要备份的数据库,我用了db2stop force(之所以用force参数是因为这样好停懒省事:)和db2start.这样就保证可以成功backup了. 备份完成后db2会告诉你一个时间

  • Oracle数据库逻辑备份的SH文件

    正在看的ORACLE教程是:Oracle数据库逻辑备份的SH文件.完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp" 累计备份的SH文件:exp_cumu.sh rq=` date +"%m%d" ` su - oracle -

  • php如何实现数据库的备份和恢复

    数据库备份 mysql -uroot -p  mydb>:\db.txt 数据库恢复 mysql -u用户名 -p密码 数据库名 < 文件名.sql blog数据导出sql文件 然后创建一个新的数据库 如:test 然后再把数据放进新的数据库,就恢复成功了 到此这篇关于php如何实现数据库的备份和恢复的文章就介绍到这了,更多相关php数据库备份和恢复内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • Oracle数据库表备份导入导出dmp的方式及踩坑记录

    目录 一.备份导出前的注意事项 二.导出的两种方式 2.1.使用exp导出 2.2.使用数据泵expdp导出 三.在备份时遇到的坑 附:Oracle导出指定用户下dmp文件 总结 一.备份导出前的注意事项 1.导出导出的时候需要注意数据库的字符集是否一致,使用工具导入的话也需要确认工具的字符集 --查询服务端的编码命令 SELECT * FROM Nls_Database_Parameters where parameter = 'NLS_CHARACTERSET'; --查询客户端软件的编码命

  • SQL Server数据库之备份和恢复数据库

    目录 1. 概述 2. 备份类型 3. 恢复模式 3.1 简单恢复模式 3.2 完全恢复模式和大容量日志恢复模式 4. 备份数据库 5. 恢复数据库 1. 概述 在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨重的:数据库管理员应针对具体的业务要求指定详细的数据库备份与灾难恢复策略,并通过模拟故障对每种可能的情况进行严格测试,只有这样才能保证数据的高可用性:数据库的备份是一个长期过程,而恢复只在发生事故后才能进行,恢复后可看做是备份数据库的逆过程,恢复程度的好坏很大程度

  • sqlserver 数据库日志备份和恢复步骤

    --创建测试数据库 CREATE DATABASE Db GO --对数据库进行备份 BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT GO --创建测试表 CREATE TABLE Db.dbo.TB_test(ID int) --延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败) WAITFOR DELAY '00:00:01' GO --假设我们现在误操作删

  • Linux oracle数据库自动备份自动压缩脚本代码

    复制代码 代码如下: #!#backup.sh##系统名称sysname=gzsyspath=/home/oracle/databak/$sysname/v_date=$(date '+%Y%m%d%H%M%S')logfile=$syspath/backup.$v_date.logecho backup_time>>$logfiledate '+%Y-%m-%d %H:%M:%S' >> $logfile#数据库使用情况echo "backup gznxt"&

随机推荐