Oracle RAMN 备份解决方案一例

 以前在博客里面介绍了RMAN备份脚本一列分享,通过RMAN备份到本地路径,然后通过FTP将备份文件上传到FTP服务器。 下面简单介绍另外一例RMAN备份解决方案,下面是我简单画的一个图(很少画图,感觉有点粗制滥造)。

首先将数据库备份到本地服务器的一个目录下(目录是按日期格式生成,本地备份保留周期视存储情况而定.一般一天即可)。

然后将备份文件通过Symantec Backup Exec 2012 Agent 将本地备份上传到磁带设备(容灾备份,磁带备份保留90天)。

最后清理本地备份路径下的备份。

如上所示,只有三个步骤,整体思路非常简单,下面介绍一下实施的具体脚本

首先介绍一下备份脚本backup_db_xxxx.sh (注意xxx为数据库实例名称,脚本里面很多xxx需要根据具体场景进行替换,例如实例名称、邮件地址等)

   1: #********************************************************************************
   2: #  FileName     :               backup_db_xxxx.sh 
   3: #********************************************************************************
   4: #  Author       :               Tommy
   5: #  CreateDate   :               2012-07-18
   6: #  Description  :               this script is backup the oracle database by rman
   7: #********************************************************************************
   8: #   Parameters  :                         参数说明
   9: #********************************************************************************
  10: #                                    此脚本无参数,直接调用即可
  11: #********************************************************************************
  12: #      Modified Date    Modified User     Version            Modified Reason
  13: #********************************************************************************
  14: #      2014-04-26         Kerry           V1.0.1       脚本部分地方、调整脚本格式
  15: # 
  16: #********************************************************************************
  17:  
  18:  
  19:  
  20: #REM - USER DEFINED VARIABLES -
  21: export DATESTAMP=`date '+%F'`
  22:  
  23: #REM - Oracle specific settings: -
  24: . /home/oracle/.bash_profile
  25: export CATALOG=NOCATALOG
  26:  
  27: #REM - Specify the Logfiles -
  28: export BACKUP_FULL_LOG=/u04/backup/backuplogs/rman_backup_db_xxx_$DATESTAMP.log
  29:  
  30: #REM - BACKUP SECTION -
  31: echo $BACKUP_FULL_LOG
  32: rman target / $CATALOG cmdfile=/u04/backup/scripts/backup_db_xxx.rcv log=$BACKUP_FULL_LOG
  33:  
  34: EMAILTMP=/u04/backup/backuplogs/rman_backup_db_xxx_$DATESTAMP.TMP
  35:  
  36: ######################## config email parameters ##########################
  37: echo 'Content-Type: text/html' > $EMAILTMP
  38: echo 'To: xxx@xxx.com, xxx@xxx.com,xxx@xxx.com' >> $EMAILTMP
  39: echo 'Subject : Backup Status - xxxx(RMAN hot backup)' >> $EMAILTMP
  40: echo '<pre style="font-family: courier; font-size: 9pt">' >> $EMAILTMP
  41: ###########################################################################
  42:  
  43: echo "=======================================================" >> $EMAILTMP
  44: echo "================ Daily Backup for xxxx ================" >> $EMAILTMP
  45: echo "=======================================================" >> $EMAILTMP
  46: echo " " >> $EMAILTMP 
  47:  
  48: cat $BACKUP_FULL_LOG >> $EMAILTMP 2>&1
  49: echo " " >> $EMAILTMP 
  50: echo "================ End of Rman Backup ==================" >> $EMAILTMP
  51: echo "======================================================" >> $EMAILTMP
  52:  
  53: /usr/sbin/sendmail -t -f "BackupAdmin" < $EMAILTMP
  54: rm $EMAILTMP

 

backup_db_xxx.rcv 文件其实RMAN的命令文件(backup_db_xxxx.sh 里面调用)。如下所示

   1: run {
   2: CONFIGURE RETENTION POLICY TO REDUNDANCY 2; # default
   3: CONFIGURE BACKUP OPTIMIZATION ON;
   4: CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
   5: CONFIGURE CONTROLFILE AUTOBACKUP ON;
   6: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u04/backup/backupsets/ora_cf%F';
   7: CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
   8: CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
   9: CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
  10: CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u04/backup/backupsets/ora_df%t_s%s_s%p';
  11: CONFIGURE MAXSETSIZE TO UNLIMITED; # default
  12: CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
  13: CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
  14: CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
  15: sql 'alter system archive log current';
  16: backup as compressed backupset database plus archivelog delete input;
  17: copy current controlfile to '/u04/backup/backupsets/controlfile.copy';
  18: }
  19: exit

delete_obj_xxxx.sh  文件如下所示:

   1: #*****************************************************************************************
   2: #  FileName     :               delete_obj_xxxx.sh 
   3: #*****************************************************************************************
   4: #  Author       :               Tommy
   5: #  CreateDate   :               2012-07-18
   6: #  Description  :               this script is delete the obsolete object through rman
   7: #*****************************************************************************************
   8: #   Parameters  :                                             参数说明
   9: #*****************************************************************************************
  10: #                                                                此脚本无参数,直接调用即可
  11: #*****************************************************************************************
  12: #      Modified Date    Modified User     Version            Modified Reason
  13: #*****************************************************************************************
  14: #      2014-04-26         Kerry           V1.0.1         修改脚本部分地方、调整脚本格式
  15: # 
  16: #                               
  17: #                               
  18: #*****************************************************************************************
  19:  
  20:  
  21: #REM - USER DEFINED VARIABLES -
  22: export DATESTAMP=`date '+%F'`
  23:  
  24: #REM - Oracle specific settings: -
  25: . /home/oracle/.bash_profile
  26: export CATALOG=NOCATALOG
  27:  
  28: #REM - Specified the logfiles -
  29: export BACKUP_FULL_LOG=/u04/backup/backuplogs/rman_delete_ob_xxx_$DATESTAMP.log
  30:  
  31: #REM - BACKUP SECTION -
  32: echo $BACKUP_FULL_LOG
  33: rman target / $CATALOG cmdfile=/u04/backup/scripts/delete_ob_xxx.rcv log=$BACKUP_FULL_LOG

/u04/backup/scripts/delete_ob_xxx.rcv文件为RMAN的cmdfile,如下所示

   1: run {
   2: CONFIGURE RETENTION POLICY TO REDUNDANCY 2; # default
   3: CONFIGURE BACKUP OPTIMIZATION ON;
   4: CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
   5: CONFIGURE CONTROLFILE AUTOBACKUP ON;
   6: CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u04/backup/backupsets/ora_cf%F';
   7: CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
   8: CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
   9: CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
  10: CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u04/backup/backupsets/ora_df%t_s%s_s%p';
  11: CONFIGURE MAXSETSIZE TO UNLIMITED; # default
  12: CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
  13: CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
  14: CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
  15: sql 'alter system archive log current';
  16: delete obsolete;
  17: }

然后再crontab作业里面配置作业

15 00 * * * /u04/backup/scripts/backup_db_xxx.sh >/dev/null 2>&1

00 08 * * * /u04/backup/scripts/delete_ob_xxx.sh >/dev/null 2>&1

也许会有人问,不是还有Symantec Backup Exec Agent 将备份文件上带吗,其实关于这个,首先需要在Linux服务器安装Symantec Backup Exec 2012 Agent,这个可以参考我博客Symantec Backup Exec 2012 Agent For Linux安装。在配置文件指定Symantec Backup Exec Server,然后只需要在服务器设定一个作业定时备份文件即可。感觉没有啥可以说的。

时间: 2025-01-20 17:19:23

Oracle RAMN 备份解决方案一例的相关文章

linux下oracle自动备份脚本

linux下oracle自动备份脚本  vi /home/oracle/backup.sh   //编写脚本 以下为脚本内容 time=` date +"%Y%m%d%H%M" ` //变量time 获取当前系统时间 su - oracle -c "exp hbskjt_0113/password owner=hbskjt_0113 file=/home/oracle/hbskjt_$time.dmp"  //导库脚本 cd /home/oracle tar zcv

Oracle OS备份了解

Oracle OS备份是一种常见的备份方法,下面就为您介绍两种Oracle OS备份的方式--冷备份(Cold backup)与热备份(Hot backup). Oracle OS备份: Oracle OS备份有两类,冷备份(Cold backup)与热备份(Hot backup),操作系统备份与以上的逻辑备份有本质的区别.逻辑备份提取数据库的数据内容,而不备份物理数据块.而操作系统备份则是拷贝整个的数据文件. i.冷备份 在文件级备份开始前数据库必须彻底关闭.关闭操作必须用带有normal.i

Linux中Oracle数据库备份_oracle

先来介绍一些不使用脚本我们直接使用命令备份与还原oracle数据库Oracle数据备份:步骤 1 备份用户数据.1.使用linux系统下的数据库管理员账号连接linux终端.2. 执行以下语句,创建"bak_dir"文件夹. 复制代码 代码如下:  mkdir bak_dir  3. 执行以下语句,为"bak_dir"文件夹赋予读.写和执行权限. 复制代码 代码如下:  chmod 777 bak_dir  4. 执行以下语句,以sysdba用户登录oracle数据

Linux中Oracle数据库备份方法

先来介绍一些不使用脚本我们直接使用命令备份与还原oracle数据库 Oracle数据备份: 步骤 1 备份用户数据. 1.使用linux系统下的数据库管理员账号连接linux终端. 2. 执行以下语句,创建"bak_dir"文件夹.  代码如下 复制代码  mkdir bak_dir 3. 执行以下语句,为"bak_dir"文件夹赋予读.写和执行权限.  代码如下 复制代码  chmod 777 bak_dir 4. 执行以下语句,以sysdba用户登录oracle

Oracle自动备份及自动备份步骤_oracle

数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dmp进行保存. 一.备份脚本 1.初始化变量,记录开始日志 #变量 sysname=填写自己的系统名称 syspath=/home/oracle/databak/$sysname v_date=$(date '+%Y%m%d%H%M%

云安全:安全云备份部署用例分析

安全云备份受到越来越多人的关注,因为它可以让企业在部署异地备份的同时,将成本控制在最低水平.在本文中,我们将分析一个安全云备份的具体用例,文章中我们所描述的系统由这些部分组成:企业内部复制服务器.Porticor Cloud Security以及Amazon S3作为最终备份目的地. 安全云备份:业务需要 在这个用例中,企业正苦苦挣扎于效率低下且成本高昂的异地备份基础设施中,这个基础设施需要管理日益扩大的数据库.异地服务器场的操作和维护成本非常高,而磁带和恢复方法非常耗时间.此外,该公司在数据的

Oracle数据库备份技巧

  利用下面的列出的技巧来确保你不会在每周一次的数据库备份过程中忘记关键步骤. 每周一次备份主数据库.如果你创建.修改或者停止一个数据库,添加新的SQL Server消息,添加或者停止连接服务器,或者添加记录设备,那就进行手工备份. 每天备份一次msdb数据库.它一般非常小,但很重要,因为它包含了所有的SQL Server工作.操作和计划任务. 只有当你修改它时,才有必要备份模型数据库. 用SQL Server Agent来安排你的备份工作的时间表. 如果在你的生产(production)环境中

Oracle数据库备份策略的相关概念及使用

这篇论坛文章主要介绍了Oracle数据库备份策略的相关概念及使用中的注意事项,详细内容请大家参考下文 一.了解备份的重要性 可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片.主板电路.内存.电源等任何一项不能正常工作,都会导致计算机系统不能正常工作.当然,这些损坏可以修复,不会导致应用和数据的损坏.但是,如果计算机的硬盘损坏,将会导致数据丢失,此时必须用备份恢复数据. 其实,在我们的现实

Oracle自动备份数据

Oracle自动备份数据 相信为数不少的系统管理员每天都在做着同一样的工作--对数据进行备份.一旦哪一天疏忽了,而这一天系统又恰恰发生了故障,需要进行数据恢复,那么此时就无能为力了.假如每天设定一个固定的时间,系统自动进行备份,那该多好啊!下面笔者结合实践经验,谈一谈UNIX环境下Oracle数据库的自动备份,以起到抛砖引玉的作用. 我们计划让数据库在晚上23点做export导出备份,在凌晨2点将备份文件拷贝到磁带上,在凌晨4点将备份文件拷贝到另一台UNIX机器上,为此我们可进行如下操作: 一.