问题描述:
Oracle自动备份脚本的实现。
错误提示1:
Message file RMAN.msb not found
Verify that Oracle_HOME is set properly
。。。。。。
错误原因:
自动执行的不能够识别相应的命令,需要在自动备份脚本中显式的声明Oracle的环境变量。
错误提示2:
standard in must be a tty
。。。。。。
错误原因:
不能在cron使用su或者管道等操作,必须将su命令移动到相关的shell脚本中。
错误提示3:
Argument Value Description
-----------------------------------------------------------------------------
target quoted-string connect-string for target database
catalog quoted-string connect-string for recovery catalog
nocatalognone if specified, then no recovery catalog
cmdfile quoted-string name of input command file
log quoted-string name of output message log file
tracequoted-string name of output debugging message log file
append none if specified, log is opened in append mode
debugoptional-args activate debugging
msgnonone show RMAN-nnnn prefix for all messages
send quoted-string send a command to the media manager
pipe string building block for pipe names
timeout integernumber of seconds to wait for pipe input
checksyntax none check the command file for syntax errors
-----------------------------------------------------------------------------
Both single and double quotes (' or ") are accepted for a quoted-string.
Quotes are not required unless the string contains embedded white-space.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00556: could not open CMDFILE "backup_ar.rcv"
。。。。。。
错误原因:
需要在cmdfile中指明绝对路径,不能因为shell脚本调用的cmdfile是在同一个目录下就可以直接使用文件名或者直接使用./
正确示例代码:
1、#cron文件
0 12,18 * * * /home/Oracle/bak_sh/backup_ar.sh
#表示每天12,18点对数据库归档日至进行全备份
2、入口shell文件,文件名:backup_ar.sh
export Oracle_HOME=/home/u01/app/Oracle/Oracle/product/10.2.0/db_1
export Oracle_SID=test
export LANG=en_US.UTF-8
/home/u01/app/Oracle/Oracle/product/10.2.0/db_1/bin/rman cmdfile = backup_ar.rcv
3、rman备份脚本
connect target /
connect catalog rman/rman@rman
run{
allocate channel d1 device type disk;
sql 'alter system archive log current';
backup archivelog all delete input
format '/opt/rmanback/full_%u_%p_%c.ac' filesperset = 3;
release channel d1;
}
解决方法:
1、两种办法
一是用root的crontab,*/2 * * * * a.sh --》su - Oracle -c a.sh
一是在a.sh里加上Oracle的环境。
2、我们做的cron测试:
实例:
Vi /etc/cron.minly/new.sh
内容:
Su – Oracle –c “/home/Oracle/mginfo.sh”
Vi /home/Oracle/mginfo.sh
内容:
Exp mginfotech/mginfotech file=mginfotech.dmp log=mginfotech.log
Vi /etc/crontab
内容:
59 23 * * * root run-parts /etc/cron.minly
每晚23:59分钟执行
cron中无法读取环境变量
在shell中显示地export环境变量
export Oracle_HOME=/opt/ora9/product/9.2
export Oracle_SID=Oracle
export NLS_LANG=xxxxx
然后再试
更多信息请查看IT技术专栏