oracle rman 备份
rman 是oracle数据库软件自带的备份恢复工具。强调一点:通过rman 的方式无论是备份还是要恢复,都必须先启动实例并加载数据库。
连接本地数据库
rman target / log /home/oracle/rman.log
– log 参数 可以输出日志到相应的文件中
或
rman
connect target /
连接远程数据库
rman target sys/sys@testdb
退出 rman
exit
熟悉 rman 操作
首先需要强调,如果是在oracle数据库open(open read write)状态执行备份,则数据库必须是置于 归档模式,否则,在执行备份操作时有可能碰到ora-19602错误。
1、启动、关闭数据库
在rman中执行启动和关闭数据库的命令和sql*plus环境中相同。当然在执行之前,你需要先连接到目标数据库,如:
rman target /
rman> shutdown immediate
rman> startup
2、执行操作系统命令
rman 支持执行 host 命令 短暂退出rman 的命令提示符,进入操作系统的命令环境,如:
rman> host:
执行完操作系统命令后,可以再通过执行 exit 命令 退出到 rman 命令提示符下。
3、执行 sql 语句
rman> sql ‘alter system archive log all’;
rman 备份类型
rman 有两种不同类型的备份方式:
1、镜像复制(image copies)
实际上就是创建 数据文件、控制文件或归档文件等的备份文件,与用户通过操作系统命令创建的备份一样。
2、备份集(backup sets)
值得推荐,都是基于这种方式。
rman 命令执行方式
1、单个执行
rman> backup database;
2、批处理
rman>run{
…
}
run 中命令被视为一个作业,如果作业中任何一个命令执行失败,则整个命令停止执行,即失败命令后的其它命令都不会再执行。并不是所有的 rman 命令都能放在run块中执行。
3、运行脚本
-
用命令行方式调用操作系统中保存的脚本文件
rman target / @backup_db.rman
或
rman target / cmdfile=backup_db.rman -
在rman中执行操作系统中保存的脚本文件
rman>@backup_db.rman -
运行存储在 catalog 中的脚本(首先需要为 rman 创建恢复目录)
rman>run {execute script backup_db};
rman 备份初级演练
rman target /
整库备份
– 整库备份——所有数据文件进行备份。
rman> backup database;
rman> backup database format ‘/home/oracle/rman/bak_%U.dbf’; # format 参数 来自定义备份片段的路径和命名规则。
– 查看创建的整库备份
rman> list backup of database;
表空间的备份
只要实例启动并处于加载状态,无论数据库是否打开,都可以在 rman 中对表空间进行备份
rman> backup tablespace users;
或
rman> backup tablespace users format ‘/home/oracle/rman/bak_%U.dbf’;
– 查看创建的表空间 users 备份
rman> list backup of tablespace users;
删除备份集
rman> delete backupset 10;
或
rman> delete backupset 10 noprompt;
数据文件的备份
有两种方式指定数据文件:1、数据文件名称(数据文件详细路径);2、file_id, 查看可以通过 select file_id, file_name from dba_data_files;
rman> backup datafile ‘/oracle/oradata/orcl/users01.dbf’; # 也可以指定 format 参数
或
rman> backup datafile 4;
– 查看
rman> list backup of datafile n; # n=数据文件的序号,多个以逗号隔开
控制文件的备份
rman> backup current controlfile; #也指定 format 参数
rman> backup database include current controlfile;
通过configure 命令 将 controlfile autobackup 设置为on, rman 做任何备份操作,都会自动对控制文件做备份。
rman> configure controlfile autobackup on;
– 查看备份的控制文件
rman> list backup of controlfile;
归档文件的备份
在 rman 中备份归档有两种形式:
rman>backup archivelog all; # all 是指备份当前所有可访问到的归档文件,你还可以通过 until、scn、time、sequence 等参数灵活指定要备份的归档区间。
在完成归档日志文件的备份后,rman 中 提供了 delete input 参数, 加在 backup 命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。
--在备份 控制文件 之前首先对所有 归档文件 进行备份
rman> backup current controlfile plus archivelog;
rman>backup ... plus archivelog 命令在备份过程中会依次执行下列步骤:
1、执行 alter system archive log current 语句对当前redolog进行归档。
2、执行 backup archivelog all 命令备份所有已归档日志。
3、执行 backup 命令对指定项进行备份。
4、再次执行 alter system archive log current 语句对当前redolog进行归档。
5、对新生成的尚未备份的归档文件进行备份。
-- 查看备份的归档文件
rman> list backup of archivelog all;
初始化参数文件的备份(极少用到)
通常在备份控制文件时,rman 也会自动备份服务器端的初始化参数文件,并置于 控制文件 相同的备份片段中。因此极少需要独单对 spfile 进行备份。如果想单独备份 直接 backup spfile 即可。
rman> backup spfile;
对备份集进行备份
–备份所有的备份集
rman> backup backupset all;
–备份指定的备份集
rman> backup backupset n; # n=备份集ID, 可同时指定多个,相互间以逗号分隔即可。
和备份归档文件一样,backup backupset 命令也支持 delete input 参数,DBA视情况而定。
综述
1、备份命令: backup …
2、查看备份命令: list backup of …
3、自定义片段的话,加上 format 参数