oracle的rman备份详解

Oracle IT敢客 2年前 (2016-11-03) 8850次浏览 已收录 1个评论 扫描二维码

一、增量备份考虑,使用 rman 进行增量备份。

1、先查询是否开启了归档模式,sqlplus / as sysdba 进入,用 archive log list;查询是否开启了归档。也可以使用 select log_mode from v$database;查看是否开启了归档;

2、若为非归档模式,则需要开启归档:

  (1)正常关闭数据库 shutdown Normal /transactional/immediate
  (2)startup mount 阶段
  (3)alter database archivelog;
  (4)alter database open;

3、查看归档文件的路径已经归档文件的最大容量,用

show parameter recovery

4、查看归档文件一些相关设置

 

show parameter log_archive;

5、优化归档的一些参数:

  (1)开启自动归档

alter system set log_archive_start = true scope=spfile;

  (2)优化归档线程数

alter system set log_archive_max_processes = 5;

  (3)更改归档日志文件格式

alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

  (4)更改归档日志文件的路径

alter system set log_archive_dest_1='location=e:/oracle/archivelog/log1/archive_log';
alter system set log_archive_dest_2='location=e:/oracle/archivelog/log2/archive_log';
alter system archive log current;

      然后去 e:/oracle/archivelog/log1/目录下查看是否有新的日志生成。

      如果想改回默认的闪回区,

alter system set log_archive_dest_1='' scope=both;

  (5)更改归档日志文件的最大大小

alter system set db_recovery_file_dest_size=30G;

  (6)增量备份配置:

      a、设置自动备份开

CONFIGURE CONTROLFILE AUTOBACKUP ON;

      b、设置备份控制文件

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:/oracle/rman/bak/ctf/%d_ctf_bak_%F';

      c、设置行度为 2 且压缩备份集的方式备份到磁盘

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;

      d、并行备份数据文件

CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk1/%d_datafile_bak_%U';

      e、并行备份数据文件

CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk2/%d_datafile_bak_%U';

      f、备份全库

backup incremental level 0 database plus archivelog;

      g、增量 level1 备份

backup incremental level 1 database plus archivelog;

  (7)数据恢复

a、用进入 rman,rman target /
b、set dbid=xxxxx;dbid 为备份的控制文件中的那串数字 1420452515
c、startup nomount;
d、恢复 spfile 文件 restore spfile to 'D:oracleproduct.2.0dbhome_1dbsinit.ora' from 'D:manakctfORCL_CTF_BAK_C-1420452515-20151124-01';
e、shutdown immediate;&& startup nomount;
f、恢复控制文件 restore controlfile from 'D:manakctfORCL_CTF_BAK_C-1420452515-20151124-01';
g、alter database mount;
h、检查备份文件是否有缺失 crosscheck backup;
i、恢复数据文件 restore database;
j、刷新 SCN 一致 recover database;
k、alter database open resetlogs;

  (8)数据备份脚本内容。

每一个 run{}的内容保存为一个 sql 文件。

run{
  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;#保留策略 10 天
  CONFIGURE RETENTION POLICY TO REDUNDANCY 10;#保留策略为 10 份
  CONFIGURE CONTROLFILE AUTOBACKUP ON;#控制文件配置自动备份开启
  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:/oracle/rman/bak/ctf/%d_controlfile_bak_%F';#配置自动备份控制文件的格式
  CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;#配置开启并行备份
  CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk1/%d_datafile_bak_%U';#配置通道 1 自动备份路径和格式
  CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk2/%d_datafile_bak_%U';#配置通道 2 自动备份路径和格式
  backup incremental level 0 database plus archivelog;#增量备份基础:level 0
  backup incremental level 1 database plus archivelog;#差异增量备份:level 1
  backup incremental level 1 cumulative database plus archivelog;#累积增量备份:level 1,和上面只用一个就好了,最好不要重复使用差异和累积备份
  backup incremental level 2 database plus archivelog;#差异增量备份:level 2
  backup incremental level 2 cumulative database plus archivelog;#累积增量备份:level 2
  sql 'alter system archive log current';#归档当前的重做日志文件
  backup archivelog all delete input; #删除已备份的归档日志
  report obsolete;#列出 rman 资料库中能够被删除的全备份、数据文件拷贝和归档日志记录。
  crosscheck backup;#核对数据库、表空间、数据文件、控制文件、归档日志、SPFILE 的备份集
  delete noprompt expired backup;#不提示,删除的是那些本来 RMAN 以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是 RMAN 资料库中的记录;
  delete noprompt obsolete;#不提示,删除旧于备份保留策略定义的备份数据同时也更新 RMAN 资料库以及控制文件。
  delete noprompt ARCHIVELOG until time 'SYSDATE-10';#删除 10 天以前的所有归档日志
 }

全库备份脚本 1

run
{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;
allocate channel d1 type disk;
allocate channel d2 type disk;
backup current controlfile format 'E:autobackupctl_%d_%s_%p_%u.BKP';
backup full database format 'E:autobackupull_%d_%s_%p_%u.BKP';
sql 'alter system archive log current';
backup archivelog all format 'E:autobackuplog_%d_%s_%p_%u.ARC' delete all input;
release channel d1;
release channel d2;
report obsolete;
crosscheck backup;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt ARCHIVELOG until time 'SYSDATE-10';
}

全库备份脚本 2

run{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 allocate channel c3 type disk;
 backup full tag 'dbfull' format '/u01/oradata/backup/full%u_%s_%p' database include current controlfile;
 sql 'alter system archive log current';
 backup filesperset 3 format '/u01/oradata/backup/arch%u_%s_%p' archivelog all delete input;
 release channel c1;
 release channel c2;
 release channel c3;
 }

零级备份脚本 1

run{
  CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
  CONFIGURE CONTROLFILE AUTOBACKUP ON;
  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:/oracle/rman/bak/ctf/%d_controlfile_bak_%F';
  CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
  CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk1/%d_datafile_bak_%U';
  CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk2/%d_datafile_bak_%U';
  backup incremental level 0 database plus archivelog;
  sql 'alter system archive log current';
  backup archivelog all delete input; 
  report obsolete;
  crosscheck backup;
  delete noprompt expired backup;
  delete noprompt obsolete;
  delete noprompt ARCHIVELOG until time 'SYSDATE-10';
 }

零级备份脚本 2

run{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 allocate channel c3 type disk;
 backup incremental level 0 tag 'db0' format'/u01/oradata/backup/db0%u_%s_%p' database skip readonly;
 sql 'alter system archive log current';
 backup filesperset 3 format '/u01/oradata/backup/arch%u_%s_%p' archivelog all delete input;
 release channel c1;
 release channel c2;
 release channel c3;
 }

一级备份脚本 1

run{
  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;
  CONFIGURE CONTROLFILE AUTOBACKUP ON;
  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:/oracle/rman/bak/ctf/%d_controlfile_bak_%F';
  CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
  CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk1/%d_datafile_bak_%U';
  CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk2/%d_datafile_bak_%U';
  backup incremental level 1 database plus archivelog;
  sql 'alter system archive log current';
  backup archivelog all delete input; 
  report obsolete;
  crosscheck backup;
  delete noprompt expired backup;
  delete noprompt obsolete;
  delete noprompt ARCHIVELOG until time 'SYSDATE-10';
 }

一级备份脚本 2

 run{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 allocate channel c3 type disk;
 backup incremental level 1 tag 'db1' format'/u01/oradata/backup/db1%u_%s_%p' database skip readonly;
 sql 'alter system archive log current';
 backup filesperset 3 format '/u01/oradata/backup/arch%u_%s_%p' archivelog all delete input; 
 release channel c1;
 release channel c2;
 release channel c3;
 }

二级备份脚本 1

run{
  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;
  CONFIGURE CONTROLFILE AUTOBACKUP ON;
  CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'e:/oracle/rman/bak/ctf/%d_controlfile_bak_%F';
  CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;
  CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk1/%d_datafile_bak_%U';
  CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   'e:/oracle/rman/bak/disk2/%d_datafile_bak_%U';
  backup incremental level 2 database plus archivelog;
  sql 'alter system archive log current';
  backup archivelog all delete input;
  report obsolete;
  crosscheck backup;
  delete noprompt expired backup;
  delete noprompt obsolete;
  delete noprompt ARCHIVELOG until time 'SYSDATE-10';
 }

二级备份脚本 2

run{
 allocate channel c1 type disk;
 allocate channel c2 type disk;
 allocate channel c3 type disk;
 backup incremental level 2 tag 'db2' format'/u01/oradata/backup/db2%u_%s_%p' database skip readonly;
 sql 'alter system archive log current';
 backup filesperset 3 format '/u01/oradata/backup/arch%u_%s_%p' archivelog all delete input;
 release channel c1;
 release channel c2;
 release channel c3;
 }

 


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:oracle 的 rman 备份详解
喜欢 (157)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 写的不错(*๓´╰╯`๓)♡,受用了! :wink:
    山谷2018-04-14 22:33 回复 Linux | Chrome 65.0.3325.109