
mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\log"mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\bak_files"mkdir "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily\control_files_bak"pushd "D:\dba_files\hemes_db_bak\HEMESDB1\full_daily"write ""> HEMESDB1_BACKUP_FULL_DAILY_by_frk.batwrite ""> HEMESDB1_BACKUP_FULL_DAILY_by_frk.rman

SYS@(10.2)> archive log list数据库日志模式非存档模式自动存档禁用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列734当前日志序列736连接到: OracleDatabase10gEnterpriseEditionRelease10.2.0.5.0-64bitProduction With the Partitioning, OLAP,DataMiningandRealApplicationTesting options SYS@(10.2)> alter system checkpoint; 系统已更改。 SYS@(10.2)> alter system flush shared_pool; 系统已更改。 SYS@(10.2)> alter system flush buffer_cache; 系统已更改。 SYS@(10.2)> shutdown immediate;
log_archive_dest_1=‘LOCATION=F:\hXXdb1_archive_log‘SQL> startup mount;ORACLE 例程已经启动。修改数据库位模式SQL> alter database archivelog;数据库已更改。SQL> alter database open;数据库已更改。│ HXXXSDB1_BACKUP_FULL_DAILY_by_frk.bat│ HXXXSDB1_BACKUP_FULL_DAILY_by_frk.rman│├─bak_files│├─control_files_bak│└─logRUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;#备份集有效时间为7天。
CONFIGURE CONTROLFILE AUTOBACKUP ON;#自动备份控制文件。
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\%d%F_ctl.bak‘;
##控制文件的备份路径以及格式。
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT ‘D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\%d%T%U‘;
BACKUP AS COMPRESSED BACKUPSET DATABASE SKIP INACCESSIBLE format=‘D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\%d%T%U_data.bak‘ FILESPERSET 20
##开启CH1通道,压缩的方式备份整个DB,并且跳过不可读的文件
PLUS ARCHIVELOG FILESPERSET 20##同时备份归档日志
DELETE ALL INPUT;##备份完归档日志后,将其清空
RELEASE CHANNEL CH1;##释放CH1通道
}
CROSSCHECK BACKUPSET;##交叉校验备份集
DELETE NOPROMPT OBSOLETE;##删除过期的备份集
接着完成bat脚本。
rem 整体的思路为
rem 1、oracle的进程是否存在,因为是windows高可用,双机状态
rem 2、rman脚本全备份至本地磁盘
rem 3、RoBocopy拷贝全备份至存储,以达成两地备份
rem 4、删除15天之前的备份文件
rem
rem 注释RoBoCopy D:\dba_files\hXXXs_db_bak\HXXXDB1\full_daily\bak_files\ F:\hXXXsdb1_backup /E /MT:16/MAXAGE:1
rem 把D盘的对应内容拷贝至F盘,/E 包含子文件夹/MT 线程数量,/MAXAGE 拷贝的文件为最近1天
rem
rem 最后forfiles命令清除15天之前的备份文件,具体参数可以查看forfiles /?帮助
@echo off
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
set oracle_sid=hemesdb1
rem 设置oracle_sid,以及nls_lang
tasklist|find /i "oracle.exe"||exit
rem 判定本机器是否有oracle.exe进程,如果没有则直接退出脚本,不执行后续的备份操作,这样本脚本即可通用于双机实例的环境。
rman target sys/sys的密码@hemesdb1 msglog D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\log\%date:~0,10%.log cmdfile=D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\HXXXSDB1_BACKUP_FULL_DAILY_by_frk.rman
rem 执行rman备份,msglog为log路径,cmdfile则为rman脚本路径
RoBoCopy D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files\ F:\hXXXsdb1_backup\ /E /MT:50/MAXAGE:1
rem RoBocopy拷贝全备份至存储,以达成两地备份,local disk一份,存储一份
forfiles /P F:\hXXXsdb1_backup /D -15/C "cmd /c del @file"
forfiles /P D:\dba_files\hXXXs_db_bak\HXXXSDB1\full_daily\bak_files /D -15/C "cmd /c del @file"
rem 最后forfiles命令清除15天之前的备份文件,具体参数可以查看forfiles /?帮助
exit
原文:http://www.cnblogs.com/dap570/p/hxxxs_ha_2instance_rman_backup_notes.html