1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

CRONTAB调用备份脚本时要注意环境变量的设置是本文我们主要要介绍的内容,我们知道,EXP备份是DBA常规操作之一,尤其是10g以前的版本没有EXPDP,所有的逻辑备份都是通过EXP来实现。而将EXP写成SHELL脚本,使之可以调用也并没有什么特别之处。不过如果并非oracle用户执行,而是需要CRONTAB自动允许,那么备份的脚本就有一些要求了。

客户环境使用RMAN CATALOG方式备份,而RMAN的CATALOG数据库采用EXP进行逻辑备份。部署了一个每天7点运行的CRONTAB,调用执行EXP的SHELL。巡检时发现这个脚本从未真正运行过。

/app/oracle10g>crontab-l 
07***/app/oracle10g/rman_catalog_dmp/exp_by_date.sh 
/app/oracle10g/rman_catalog_dmp>moreexp_by_date.sh 
exportORACLE_SID=RMANDB
exportORACLE_BASE=/app/oracle10g 
exportORACLE_HOME=$ORACLE_BASE/product/10.2.0 
exportNLS_LANG=American_America.ZHS16CGB231280 
expparfile=exp.parfile=./rman_catalog.dmplog=./rman_catalog.log

由于是CRONTAB进行调用,因此不会使用oracle用户的环境变量,这就需要在shell脚本中添加必要的环境变量的设置,这才能是的EXP命令可以正确的运行。脚本中虽然已经设置了一些环境变量,但是还是不够的。

对于CRONTAB运行SHELL时出现的错误,可以通过用户的mail来获取错误信息:

/app/oracle10g/rman_catalog_dmp>mail 
Fromroot@acap3ThuAug1807:00:01EAT2011 
Received:(fromroot@localhost) 
byacap3(8.9.3(PHNE_35950)/8.9.3)idHAA27754 
fororacle;Thu,18Aug201107:00:01+0800(EAT) 
Date:Thu,18Aug201107:00:01+0800(EAT) 
From:root@acap3 
Message-Id:<201108172300.HAA27754@acap3>
Subject:cron 
/app/oracle10g/rman_catalog_dmp/exp_by_date.sh[5]:exp:notfound. 
************************************************* 
Cron:Thepreviousmessageisthestandardoutput 
andstandarderrorofoneofyourcrontabcommands: 

/app/oracle10g/rman_catalog_dmp/exp_by_date.sh

显然导致错误的原因是执行EXP命令时,在默认目录下没有找到EXP可执行命令,显然脚本中漏设了PATH环境变量。

增加PATH=$ORACLE_HOME/bin环境变量后,再次测试发现,参数文件找不到,仿照导出文件和日志文件的方式,将参数文件设置为./exp.par,问题依旧。看来在CRONTAB中调用SHELL,应该设置绝对路径,而不能设置相对路径。

最终脚本修改为:

/app/oracle10g/rman_catalog_dmp>more/app/oracle10g/rman_catalog_dmp/exp_by_date.sh 
exportORACLE_SID=RMANDB
exportORACLE_BASE=/app/oracle10g 
exportORACLE_HOME=$ORACLE_BASE/product/10.2.0 
exportNLS_LANG=American_America.ZHS16CGB231280 
exportPATH=$ORACLE_HOME/bin:$PATH 
DATE=`date+"%Y%m%d"` 
expparfile=/app/oracle10g/rman_catalog_dmp/exp.parfile=/app/oracle10g/rman_catalog_dmp/rman_catalog_$DATE.dmplog=/app/oracle10g/rman_cat 
alog_dmp/rman_catalog_$DATE.log 
youhavemailin/var/mail/oracle

利用CRONTAB来实现SHELL的自动调用,需要注意两个问题,***是否在SHELL中设置了必要的环境变量;第二尽量所有的文件都采用完全路径方式,避免使用相对路径。

关于CRONTAB调用备份脚本时要注意环境变量的设置的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

本文来源:1818IP

本文地址:https://www.1818ip.com/post/10648.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。