标题: [文本处理] 批处理怎样调用rman命令备份到自动生成的目录? [打印本页]
作者: ksly1227 时间: 2012-3-3 09:15 标题: 批处理怎样调用rman命令备份到自动生成的目录?
windown下脚本咋实现,求高手解决
linux 下脚本- #!/bin/bash
-
- days=`date +%F`
- mkdir /u01/app/oracle/backup/"$days"
- $ORACLE_HOME/bin/rman target / <<A
- backup current controlfile format '/u01/app/oracle/backup/$days/control%U';
- 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.
作者: ksly1227 时间: 2012-3-3 10:07
自己写下 路径报错
bk.bat- rem script:fulbk
- rem author:sun
- rem date:2012-2-16
- cd D:\bk\full
- if not exist %date:~0,10% mkdir %date:~0,10%
- set days=%date:~0,10%
- set oracle_sid=test
- set bkpath=D:\bk\full\%days%
- cd %bkpath%
- rman target / cmdfile='d:\bk\fulbk.rcv' log='d:\bk\fullbk.log'
- exit
复制代码
fullbk.rcv- run {
- allocate channel c1 device type disk format='%bkpath%\full_%U';
- backup incremental level 0 database include current controlfile plus archivelog delete input;
- delete noprompt obsolete;
- release channel c1;
- }
复制代码
报错信息如下
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) 系统找不到指定的路径
作者: find 时间: 2012-3-3 12:38
回复 2# ksly1227
文件fullbk.rcv里面变量%bkpath%,系统不知道它是什么。
作者: ksly1227 时间: 2012-3-3 19:18
变量%bkpath%确实没识别出来
下面写的if不起作用啊,在脚本里已指出,日期判断不好搞啊,要写3个bat文件,全备,差异,累计
我也来个交互式的,日期判断不好搞啊,要写3个bat文件,全备,差异,累计- @set ORACLE_HOME=G:\oracle\product\10.2.0\db_1
- @rem echo %ORACLE_HOME%
- @set ORACLE_SID=test
- @rem echo %ORACLE_SID%
- @set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
- @rem echo %NLS_LANG%
- @set PATH=%ORACLE_HOME%\bin
- @rem echo %PATH%
- @set RMAN=%ORACLE_HOME%\bin\rman.exe
- @set date=%date:~0,10%
- @set BACKUP_DIR=D:\bk\full\%date%
- @IF NOT EXIST %BACKUP_DIR% (
- mkdir %BACKUP_DIR%
- )
- @set RQ=%date:~4,10%
- @set RMAN_LOG_FILE=%BACKUP_DIR%\rman_%RQ%.log
- @set DAY=%date:~13,14%
复制代码
-------------------------------------------------------------------------------------- @if "%DAY%" EQU "五" (
- set BACKUPTYPE=incremental level 1 database
-
- set NAME=L1_%%d_%%T_%%s
- set ARCHIVE=L1_%%d_%%T
- )
复制代码
----------------------------------------------------------------------------------
上面那个判断有点小问题,操作系统win2003的,是不是win版本步同批处理命令也不同- set BACKUPTYPE=incremental level 0 database
- set NAME=full05_%%d_%%T_%%U
- set ARCHIVE=arch_%%d_%%T_%%U
- set CTL=ctl_%%d_%%T_%%U
- @(
- echo run {
- echo allocate channel c1 type disk;
- echo sql "ALTER SYSTEM ARCHIVE LOG CURRENT";
- echo backup %BACKUPTYPE% format '%BACKUP_DIR%\%NAME%';
- echo backup format '%BACKUP_DIR%\%ARCHIVE%' archivelog all delete all input;
- echo backup current controlfile format '%BACKUP_DIR%\%CTL%';
- echo crosscheck backup;
- echo delete noprompt obsolete;
- echo release channel c1;
- echo }
- ) | %RMAN% target / msglog '%RMAN_LOG_FILE%'
复制代码
作者: find 时间: 2012-3-3 20:47
回复 4# ksly1227
不同的操作系统里面,%date%系统变量的内容是不同的,参考:
http://www.bathome.net/thread-3328-1-1.html
作者: ksly1227 时间: 2012-3-4 03:29
版主大人勤苦啦,把我的格式重新修改下
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |