Oracle數(shù)據(jù)庫(kù)自動(dòng)備份的實(shí)現(xiàn)歷程

字號(hào):


    問(wèn)題描述:
    Oracle自動(dòng)備份腳本的實(shí)現(xiàn)。
    錯(cuò)誤提示1:
    Message file RMAN.msb not found
    Verify that Oracle_HOME is set properly
    。。。。。。
    錯(cuò)誤原因:
    自動(dòng)執(zhí)行的不能夠識(shí)別相應(yīng)的命令,需要在自動(dòng)備份腳本中顯式的聲明Oracle的環(huán)境變量。
    錯(cuò)誤提示2:
    standard in must be a tty
    。。。。。。
    錯(cuò)誤原因:
    不能在cron使用su或者管道等操作,必須將su命令移動(dòng)到相關(guān)的shell腳本中。
    錯(cuò)誤提示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"
    。。。。。。
    錯(cuò)誤原因:
    需要在cmdfile中指明絕對(duì)路徑,不能因?yàn)閟hell腳本調(diào)用的cmdfile是在同一個(gè)目錄下就可以直接使用文件名或者直接使用./
    正確示例代碼:
    1、#cron文件
    0 12,18 * * * /home/Oracle/bak_sh/backup_ar.sh
    #表示每天12,18點(diǎn)對(duì)數(shù)據(jù)庫(kù)歸檔日至進(jìn)行全備份
    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測(cè)試:
    實(shí)例:
    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中無(wú)法讀取環(huán)境變量
    在shell中顯示地export環(huán)境變量
    export Oracle_HOME=/opt/ora9/product/9.2
    export Oracle_SID=Oracle
    export NLS_LANG=xxxxx
    然后再試