创建或者取代脚本:
RMAN> create script alloc_disk {
2> # Allocates one disk
3> allocate channel dev1 type disk;
4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;
5> }
RMAN> replace script rel_disk {
2> # releases disk
3> release channel dev1;
5> }
RMAN> replace script backup_db_full {
2> # Performs a complete backup
3> execute script alloc_disk;
4> backup
5> .....
6> execute script rel_disk;
7> }
前两个脚本分别用来分配和回收通道。
alloc_disk 脚本还额外指定了备份片的最大兆字节数,备份时可以同时打开的输入文件的最大数目,以及每秒钟读每个输入文件的数据缓冲区的最大数目。
第三个脚本调用先前存储的两个脚本进行数据库备份。
运行存储脚本的示范:
RMAN> run {
2> execute script backup_db_full;
3> }
注意:存储的脚本必须在{ .... execute <script>; ....}命令中调用。
12. Corruption detection
RMAN可以备份包含损坏数据块的数据文件,查询视图V$BACK_CORRUPTION和V$COPY_CORRUPTION可以获得有关坏数据的信息。
通过设置 set maxcorrupt 可以跳过指定个数的坏块来避免备份失败。
RMAN> replace script backup_db_full {
2> # Performs a complete backup
3> execute script alloc_disk;
4> set maxcorrupt for datafile 1 to 0;
5> backup
6> .....
7> execute script rel_disk;
8> }
上面的脚本maxcorrupt for datafile 1 to 0设置为0,所以如果有错误数据块在数据文件1中发现,上面的脚本执行就会失败。
13. 通道
一个通道是RMAN和目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的I/O类型
通道控制命令可以用来:
控制RMAN使用的O/S资源
影响并行度
指定I/O带宽的限制值(设置limit read rate参数)
定义备份片大小的限制(设置limit kbytes)
指定当前打开文件的限制值(设置limit maxopenfiles)
14. Report & list commands
14.1. List
list命令查询恢复目录并且产生格式化的查询内容:
RMAN> list backupset of datafile 1;
Key File Type LV Completion_time Ckp SCN Ckp Time
------- ---- ------------ -- --------------- ---------- --------
165 1 Full Oct 03 11:24 32022 Oct 03 11:24
208 1 Full Oct 24 14:27 52059 Oct 24 14:26
219 1 Full Oct 24 14:31 52061 Oct 24 14:31
<< other entries here >>
RMAN> list backupset of archivelog all;
Key Thrd Seq Completion time
------- ---- ------- ---------------
179 1 94 Oct 03 11:26
179 1 95 Oct 03 11:26
<< other entries here >>
14.2. Report
REPORT命令同样可以查询恢复目录,但是REPORT命令语法可以构建获得更为有用的信息的指令,REPORT命令输出可以保存到消息日志文件中,但是必须在连接恢复目录时指定MSGLOG或者LOG选项。
可以列出所有数据库中不能恢复的文件列表:
RMAN> report unrecoverable database;
显示全部数据文件:
RMAN> report schema;
RMAN-03022:正在编译命令:report 数据库模式报表
文件 千字节 表空间 RB segs 名称
1 121472 SYSTEM YES D:\ORACLE\ORADATA\HIS\SYSTEM01.DBF
2 327680 RBS YES D:\ORACLE\ORADATA\HIS\RBS01.DBF
3 110592 USERS NO D:\ORACLE\ORADATA\HIS\USERS01.DBF
4 73728 TEMP NO D:\ORACLE\ORADATA\HIS\TEMP01.DBF
5 12288 TOOLS NO D:\ORACLE\ORADATA\HIS\TOOLS01.DBF
6 59392 INDX NO D:\ORACLE\ORADATA\HIS\INDX01.DBF
15. 小提示
经常同步恢复目录
确认删除不需要的归档日志
二、rman总结
备份策略简单原则
rman作为oracle备份最为方便的工具,以下就总结几条常用的命令,希望能方便大家,也希望可以申请授权:
1、首先使用rman前,需要建一个目录数据库
2、create tablespce rman datafile '/data/oradata/test/rman.dbf' size 20m;
3、create user rman identified by rman default tablespace rman temporary tablespace temp;
4、grant connect,resource,recovery_catalog_ower to rman;
以上建库和建用户基本成功,接着:
1、rman target sys/manager@ora8 catalog rman/rman@rman
2、register database (同步数据库,如果数据库做了alter database open resetlogs,就需要reset database,如果有库结构变化,就需要
resync catalog)
3、create script back {
allocate channel n1 type disk;
backup database
format '/data/backup/ora8_%d_%s_%p';
release channel n1;}
4、如果是备份固定的文件或表空间也可以
create script back_file{
allocate channel n1 type disk;
copy
datafile 4 to '/data/backup/users.dbf';
release channel n1;}
create script back_tablespace{
allocate channel m1 type disk;
backup tablespace users
format '/data/backup/users_%t_%s_%p';
release channel n1;}
使用copy就是文件镜像保存,使用backup就是用oracle专有的格式保存,支持压缩等等,此处就不细说了!
5、执行备份
run{execute script back;}
等等!
以上说了备份数据库,下面是恢复数据库
1、rman target sys/manager@ora8 catalog rman/rman@rman
2、run{
allcote channel n1 type disk;
sql "alter tablespce users offline immediate";
restore tablespace users;
recover tablespace users;
sql "alter tablespace user online";
release channel n1;}
3、run{
allocate channel n1 type disk;
restore database;
recover database;
sql "alter database open resetlogs";
release channel n1;}
4、run{
allocate channel n1 type disk;
restore datafile 4;
release channel n1;}
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/