程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle數據庫自動備份的實現歷程

Oracle數據庫自動備份的實現歷程

編輯:關於Oracle數據庫

    問題描述:

    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
    nocatalog  none      if specified, then no recovery catalog
    cmdfile   quoted-string name of input command file
    log     quoted-string name of output message log file
    trace    quoted-string name of output debugging message log file
    append    none      if specified, log is opened in append mode
    debug    optional-args activate debugging
    msgno    none      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   integer    number 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

    然後再試

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved