1. 使用EM备份和恢复数据库(略)
2.RMAN技术
RMAN----- Recovery Manager,恢复管理器。用来备份和恢复数据文件、控制文件和归档日志,可以用来执行完全或不完全的数据库恢复。
2.1 基本概念
a.(backup pieces),每个备份片是一个单独的输出文件,一个备份片的大小是有限制的,如果没有限制,那么备份集就有一个备份片组成了。并且备份片的大小不能大于使用的文件系统所支持的文件长度的最大值。
b.(backup sets),备份集有若干个备份片组成,备份集包含数据库文件或归档日志,并以Oracle数据库专有的格式保存。
c.(channel),通道是RMAN和目标数据库之间的一个连接,使用命令可以在目标数据库启动一个服务器进程,同时必须执行服务器进程备份或者恢复数据库操作使用的I/O类型。
d.(file multiplexing),将不同的多个数据文件的数据块混合备份在一个备份集中。
e.(full backup sets),全备份是对数据文件中使用过的数据块进行备份,没有使用过的数据块不进行备份。
f.(image copies),镜像复制式独立文件(数据文件、控制文件、归档日志)的复制,类似于操作系统级的文件复制,不是备份集或备份片,也没有被压缩。
g.(incremental backup sets),增量备份是指备份数据文件自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与完全备份一样进行压缩。
h.(catalog),恢复目录是由RMAN使用、维护的用来放置备份信息的仓库。rman利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。恢复目录可以存在Oracle数据库的计划中。虽然恢复目录可以用来备份多个数据库,建议为恢复目录数据库创建一个单独的数据库。恢复目录数据库不能使用恢复目录备份自身。
i.(recovery catalog recyncing),使用RMAN执行backup、copy、restore、switch时,恢复目录自动进行更新,但是有关日志与归档日志信息没有自动计入恢复目录,需要进行目录同步,使用命令。
使用RMAN之前需要做好准备工作,包括、、、、等等。
下面就以上的任务做准备:
(1)将数据库设置为归档日志模式
使用RMAN,首先把数据库设置为归档模式。打开SQL*Plus,使用SYSTEM等SYSDBA身份的用户登录。
查看当前数据库的信息select dbid, name, log_mode, platform_name from v$database;
在数据库实例打开时不能修改模式,先shutdown immediate
数据库实例 startup mount
修改日志模式
(2)创建恢复目录所使用的表空间
需要创建表空间存放RMAN相关的数据,要创建表空间就要打开数据库实例 alter database open;
create tablespace rmantbs01 datafile '....*.dbf' size 200M;
(3)创建RMAN用户并授权
创建一个RMAN用户,并授予其相关的权限,专门进行数据库备份和恢复。
create user rman identified by rman default tablespace rmantbs01 temporary tablespace temp;
grant ,recovery_catalog_owner , resource to rman;连接数据库,创建表、视图等数据库对象;管理恢复目录;创建数据库表、视图等数据库对象。
(4)创建恢复目录
使用命令可以打开恢复管理器,主要参数有catalog(后面跟恢复目录)、target(后面跟目标数据库的连接字符串)、nocatalog(指定没有恢复目录)
rman catalog rman/rman target orcl;
创建恢复目录;使用表空间创建恢复目录
(5)注册目标数据库
只有注册的目标数据库才能进行备份和恢复操作。使用register database命令对数据库进行注册
(6)RMAN备份和恢复
在执行数据库备份和恢复时,常常需要同时执行多个语句,可以用run命令定义一组要执行的语句
执行全数据库备份操作:
RMAN> run{
--通道(channel),通道是RMAN和目标数据库之间的一个连接,使用命令可以在目标数据库启动一个服务器进程,同时必须---执行服务器进程备份或者恢复数据库操作使用的I/O类型。
allocate channel
backup database;
--释放通道
release channel dev1;
}
单独备份归档日志文件操作:
RMAN> run{
allocate channel dev1 type disk;
backup archivelog all;
release channel dev1;
}
查看备份集信息:
RMAN> list backup;
恢复归档日志信息:
RMAN> run{
allocate channel dev1 type disk;
restore archivelog all;
release channel dev1;
}