Oracle 备份批处理文件

Oracle backup batch file

请教我备份Oracle 数据库12c 的脚本。我附上了带有代码和 cmd 屏幕的图片。 当我 运行 这个脚本时,变量已经设置好,连接到数据库,然后 RMAN 什么也没做。任何解决方案?谢谢。

@echo off
echo Automatic Backup Oracle
pushd .
SET ORACLE_HOME=C:\app\oracle\product.2.0\dbhome_1
SET ORACLE_SID=ORCL
echo ----------------------------------------------------
echo ORACLE_HOME : %ORACLE_HOME%
echo ORACLE_SID  : %ORACLE_SID%
echo ----------------------------------------------------
RMAN TARGET system/password 
run {
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:\backup\%F';
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'c:\backup\%d_%T_%u';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'c:\backup\SNCFORCL.ORA';
}
run {
backup database;
backup archivelog all delete input;
}    
PAUSE

当我 运行 这个脚本时,设置了变量,它连接到数据库,然后 RMAN 什么都不做。

此图中为 cmd 结果:

我做错了什么?

就像 Compo 所说的那样,将您的 RMAN 脚本放入一个 .rcv 文件中,然后使用此命令 运行 它,就像您上面的命令一样,但带有 @<rcv>,也许日志记录会很好:

RMAN TARGET / @myRMANbackup.rcv log=myRMANlogfile.log

您需要分成两个文件:批处理文件和 RMAN 脚本

批处理文件:backup.bat

@echo off
echo Automatic Backup Oracle
pushd .
SET ORACLE_HOME=C:\app\oracle\product.2.0\dbhome_1
SET ORACLE_SID=ORCL
echo ----------------------------------------------------
echo ORACLE_HOME : %ORACLE_HOME%
echo ORACLE_SID  : %ORACLE_SID%
echo ----------------------------------------------------
RMAN TARGET / @file.rman log=backup.log

脚本 RMAN 名为 file.rman 或其他名称

run {
backup database;
backup archivelog all delete input;
} 

这部分设置:

CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'c:\backup\%F';
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'c:\backup\%d_%T_%u';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'c:\backup\SNCFORCL.ORA';

可以从脚本中删除并且 运行 每个银行一次。 一旦配置,设置是永久性的。

因此,您的脚本需要两个文件:backup.batfile.rman