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 参数

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐