問題描述:
Oracle自動備份腳本的實現(xiàn)。
錯誤提示1:
Message file RMAN.msb not found
Verify that Oracle_HOME is set properly
。。。。。。
錯誤原因:
自動執(zhí)行的不能夠識別相應(yīng)的命令,需要在自動備份腳本中顯式的聲明Oracle的環(huán)境變量。
錯誤提示2:
standard in must be a tty
。。。。。。
錯誤原因:
不能在cron使用su或者管道等操作,必須將su命令移動到相關(guān)的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腳本調(diào)用的cmdfile是在同一個目錄下就可以直接使用文件名或者直接使用./
正確示例代碼:
1、#cron文件
0 12,18 * * * /home/Oracle/bak_sh/backup_ar.sh
#表示每天12,18點對數(shù)據(jù)庫歸檔日至進行全備份
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的環(huán)境。
2、我們做的cron測試:
實例:
Vi /etc/cron.minly/new.sh
內(nèi)容:
Su – Oracle –c “/home/Oracle/mginfo.sh”
Vi /home/Oracle/mginfo.sh
內(nèi)容:
Exp mginfotech/mginfotech file=mginfotech.dmp log=mginfotech.log
Vi /etc/crontab
內(nèi)容:
59 23 * * * root run-parts /etc/cron.minly
每晚23:59分鐘執(zhí)行
cron中無法讀取環(huán)境變量
在shell中顯示地export環(huán)境變量
export Oracle_HOME=/opt/ora9/product/9.2
export Oracle_SID=Oracle
export NLS_LANG=xxxxx
然后再試
更多信息請查看IT技術(shù)專欄