CRONTAB挪用备份剧本时要注重情形变量的设置是本文我们首要要介绍的内容,我们知道,EXP备份是DBA常规操作之一,尤其是10g以前的版本没有EXPDP,所有的逻辑备份都是经由过程EXP来实现.而将EXP写成SHELL剧本,使之可根柢用也并没有什么出格之处.不外如不美观并非oracle用户执行,而是需要CRONTAB自动许可,那么备份的剧本就有一些要求了. 客户情形使用RMAN CATALOG体例备份,而RMAN的CATALOG数据库采用EXP进行逻辑备份.部署了一个天天7点运行的CRONTAB,挪用执行EXP的SHELL.巡检时发现这个剧本从未真正运行过.- w: {3 W: X6 f: T( @1 u
/app/oracle10g> crontab -l" g3 j2 H) y( P F. T4 d
0 7 * * * /app/oracle10g/rman_catalog_dmp/exp_by_date.sh" k0 W a1 h- ?2 g. d
/app/oracle10g/rman_catalog_dmp> more exp_by_date.sh
5 \6 D, n+ e: Y6 ?: c" V, Z export ORACLE_SID=RMANDB export ORACLE_BASE=/app/oracle10g
: E) ~1 ~, B7 s3 f export ORACLE_HOME=$ORACLE_BASE/product/10.2.0
/ g1 \" r. A# ]6 [8 F) P export NLS_LANG=American_America.ZHS16CGB231280
( F( K* d2 `8 s exp parfile=exp.par file=./rman_catalog.dmp log=./rman_catalog.log- x3 v4 K4 A N* d- t
因为是CRONTAB进行挪用,是以不会使用oracle用户的情形变量,这就需要在shell剧本中添加需要的情形变量的设置,这才能是的EXP呼吁可以正确的运行.剧本中虽然已经设置了一些情形变量,可是仍是不够的.* g) c7 _3 D% \( ^
对于CRONTAB运行SHELL时呈现的错误,可以经由过程用户的mail来获取错误信息:. i7 y0 f- |( z: |5 r P2 ?
/app/oracle10g/rman_catalog_dmp> mail3 M8 \" i, L J+ J) j5 [2 h
From root@acap3 Thu Aug 18 07:00:01 EAT 2011
2 M& T! O. Z0 i4 D Received: (from root@localhost)6 C3 M- X- N$ O# x \$ J
by acap3 (8.9.3 (PHNE_35950)/8.9.3) id HAA27754- y1 w* S; O( o, j7 B; U
for oracle; Thu, 18 Aug 2011 07:00:01 +0800 (EAT)8 V" W, [/ U! j& m# D! V s8 Q% t
Date: Thu, 18 Aug 2011 07:00:01 +0800 (EAT)
8 z9 @& k* {% n' m2 F# _2 W From: root@acap3* }1 _; t+ R* g6 j1 r* X- H* Y
Message-Id: Subject: cron
: r/ r" j+ k1 ^2 | /app/oracle10g/rman_catalog_dmp/exp_by_date.sh[5]: exp: not found.
" d M7 o, }- s# r- E6 ] *************************************************! B4 Q* J: q5 n
Cron: The previous message is the standard output
" ^. @1 D2 N, X and standard error of class=Apple-style-span> |