使用CHECKSYNTAX命令檢查RMAN指令碼是否存在語法錯誤

liglewang發表於2011-09-03

在生產環境中,假如要部署一套RMAN的備份指令碼,那麼對指令碼的測試就是必不可少的環節,Oracle提供了CHECKSYNTAX命令來協助我們在不用實際執行指令碼的情況下檢查指令碼的語法錯誤,如:

[oracle@ligle-db ~]$ rman checksyntax

Recovery Manager: Release 10.2.0.4.0 - Production on Sat Mar 26 03:04:18 2011

Copyright (c) 1982, 2007, Oracle.All rights reserved.

RMAN>

RMAN> run [backup database;]

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00558: error encountered while parsing input commands

RMAN-01006: error signalled during parse

RMAN-02001: unrecognized punctuation symbol "["

再如:

RMAN> run {backup database delete all input;}

The command has no syntax errors

可見,如果在被檢命令中檢測出語法錯誤,那麼就會報錯,如:RMAN-00558

下面再看下檢查RMAN指令碼:

加入在/home/oracle目錄下存放一指令碼cmdfile1,內容是:

restore database;

recover database;

現在執行CHECKSYNTAX命令檢查其語法是否存在問題:

[oracle@ligle-db ~]$ rman CHECKSYNTAX @/home/oracle/cmdfile1

Recovery Manager: Release 10.2.0.4.0 - Production on Sat Mar 26 03:16:48 2011

Copyright (c) 1982, 2007, Oracle.All rights reserved.

RMAN> restore database;

2> recover database;

3>

The cmdfile has no syntax errors

Recovery Manager complete.

如果指令碼中存在錯誤,比如去掉cmdfile1中的“;”,則輸出就會是:

[oracle@ligle-db ~]$ rman CHECKSYNTAX @/home/oracle/cmdfile1

Recovery Manager: Release 10.2.0.4.0 - Production on Sat Mar 26 03:18:43 2011

Copyright (c) 1982, 2007, Oracle.All rights reserved.

RMAN> restore database

2> recover

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-00558: error encountered while parsing input commands

RMAN-01009: syntax error: found "recover": expecting one of: "archivelog, channel, check, controlfile, clone, database, datafile, device, from, force, high, (, preview, ;, skip, spfile, standby, tablespace, until, validate"

RMAN-01007: at line 2 column 1 file: /home/oracle/cmdfile1

--- END ---

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25834554/viewspace-706601/,如需轉載,請註明出處,否則將追究法律責任。

相關文章