Oracle备份批处理文件

问题描述 投票:1回答:2

我请求您提供有关备份Oracle数据库12c的脚本的建议。我用图片和cmd屏幕附上图片。当我运行这个脚本时,变量正在设置,连接到数据库,然后RMAN什么也没做。有解决方案吗谢谢。

@echo off
echo Automatic Backup Oracle
pushd .
SET ORACLE_HOME=C:\app\oracle\product\12.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结果:

我究竟做错了什么?

oracle batch-file cmd database-backups
2个回答
1
投票

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

批处理文件:backup.bat

@echo off
echo Automatic Backup Oracle
pushd .
SET ORACLE_HOME=C:\app\oracle\product\12.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.bat和file.rman


1
投票

就像Compo说的那样,把你的RMAN脚本放到一个.rcv文件中并使用这个命令运行它,就像你上面的那样,但是使用@<rcv>,也许日志记录会很好:

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

© www.soinside.com 2019 - 2024. All rights reserved.