问题描述:

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 databasecatalog      quoted-string  connect-string for recovery catalognocatalog    none           if specified, then no recovery catalogcmdfile      quoted-string  name of input command filelog          quoted-string  name of output message log filetrace        quoted-string  name of output debugging message log fileappend       none           if specified, log is opened in append modedebug        optional-args  activate debuggingmsgno        none           show RMAN-nnnn prefix for all messagessend         quoted-string  send a command to the media managerpipe         string         building block for pipe namestimeout      integer        number of seconds to wait for pipe inputchecksyntax  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

然后再试




(t116)