- 浏览: 32337 次
- 性别:
- 来自: 上海
最新评论
Oracle数据库恢复管理器及特殊包的应用
摘要:多数Oracle数据库管理员会遇到数据库的备份恢复和将某表中数据定期备份形成历史流水数据以便今后查询统计等问题,本文通过对Oracle数据库实用工具恢复管理器及DBMS_JOB包工作机制的分析,提出了应用Oracle数据库恢复管理器和利用DBMS_JOB包实现存储过程自动执行来解决问题的方法。
关键词:DBA、备份恢复、恢复管理器、DBMS_JOB包
一. 引言:
随着Oracle大型数据库系统在企业的广泛应用,系统数据量的快速增长,相信为数不少的Oracle DBA每天都在忙于做着重复的工作--对数据库进行备份。如果一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时对 DBA来说可能就是一场灾难, 因为他可能无法完整地恢复数据库中的数据。此外,在数据库的应用中我们会经常碰到这样的需求:将一些重要数据表中的数据定期备份到另一些数据表中去。例如在企业员工工资管理系统中,每月工资报表打印完毕后,应将当月工资数据保存到工资历史库中去,以便今后查询及统计使用。通常我们采用存储过程来完成对数据的处理,这个过程由人工定期执行完成,操作起来很不方便。对于第一种情况,现在我们可利用Oracle数据库实用工具恢复管理器来完成DBA每天必须做的备份工作,而且可设定一个固定的时间, 让系统自动进行备份。对后一种情况,我们可以使用DBMS_JOB包结合存储过程来实现数据处理的自动执行。下面笔者结合实践经验,分别介绍其实现方法。
二. Oracle数据库备份与恢复方式及特点
ORACLE 数据库备份分为物理备份和逻辑备份。物理备份是数据库文件拷贝的备份, 冷
备份、热备份属于物理备份。 导出/导入(EXPORT/IMPORT)工具用于进行逻辑备份。
导出(EXPORT)备份可拷贝数据与数据库定义,并以Oracle的内部格式保存为二进制文件。相反,利用Import则可将数据从二进制文件放回到Oracle数据库中。但是导出(EXPORT)备份机制不能提供时间点恢复,而且不能和归档重做日志文件一起使用。
冷备份是在数据库被正常关闭之后进行的数据文件的物理备份。当数据库被关闭时,被
数据库使用的每一个文件都被备份下来。这些文件因而保持着数据关闭时的完整的映象。
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。 这涉及到将每个表空间设置为备份状态,然后备份其数据文件,最后将表空间恢复成正常的状态。
数据库可以从这个备份中完全地恢复过来,也可以通过归档的重做日志回滚到前面时间的任
一个点上。
上述几种备份方法的特性比较
方法 类型 恢复特性
----------- --------- ----------------------------------------------
Export导出 逻辑型 可以将任何数据库对象恢复到它被导出时的状态
冷备份 物理型 可将数据库恢复到它被关闭时的状态
热备份 物理型 可将数据库恢复到任一时间点的状态
以上几种备份方式都需要依赖DBA人工操作完成,从而增加了DBA维护系统的负担。当
DBA需要维护多个Oracle数据库系统时,还容易导致操作失误,而且备份的数据不便于集中统一管理。
三. Oracle数据库恢复管理器及DBMS_JOB包概述
恢复管理器(RMAN)是一个使DBA能很方便地对数据库执行备份和恢复任务的Oracle
应用工具,与以上介绍的几种方式不同,它能够提供DBA针对企业数据库备份与恢复操作
的集中控制。RMAN可以将备份记录保存在恢复目录中,Oracle服务器保持对备份的跟踪
。实际的物理备份拷贝将被存储在指定的存储系统上,可以是磁带或磁盘。RMAN将全部备
份数据以Oracle特有的格式写入到"备份集"文件中,通过RMAN应用工具来读取。RMAN支持建立除逻辑备份以外的所有类型的备份。
下图显示了RMAN的功能框图。
利用RMAN进行备份恢复的条件是:
1.建立一个recovery_catalog,存放RMAN使用和维护着的目标数据库的信息,RMAN
使用这些信息去决定如何执行备份和恢复的请求。通常是把它建在另一个Oracle数据库的一个模式里,即需要建立一个用户,该用户需要有recovery_catalog_owner权限。
2.目标数据库必须是在archivelog模式下运行,因为这样,日志才能归档,而RMAN
正是利用归档日志进行数据恢复,所以这是一个必备条件。同时archivelog模式也是数据库在线备份的必备条件。
3.RMAN备份中,如果采用磁带机备份,需要安装第三方介质管理库(MML)。
恢复管理器保存在RMAN中注册的全部数据库的记录。当RMAN被用来启动备份或恢复数据库时,它将目标数据库与恢复目录中可用的数据库ID进行验证。如果条件一致,RMAN对目标数据库至少建立两个通道,其中一个通道只是对目标数据库的一个远程调用,使用PL/SQL接口来执行备份与恢复操作。RMAN使用它自己的PL/SQL引擎编译这些用户命令,并在目标数据库上执行这些命令。执行过程不需要用户干预,RMAN记录追踪在数据库上执行的全部备份与恢复操作,因而在很大程度上避免了DBA错误导致的危险。 同时RMAN提供了多种命令用于检查和测试数据库备份集与拷贝,并确保备份文件完整无缺且能够用于实现恢复。由上述可见,采用恢复管理器做备份与恢复的管理与其他方式相比较具有明显的优势,
可大大减少DBA做备份工作的工作量和操作失误。
DBMS_JOB包是Oracle提供的内部函数包,提供了管理和调度作业队列中的作业定时执行的控制机制。所有作业由SNP后台进程执行。 当SNP进程运行一个作业时,进程将首先创建会话,并恢复作业运行时的环境参数,再调度作业运行。DBMS_JOB包的主要功能有:提交Submit(),执行Run(),删除Remove()等。这样,我们就可以用这个包将创建的存储过程放入Oracle数据库系统的作业队列中去,由系统按时调度运行。
四. 应用实例
4.1 RMAN做数据库在线备份应用实例
这里以某公司业务处理计算机中心数据库为例。用户系统配置为:两台HP9000小型机(host1、host2),操作系统为HP-UX11.0,Oracle数据库版本为8.0.5。两台机上各有一个Oracle数据库实例,分别运行不同的业务处理系统。用户要求设备7X24小时在线工作,原则上运行时不允许数据库关闭。这就使得我们只能采用在线备份方式解决问题。为安全起见,我们在另一台IBM服务器(host3)上安装Windows2000及一个独立的Oracle数据库,恢复目录就建在这个数据库中,这台服务器还配置了一台磁带加载机,备份数据存放在磁带上,这样即便哪台机器出现故障我们也能够实现数据库的完全恢复,不过DBA应注意定期做恢复目录数据库的备份。在备份策略上,我们采用了全备份与归档日志备份相结合的方式,既不占用过多的系统时间,也相应减少了备份的数据量。备份策略如下:
(1) 每周日晚11:00做数据库在线全备份。
(2) 每天12:00,18:00 做数据库归档日志文件的在线备份。
建立备份机制的操作如下(以host1机为例):
(1) 建立恢复目录并注册目标数据库。
SVRMGR> create tablespace rmanspace datafile 'rmandata' size 500m;
SVRMGR> create user rman identified by rman default tablespace
Rmanspace temporary tablespace temp;
SVRMGR> grant connect,resource,recovery_catalog_owner to rman;
以上为建立RMAN表空间和用户。
$ sqlplus rman/rman
sql> start "/ora_01/app/oracle/product/8.0.5/rdbms/admin/catrman";
--执行创建恢复目录操作
$ rman target system/manager@host1 rcvcat rman/rman@host3;
--连接目标数据库和恢复目录
rman> register database; --将目标数据库注册到恢复目录中
rman> resync catalog; --进行同步目录操作
(2) 将目标数据库改为归档模式运行。
SVRMGR> connect internal
SVRMGR> startup mount [dbname]
SVRMGR> alter database [dbname] archivelog; --起用归档模式
SVRMGR> archive log start --启动自动归档模式
SVRMGR> alter database [dbname] open; --打开数据库
修改数据库初始化参数文件init.ora,定义归档模式(自动)、归档日志文件保存
路径、归档日志文件命名方法,重新启动数据库。
---------------------------------------------------------------
(3)建立全备份脚本文件hotbackup.rcv。
connect target internal/oracle@host1
connect rcvcat rman/rman@host3
run { allocate channel t1 type 'SBT_TAPE';
backup
incremental level 0
skip inaccessible
tag hot_db_bk_level0
filesperset 5
format 'bk_%s_%p_%t' (database);
--备份全部数据库控制文件和数据文件
sql 'alter system archive log current';
backup
filesperset 20
format 'al_%s_%p_%t' (archivelog all delete input);
--备份归档日志,备份成功后删除归档日志。若不成功,则不做删除。
}
归档日志备份脚本hotarcbackup.rcv文件如下:
connect target internal/oracle@host1
connect rcvcat rman/rman@host3
run { allocate channel t1 type 'SBT_TAPE';
sql 'alter system archive log current';
backup
filesperset 20
format 'al_%s_%p_%t' (archivelog all delete input);
}
(4) 利用UNIX的crontab命令定期自动执行备份脚本
crontab命令用于指定一个文件,其行计划命令以固定时间间隔执行。Cron是一个
永久进程,它由/etc/rc.local启动执行。Cron程序读取、解释并执行crontab文件。
我们将需自动定期执行备份的脚本文件写成shell命令行方式存入crontab文件中,由
系统定期调度执行。
Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of
week、command)组成,域之间用空格或Tab分开。
现在,我们在目标机上编写一个文件,用以启动自动备份进程。文件名定为Oracle,
文件将放在/var/spool/cron/crontabs 目录下。
Oracle文件内容:
0 23 * * 0 /oracle/rman/rman cmdfile ‘hotbackup.rcv’
# 星期天23点对数据库执行在线全备份
0 12,18 * * * /oracle/rman/rman cmdfile ‘hotarcbackup.rcv’
# 每天12点,18点执行归档文件备份
经过以上的操作后,系统每天自动产生两个归档日志备份,每个星期天产生一个数
据库完全备份。DBA需要做的是,隔几天换一盘磁带(更换磁带的周期取决于备
份文件的大小和磁带的容量)和用RMAN定期检查备份执行情况。
执行恢复操作的RMAN脚本文件restore.rcv如下(在host1上运行):
connect target
connect rcvcat rman/rman@host3
run { allocate channel t1 type 'SBT_TAPE';
allocate channel t2 type 'SBT_TAPE';
restore controlfile;
sql 'alter database mount';
restore database;
recover database;
sql 'alter database open resetlogs';
}
4.2 存储过程定期自动执行的实例
以下为将Salary表数据定时转入Salary_history表的应用实例:
创建存储过程
SQL> create or replace procedure ProcEmp
IS
begin
insert into Salary_history (EmpId,EmpName,DptName,Salary,Month)
select EmpId,EmpName,DptName,Salary,to_char(sysdate,'yyyy-mm') from Salary;
commit;
end ProcEmp;
/
提交作业
SQL> variable jobno number;
SQL> begin
DBMS_JOB.SUBMIT(:jobno,
'ProcEmp;',
SYSDATE, 'SYSDATE + 30'); --每30天运行一次
commit;
end;
/
运行作业
SQL>begin
dbms_job.run(:jobno);
end;
/
五. 结语
Oracle实用工具RMAN的应用为DBA管理多个Oracle数据库提供了集中备份管理与恢复控制的机制,大大地减轻了DBA的工作压力,而DBMS_JOB包的使用增强了存储过程的应用功能,这样,他们就可以从备份数据及重复处理数据的繁琐中解脱出来,去做其它更有意义的工作。而数据库既实现了在线磁带备份,又实现了异机备份集中管理,相应提高了系统运行的安全性。
发表评论
-
Oracle中删除表,删除数据以及恢复数据
2009-12-24 18:02 20761.删除表中数据两种方法 a. delete ... -
Oracle分区表和索引
2009-11-26 15:24 2239什么时候使用分区: 1、 大数据量的表,比如大于2GB。 ... -
oralce 基础知识
2009-11-25 11:53 912一、选择行 1. 简单的SELECT 语句 SELECT 字段 ... -
Oracle RAC
2009-11-25 11:29 1285RAC就是real application clust ... -
oracle维护常用语句
2009-11-16 13:20 8011、查看表空间的名称及 ... -
使用par文件Oracle全库导入导出
2009-11-16 13:19 3569Oracle使用par文件进行全库导入导出 ... -
关于Oracle监听命令那些事
2009-11-13 10:22 660启动监听:lsnrctl start 查看监听:lsnrc ... -
深刻理解Oracle数据库的启动和关闭
2009-11-11 16:40 682Oracle数据库提供了几种不同的数据库启动和关闭方式, ... -
Oracle字符集命令
2009-11-11 15:37 1694Oracle字符集 查看服务器端字符集几种命令语句: ... -
ORACLE数据库字符集详细介绍
2009-11-11 15:32 813一.引言 ORACLE数据库字符集,即Orac ... -
oracle 字符集介绍
2009-11-11 15:09 669一、什么是oracle字符集 Oracle字 ... -
循序渐进学习oracle
2009-10-26 15:59 6621. 需要了解数据库原理基本知识,明白行、列概念,有关 ...
相关推荐
Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,其官方中文文档集萃涵盖了该系统的核心技术、安装配置、管理维护以及高级特性等多个方面。这些文档为数据库管理员(DBA)和技术人员提供了全面的学习...
这份“Oracle 11g官方中文帮助文档”是一个高清完整版的资源,旨在为中文用户提供详尽的指导和支持。 1. **Oracle 11g基础** - 数据库概念:Oracle 11g基于关系型数据库模型,存储和管理结构化数据。 - 数据库...
描述中提到,这个文档包含了对Oracle 12c考题的中文翻译和答案解释,这对于那些想要学习Oracle并准备OCP认证考试的人来说是一个很好的参考资料。它能帮助学习者更轻松地理解和掌握Oracle数据库的相关知识,特别是...
本套中文文档全面涵盖了Oracle11g的各项特性和功能,为学习和使用Oracle11g数据库提供了详实的参考资料。以下是针对Oracle11g的一些核心知识点的详细解析: 1. **数据库体系结构**:Oracle11g数据库基于客户-服务器...
7. **备份与恢复**:文档会讲述Oracle的备份策略,如RMAN(恢复管理器)的使用,以及如何进行数据库的完整恢复、增量恢复和归档日志恢复。 8. **高可用性与故障恢复**:这部分会介绍RAC(实时应用集群)、数据守护...
Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,其官方中文帮助文档为开发者、DBA(数据库管理员)和IT专业人士提供了详尽的技术指导。这份PDF高清完整版的文档涵盖了Oracle 11g的各个核心组件和技术,...
这份"oracle官方中文文档+学习笔记"资源为初学者和经验丰富的DBA提供了宝贵的参考资料,可以帮助他们深入理解Oracle数据库的核心概念和技术。 Oracle 10g Concepts文档是Oracle数据库10g版本的主要理论指南,它详细...
《11gR2官方中文文档-中英文对照》是一个重要的资源,对于深入理解Oracle数据库11g Release 2(11gR2)的技术细节和功能提供了宝贵的参考资料。这个文档集是双语的,既包含中文解释,也提供英文原文,方便不同语言...
Oracle 10g是Oracle公司推出的数据库管理系统的一个重要版本,其官方中文文档为学习和管理员提供了详尽的指导。在"Oracle10g官方中文文档"中,我们可以深入理解Oracle数据库的核心概念、功能特性和管理策略。以下是...
这个"Oracle 11g 官方中文文档集萃.rar"包含了Oracle 11g的全方位官方中文文档,对于数据库管理员(DBA)和开发人员来说,是一份极其宝贵的参考资料。 1. **数据库基础知识**: - 数据模型:了解关系型数据库的基本...
"Oracle高级中文帮帮助文档.chm.zip"压缩包提供了一个全面的中文指南,旨在帮助用户更好地理解和操作Oracle数据库系统。 文档涵盖了以下几个主要知识点: 1. **SQL优化**:SQL(Structured Query Language)是访问...
Oracle11i中文帮助文档是Oracle数据库11.1版本的官方中文指南,它为用户提供了详尽的数据库管理和开发信息。这个文档集合通常被分割成多个部分,以方便下载和管理,例如本例中的"Oracle11i-1.rar"至"Oracle11i-4.rar...
"Oracle高级中文帮帮助文档.zip" 提供了丰富的资源,帮助用户深入理解和掌握Oracle的高级特性与操作。这个压缩包中的"oracle高级中文帮帮助文档.chm"文件,很可能是Oracle官方的中文版帮助手册,对于学习和解决...
这个官方文档集合包含了丰富的信息,对学习和掌握Oracle 10g的各个方面都极其有益。以下是根据提供的信息,对Oracle 10g的一些关键知识点的详细说明: 1. **SQL编程指南**: - SQL(Structured Query Language)是...
5. 数据库备份与恢复:学习Oracle的备份策略,如RMAN(恢复管理器)的使用,以及如何进行数据恢复操作。 6. 性能监控与调优:理解AWR(自动工作区内存管理)报告,使用SQL Trace和 tkprof 工具分析SQL性能,以及...
这个压缩包包含的官方中文文档是备考Oracle9i OCA(Oracle Certified Associate)和OCP(Oracle Certified Professional)的重要参考资料,旨在帮助学习者深入理解Oracle9i数据库的SQL语法和管理技术。 首先,...
Oracle11i中文帮助文档是Oracle数据库11.1版本的官方中文参考资料,它为数据库管理员、开发人员和系统架构师提供了详尽的指导。这个文档集合通常包含多个部分,以便于管理和下载,例如本例中的Oracle11i-1.rar至...