[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样调用rman命令备份到自动生成的目录?

windown下脚本咋实现,求高手解决

linux 下脚本
  1. #!/bin/bash
  2. days=`date +%F`
  3. mkdir /u01/app/oracle/backup/"$days"
  4. $ORACLE_HOME/bin/rman target / <<A
  5. backup current controlfile format '/u01/app/oracle/backup/$days/control%U';
  6. A
复制代码
sh backup.sh
Recovery Manager: Release 10.2.0.3.0 - Production on Fri Mar 2 21:18:54 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

RMAN>
Starting backup at 02-MAR-12
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=141 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
channel ORA_DISK_1: starting piece 1 at 02-MAR-12
channel ORA_DISK_1: finished piece 1 at 02-MAR-12
piece handle=/u01/app/oracle/backup/2012-03-02/control0on4t2hv_1_1 tag=TAG20120302T211855 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 02-MAR-12
RMAN>
Recovery Manager complete.

自己写下 路径报错
bk.bat
  1. rem script:fulbk
  2. rem author:sun
  3. rem date:2012-2-16
  4. cd D:\bk\full
  5. if not exist  %date:~0,10%  mkdir %date:~0,10%
  6. set days=%date:~0,10%
  7. set oracle_sid=test
  8. set bkpath=D:\bk\full\%days%
  9. cd %bkpath%
  10. rman target /  cmdfile='d:\bk\fulbk.rcv' log='d:\bk\fullbk.log'
  11. exit
复制代码
fullbk.rcv
  1. run {
  2. allocate channel c1 device type disk format='%bkpath%\full_%U';
  3. backup  incremental level 0 database include current controlfile plus archivelog delete input;
  4. delete noprompt obsolete;
  5. release channel c1;
  6. }
复制代码
报错信息如下
MAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup plus archivelog 命令 (在 03/03/2012 10:05:45 上) 失败
ORA-19504: 无法创建文件"G:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\%BKPATH%\FULL_1EN4UFFM_1_1"
ORA-27040: 文件创建错误, 无法创建文件
OSD-04002: 无法打开文件
O/S-Error: (OS 3) 系统找不到指定的路径

TOP

回复 2# ksly1227


文件fullbk.rcv里面变量%bkpath%,系统不知道它是什么。

TOP

变量%bkpath%确实没识别出来
下面写的if不起作用啊,在脚本里已指出,日期判断不好搞啊,要写3个bat文件,全备,差异,累计


我也来个交互式的,日期判断不好搞啊,要写3个bat文件,全备,差异,累计
  1. @set ORACLE_HOME=G:\oracle\product\10.2.0\db_1
  2. @rem echo %ORACLE_HOME%
  3. @set ORACLE_SID=test
  4. @rem echo %ORACLE_SID%
  5. @set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
  6. @rem echo %NLS_LANG%
  7. @set PATH=%ORACLE_HOME%\bin
  8. @rem echo %PATH%
  9. @set RMAN=%ORACLE_HOME%\bin\rman.exe
  10. @set date=%date:~0,10%
  11. @set BACKUP_DIR=D:\bk\full\%date%
  12. @IF NOT EXIST %BACKUP_DIR% (
  13. mkdir %BACKUP_DIR%
  14. )
  15. @set RQ=%date:~4,10%
  16. @set RMAN_LOG_FILE=%BACKUP_DIR%\rman_%RQ%.log
  17. @set DAY=%date:~13,14%
复制代码
-------------------------------------------------------------------------------------
  1. @if "%DAY%" EQU "五" (
  2. set BACKUPTYPE=incremental level 1 database
  3. set NAME=L1_%%d_%%T_%%s
  4. set ARCHIVE=L1_%%d_%%T
  5. )
复制代码
----------------------------------------------------------------------------------
上面那个判断有点小问题,操作系统win2003的,是不是win版本步同批处理命令也不同
  1. set BACKUPTYPE=incremental level 0 database   
  2. set NAME=full05_%%d_%%T_%%U
  3. set ARCHIVE=arch_%%d_%%T_%%U
  4. set CTL=ctl_%%d_%%T_%%U
  5. @(
  6. echo run {
  7. echo allocate channel c1 type disk;
  8. echo sql "ALTER SYSTEM ARCHIVE LOG CURRENT";
  9. echo backup %BACKUPTYPE%  format '%BACKUP_DIR%\%NAME%';
  10. echo backup format '%BACKUP_DIR%\%ARCHIVE%' archivelog all delete all input;
  11. echo backup current controlfile format '%BACKUP_DIR%\%CTL%';
  12. echo crosscheck backup;
  13. echo delete noprompt obsolete;
  14. echo release channel c1;
  15. echo }
  16. ) | %RMAN% target / msglog '%RMAN_LOG_FILE%'
复制代码

TOP

回复 4# ksly1227


不同的操作系统里面,%date%系统变量的内容是不同的,参考:
http://www.bathome.net/thread-3328-1-1.html

TOP

版主大人勤苦啦,把我的格式重新修改下

TOP

返回列表