Oracle数据库的备份与恢复策略

时间:2022-06-01 06:45:53

Oracle数据库的备份与恢复策略

摘要:Oracle 作为主流的大型关系型数据库管理系统,它提供了丰富的备份与恢复功能,保证系统的安全性。该文简要阐述了Oracle数据库应用中常用的备份与恢复方案以及各自的适用范围,并在此基础上给出了备份和恢复策略的建议方案,以助于数据库管理员进行比较和决策。

关键词:Oralce;数据库备份;数据库恢复;RMAN恢复管理器;数据泵

中图分类号:TP309.3文献标识码:A 文章编号:1009-3044(2010)19-5367-04

Backup and Recovery Strategy of Oracle Database

WEI De-qiang

(Ningbo Municipal Bureau of National Land And Resource,Zhenhai Branch, Ningbo 315200, China)

Abstract: As a widely used Relational Database Management Software(RDBMS), Oracle database provides powerful backup and recovery technology to secure the system safety and integrity. The paper introduces the common solution of data backup and recovery on Oracle database, and then an appropriate strategy of backup and recovery will be covered, which helps database administrators to compare with each other solution and make right decision.

Key words: Oracle; e4backup; recovery; RMAN; data pump

Oracle 数据库系统是一个功能强大和灵活的关系型数据库系统,它的安全、可靠、高效,以及对各种高端硬件平台、网络和存储技术的支持,使其成为业界主流数据库系统之一。

Oracle数据库在正常情况下能够保证数据的安全和系统的稳定,为用户提供日常服务,但由于在使用过程中计算机硬件故障、系统软件和应用程序的错误、操作员的失误等都可能影响数据库中数据的正确性和安全性,重则使数据库中的数据部分或全部丢失,甚至导致系统瘫痪。这就要求数据库管理员必须采用适当的技术手段和方法,延长数据库平均故障的发生时间,并当数据库中的数据遭到破坏时能够尽快从数据备份中恢复数据,从而将损失减少到最小,保障企业的效益。Oracle为用户提供了完善的备份与恢复功能,保证系统的安全性。本文将在介绍Oracle备份与恢复技术基础上,阐述Oracle数据库备份与恢复的策略。

1 Oralce数据库的备份方案

Oracle数据库提供了两类备份,物理备份和逻辑备份(导入/导出)。物理备份是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,它只涉及到组成数据库的文件,而不考虑其逻辑内容。而逻辑备份是利用SQL语言从数据库中抽取数据连同逻辑结构写入二进制文件中的过程,逻辑备份是物理备份的补充。

物理备份又根据数据库的工作模式分为非归档模式(nonarchive log)和归档模式(archive log)。非归档模式又被称为脱机备份或冷备份,而相应的归档模式被称为联机备份或热备份。它们的关系如图1所示。

这三种备份方案各有特点,采用何种备份方案,既要根据应用系统的规模、用户多少、数据量的大小等具体情况,还要考虑实现技术的复杂性、数据库管理员的技术熟练度等多种因素。

1.1 脱机备份(非归档模式)

数据库脱机备份,即在数据库已经正常关闭的情况下进行备份,数据库处于Offline状态。其特点是简单、可行、可靠。脱机备份要备份所有的数据文件(.DBF文件)、所有控制文件(.CTL文件)、所有联机日志文件(REDO*.*文件)、以及初始化参数文件INIT.ORA(可选)。当数据库处于打开状态时,执行数据库文件系统备份是无效的。

由于在进行数据库备份期间数据库是关闭的,导致应用系统无法使用,尤其在数据库比较大、文件的读、写速度较慢,系统要求工作在7×24模式下采用此方案不合适。但对于小型的应用,单位没有专职的数据库管理员,应用系统不要求7×24不间断工作,采用此方式备份则切实可行。

1.2 联机备份(归档模式)

联机备份是指在数据库打开运行的情况下进行备份,一般需要通过使用Alter命令改变表空间的状态来开始进行备份,备份完成后,恢复原来的状态。联机备份方式可以用在数据库不能中断,需要全天运行的条件下。联机备份要求数据库必须在归档方式下操作,由于联机备份需要消耗较多的系统资源,如大量的存储空间,因此联机备份应安排在数据库不使用或使用率较低的情况下进行为宜。

联机备份方法可以使用SQL*Plus 程序和Oracle Enterprise Manager(OEM)中的备份向导两种方式进行联机备份。使用SQL*Plus语句的备份过程如下:

1)查看数据库是否已经启动归档日志:

archive log list;

如果归档日志模式没有启动,则打开数据库的归档日志模式,先使用shutdown immediate 命令关闭数据库,然后使用如下命令启动数据库:

startup mount;

2)修改数据库的归档日志模式:

alter database archivelog;

3)完成联机备份。

一旦数据库运行在archivelog状态下,就可以做备份了。sqlplus上执行的联机备份命令包括对三部分文件的备份:

第一步,数据文件的备份。

① 设置表空间为备份状态:

alter tablespace example begin backup;

② 备份表空间的数据文件:

用操作系统的复制拷贝数据文件。

③ 回复表空间为正常状态:

alter tablespace example end backup

第二步,归档日志文件备份:

alter system switch logfile;--强迫日志切换,以便所有的日志都被归档

archive log list;--获取当前的日志顺序号

从最早的概要日志序列到当前日志序列的联机redo日志都应该拷贝出来。

第三步,控制文件的备份:

alter database backup controlfile to trace;--获得控制文件的备份

然后到%oracle_base%admin%oracle_sid%udump目录中寻找最新的跟踪文件,其中有重建控制文件的全部命令。

1.3 逻辑备份

Oracle数据库的逻辑备份与恢复又称导出/导入,通过导出可以将数据移出数据库,这些数据的读取与其物理位置无关,“导出”文件为二进制系统文件。与物理备份相比,虽然逻辑备份不够全面,但是逻辑备份可基于整个数据库、用户模式或表模式将数据导出,较为灵活。对于一些重要的数据可以采取该种方式作为辅助备份。此外,采用逻辑方式导出导入数据的方法可较好地实现在不同操作系统平台、不同数据库版本之间进行数据库迁移,这对于物理备份是一个很好的补充备份形式。

1.3.1 使用EXPORT导出操作

Oracle传统上逻辑备份可以通过EXPORT程序在命令行下完成备份工作或通过Oracle Management Server(OMS)中的导出工具来完成。下面介绍命令行下进行的导出操作,而OMS的导出可以根据其导出向导进行操作。

从命令行调用Export程序完成导出操作,导出的具体任务由命令的参数和参数值决定。导出命令基本格式如下:

EXP USERID=username/password PARAMETER=(value1,value2,…valueN)

其中PARAMETER可以是导出命令的一些参数名称,value表示该参数的取值。

导出有三种类型:表模式导出、用户模式导出和完全数据库导出。

1)表模式导出

表模式导出是对数据库定用户所有的一张或者几张表的结构以及数据进行导出,将这些数据和定义存储在一个导出文件中。相关命令:

exp username/password tables=employees file=test.dmp

如果需要导出多个表,并将工具的反馈信息输出到日志文件,可以通过以下形式进行导出:

exp username/password tables=(employees,jobs) file=test.dmp log=test.log

2)用户模式导出

用户模式导出是对数据库中一个或者几个用户对应的模式中的对象和数据进行导出,使用用户模式的关键字为owner=,具体命令为:

exp username/password owner=username file=test.dmp

owner指定的用户其对应模式中的所有对象和数据都会被导出到test.dmp文件中。

3)完全数据导出

完全数据库导出是对整个数据库中除SYS模式以外的所有模式的对象都进行导出,这种导出形式耗费的时间较多。使用完全数据库导出模式的关键参数为FULL=Y,具体执行命令为:

exp username/password full=Y constraints=Y file=test.dmp

full参数设为Y表明进行的是完全数据库导出,constraints参数进行设置Y保证了表的约束条件也进行相关的输出。

因进行完全数据库导出需要运行很长时间,所以Oracle还提供了一种“直接”的执行方式来提高执行效率,命令为

exp username/password full=Y constraints=Y file=test.dmp direct=Y

1.3.2 使用数据泵Data Pump导出操作

Data Pump数据泵体系结构是在Oracle10g 10.1中提出,作为Export工具的替代,它可以高速实现Oracle数据库(10g版本之后)之间传输数据。Data Pump数据泵工具Expdp/impdp工作方法与Exp/imp导出/导入工具相比,数据传输方法做了很大的改进,传输速度大大提高了,而且它们的转储(dump file)文件的格式互不兼容,但是它们的使用方法很接近。这里以Data Pump来导出一个大小约为3GB的大表CASES为例来说明。

Data Pump在服务器端使用文件处理来创建和读取文件;因此,目录要作为位置使用。这里假设使用文件系统/u02/dpdata1来保存转储文件:

create directory dpdata1 as '/u02/dpdata1';

grant read, write on directory dpdata1 to ananda;

然后导出数据:

expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES.dmp job_name=CASES_EXPORT

其中,用户ID/口令组合、表和转储文件参数意义和原来导出相同。不同的是文件在服务器(不是客户端)上创建的。位置由目录参数值DPDATA1指定,它指向之前创建的/u02/dpdata1。这个进程还在目录参数指定的位置上创建一个日志文件(同样在服务器上)。默认地,这个进程使用一个名称为DPUMP_DIR的目录,因此可以创建它来代替DPDATA1。

新的参数job_name给此任务一个作业名。所有的Data Pump工作都通过作业来完成。Data Pump作业是服务器进程,它代表主进程处理数据。主进程(称为主控制进程)通过高级队列(AQ)来协调这项工作;它通过在运行期内创建的一个特殊的表(称为主表)来实现这个目的。在上述的例子中,如果在expdp运行时检查用户ANANDA的模式,将注意到一个表CASES_EXPORT的存在(对应参数job_name)。当expdp结束时,这个表被丢弃。

Data Pump还提供随时连接到一个运行中的任务来检查其状态的功能。通过执行一条expdp命令,使用ATTACH参数来指定任务名称,去连接一个任务,然后执行STATUS命令可查看当前任务状态。除此,还可以通过DBA_DATAPUMP_JOBS视图查看所有数据泵任务的状态,通过DBA_DATAPUMP_SESSIONS视图,列出所有活跃的数据泵工作进程。

1.4 恢复管理器RMAN (Recovery Manager)备份

恢复管理器RMAN(Recovery Manager)是一个由Oracle提供的外部工具,专门用来对数据库进行备份与恢复操作。尽管它支持在线热备份,但备份方式有别于前述的传统在线热备份方式。它有两种使用界面:GUI(图形用户界面)和CLI(命令行界面)。使用RMAN可以完成Oracle 数据库备份和恢复的各种任务。现在许多Oracle 备份恢复软件的内核实际上就是基于RMAN。

创建RMAN备份的具体步骤如下:

1)首选将要备份的数据库改成归档模式。

2)在OEM中给RMAN用户解锁,并检查是否得到recovery_catalog_owner权限,如无,则添加。更改原有密码为rman,表空间默认值为users。

3)用新建的RMAN用户连接到恢复目录数据库,这里假设名为myoracle,方法如下:

打开DOS窗口,执行RMAN命令,在出现的RMAN提示符下,键入命令:

RMAN> connect catelog rman/rman@myoracle;

4)创建恢复目录:

RMAN> create catalog tablespace users;

5)连接目标数据库myoracle:

RMAN>connect target sys/change_on_install@myoracle;

6)在目录数据库中注册目标数据库:

RMAN>register database;

7)验证注册结果,使用RMAN账号登录到恢复目录数据库RMAN:

打开SQLPlus,用rman用户名,密码rman,主机字符串myoracle登录,然后执行以下SQL语句观察结果:

SQL>select * from db;

8)用RMAN备份数据文件

在RMAN工具下,执行以下命令

run{

allocate channel c1 type disk;

backup

format '%d'

(datafile 'D:\oracle\oradata\myoracle\EXAMPLE01.DBF');

release channel c1;

}

执行成功后,通过以下命令查看备份情况:

RMAN> list backup of datafile 'D:\oracle\oradata\myoracle\EXAMPLE01.DBF';

1.5 Oracle数据库的备份策略

前面介绍的几种备份方式,在实际应用中往往是相互结合。Oracle数据库备份策略主要以联机备份为主,脱机备份和逻辑备份为辅。无论采用何种策略,前提都是不影响或少影响数据库可用性的情况下,来考虑通过备份操作的效率。各备份方式的比较见表1。

一般比较可行的备份方案是:首先脱机进行全数据库备份,执行频率根据数据库大小及对数据库改动的多少而定(如每周一次),然后设置数据库运行于非归档模式下,每天数次采用RMAN备份归档日志、联机日志、控制日志、配置文件,备份次数的多少直接影响恢复数据的完整性,应根据各单位具体情况而定。每周进行一次EXPDP逻辑备份,实现对数据,而非物理文件的备份。此方案不仅适用于大型的应用,也适用于小型的应用。采用此备份方案应注意在用机和备用机环境的一致,以利于恢复。

2 Oracle数据库的恢复

采用何种方式恢复数据库与所用的备份方案有密切关系。采用逻辑备份的数据库,可用imp命令或impdp命令来恢复,具体命令可用添加参数help=y来获得帮助。采用脱机备份的数据库可用操作系统的相关操作来完成数据文件系统的恢复,也可把整个目录复制到备用机,在备用机上启动数据库。由于采用的是脱机备份,在上次备份后所发生的数据库改动将不能恢复。采用联机备份的数据库可用恢复命令RECOVER来进行恢复,采用RMAN备份的数据库则继续在RMAN工具下执行包含restore 参数的命令来恢复数据库。上述具体命令参数可参阅有关帮助文档。

采用脱机备份加日志文件、控制文件的备份方式,在恢复中,先把脱机备份的数据库全部拷贝到备用机,然后根据日志文件、控制文件进行重做日志,若日志文件、控制文件备份的频率设置得当,可把数据库恢复到理想时间点甚至发生故障点。

3 结束语

提高数据库灾难后恢复的可靠性正越来越受到人们的关注,本文总结和比较了几种Oracle数据库的备份方案,并提出了典型的备份策略,用户可以根据自己的实际情况及数据库结构在此基础上灵活应用。实际证明,选择一种相对简单、可靠,并且切实可行的方案有利于提高备份恢复速率和有效性,从而真正提高数据的安全性和可靠性。

参考文献:

[1] 王飞飞,孙胜耀,董杨.基于数据泵技术的资料归档设计与实现[J].电脑开发与应用,2008,21(12):26-27.

[2] 苏国磊.利用RMAN实现Oracle数据库的备份与恢复[J].电脑知识与技术,2007,2:325-326.

[3] 余以胜.Oracle数据库备份解决方案的研究[J].计算机与数字工程,2006,34(1):118-121.

[4] 滕永.Oracle 10g数据库系统管理[M].北京:机械工业出版社,2006.

[5] 腾永昌.Oracle9i数据库管理员使用大全[M].北京:清华大学出版社,2005.

[6] 胡欣杰.Oracle9i数据库管理员指南[M].北京:希望电子出版社,2004.

上一篇:基于Sobel算子图像边缘检测的MATLAB实现 下一篇:微机原理与接口技术实验教学改革综述