徐 曼
(哈尔滨铁路局 信息技术所,哈尔滨 150001)
Oracle数据库的备份与恢复
徐 曼
(哈尔滨铁路局 信息技术所,哈尔滨 150001)
介绍Oracle数据库常用的3种备份方法,即:RMAN备份、逻辑备份和冷备份。RMAN备份以数据库文件存储,分别以采用文件系统方式和ASM自动磁盘管理方式的两个项目为例,介绍RMAN备份的不同写法。逻辑备份说明了expdp和impdp数据泵导入导出技术的使用和相关的角色权限。最后阐述了冷备份的优缺点。这3种备份方法在实际工作中应用广泛,给Oracle数据库的稳定运行提供了有力的保障。
数据库;备份;恢复
随着计算机技术的普及,数据库技术得到了广泛的应用,各种数据的安全性和重要程度也越来越被人们所重视。作为信息安全的一个重要内容,备份技术应运而生,系统备份如RAID技术,双机热备,集群技术等都是提高了系统的备份和高可用性,同时也一定程度地解决了数据库的备份问题,以几个项目为例,详细介绍Oracle数据库的备份与恢复。
RMAN是指Oracle提供的实用程序Recovery Manager,即恢复管理器。RMAN是一个智能和自动化的备份恢复工具,使用RMAN可以轻松实现数据库的所有备份任务如备份整个数据库,备份特定的表空间或者数据文件,增量备份,备份文件的差错检验等。RMAN的架构如图1所示[1]。
图1 RMAN结构组成
RMAN备份根据数据库文件存储方式的不同有不同的写法,下面以铁路货运计划系统和哈尔滨铁路局电子公文系统为例,分别介绍数据库文件存储采用文件系统方式和ASM自动磁盘管理方式的不同的RMAN备份写法。
铁路货运计划系统采用小型机双机集群,数据库为双节点oracle9i RAC。在2号小型机上部署crontab定时任务,定时启用数据库备份脚本,数据库开启归档模式。数据库数据文件备份脚本如下:
控制文件和归档日志文件备份脚本如下:
哈尔滨铁路局电子公文系统采用小型机双机集群,数据库为Oracle11g 双节点并发 RAC,ASM自动存储管理,数据库开启归档模式。在2号小型机上部署crontab定时任务,定时启用数据库备份脚本。数据库数据文件备份脚本如下:
控制文件和归档日志文件备份脚本如下:
RMAN备份的文件自动保存在恢复目录下,实现数据恢复操作时,指令简洁,RMAN自动寻找需要的文件实现数据恢复。数据库在归档模式和非归档模式下均可进行恢复,可进行完全恢复,也可以进行控制文件、数据文件和重做日志文件的单独恢复。
逻辑备份是指使用Oracle提供的数据迁移工具如EXPDP,EXP等,导出数据库对象的逻辑结构以及数据,并存入一个二进制转储文件(.dmp文件)中。EXP/IMP是Oracle比较传统地数据库逻辑备份工具实现全库或表空间的逻辑备份,但是它不支持用户的交互模式,即在备份过程中无法控制或切换备份进程,而Oracle11g及以上版本提供的数据泵技术可以很好的实现用户交互,支持网络操作以及重启失败的备份作业,所以Oracle建议使用数据泵技术来代替EXP和IMP实用程序。
数据泵工具可以从命令行实用程序expdp和impdp中调用,或者通过PL/SQL程序包DBMS_ DATAPUMP调用。
数据泵技术的特点:
(1)导入/导出的所有工作都由数据库实例完成。
(2)可以使用DBMS_DATAPUMP PL/SQL API建立、检测和调整数据泵任务。
(3)可以对IMPDP/EXPDP导入/导出任务进行重新启动(类似于网络下载的断点续传)
2.1 数据泵导出数据
使用数据泵导出时,如果不是直接导出到远程数据库中,应首先创建目录对象。
(1)创建目录对象的代码
Windows环境下:
Unix环境下:
(2)为目录对象授权
对具体的用户授予权限:
将目录对象设置为公共读写:
在dba_directories视图中可查看常见的目录对象:
expdp的导出方式如表1所示。
表1 expdp的导出方式
2.1.1 数据库导出方式
完整的数据库导出要求用户拥有EXP_FULL_ DATABASE角色权限。
示例:
2.1.2 用户模式导出方式
示例:
可以省略full=y参数,使用schemas=schema_ list参数来表示要导出的用户列表,如果有多个用户,则用户之间用逗号分隔。要想导出多个用户,必须具备EXP_FULL_DATABASE角色权限。
2.1.3 表导出方式
示例:
主要参数:
nologfile=y:表示不会将操作日志写入磁盘,不过仍然会在终端显示出来。
content=data_only:表示只导出表中的数据而不导出元数据;如果是content=medata_only,则表示只导出元数据而不导出表中的数据。如果不写这个参数,则二者全都导出。
2.1.4 表空间导出
示例:
expdp system/passwd directory=pbdir dumpfile =person_ts.dmp tablespaces=person
导出person表空间所有数据库对象及相依对象
主要参数:
tablespaces=tablespace_list:指定要导出表空间。
要求数据库用户拥有EXP_FULL_DATABASE角色权限。
2.2 数据泵导入数据
导入和导出的数据库对象可以是同一个数据库,也可以是不同的数据库。
数据泵导入程序impdp可以按照如下方式进行,如表2所示。
表2 impdp的导入模式
导入导出方式匹配如表3所示。
如果导入源是一个替代导出文件集的有效数据库或者要求EXP_FULL_DATABASE角色的导出会话,则需要用户具有IMP_FULL_DATABASE角色权限。
表3 数据泵导入导出方式比较
读取导出文件pb.dmp,并提取所有的DDL,将其放入到pb文件中。(不对操作日志进行写入磁盘的操作)
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外的位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。
冷备份的优点是:
(1)是非常快速的备份方法(只需拷文件);
(2)容易归档(简单拷贝即可);
(3)容易恢复到某个时间点上(只需将文件再拷贝回去);
(4)能与归档方法相结合,做数据库“最佳状态”的恢复;
(5)低度维护,高度安全。
但冷备份也有如下不足:
(1)单独使用时,只能提供到“某一时间点上”的恢复。
(2)再实施备份的全过程中,数据库必须要做备份而不能做其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
(3)若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。
(4)不能按表或按用户恢复。
如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括: 所有数据文件 、所有控制文件 、所有联机REDO LOG文件 和Init.ora文件(可选) 。
本文以实际项目为例,详细介绍了Oracle数据库的3种常用备份与恢复的方法,RMAN备份与恢复、逻辑备份即数据泵导入导出技术和冷备份,以上3种备份方法在实际工作中应用广泛,给Oracle数据库的稳定运行提供了有力的保障。
[1]林树泽 ,历铁帅, 何会军.Oracle数据库管理之道[M].北京:清华大学出版社 ,2012.
[2]刘 伟.一种Oracle数据库异常迁移现象的解决方法[J].铁路计算机应用,2012,21(18).
[3]徐 卓.关于Oracle数据库设计、开发、应用的探索[J].铁路计算机应用, 2014,23(9).
责任编辑 徐侃春
U29∶TP39
A
2015-08-27
徐 曼,高级工程师。
1005-8451(2016)03-0046-04