Tag Archives: shell

利用SCHEDULER调用shell脚本

10g的SCHEDULER的一个重要的功能是可以调用操作系统命令或SHELL脚本。而在10g以前,这个功能只能通过外部存储过程来实现。 下面是一个简单的例子,首先编辑一个test.sh脚本: #!/usr/bin/ksh echo abc >> /home/xxx/a.txt#!/usr/bin/ksh echo abc >> /home/xxx/a.txt 注意,#!/usr/bin/ksh是必须的,否则JOB运行会出现ORA-27369错误。 给这个shell设置执行权限: $ chmod 744 test.sh$ chmod 744 test.sh 下面就可以在数据库中建立PROGRAM: SQL> BEGIN 2 DBMS_SCHEDULER.CREATE_JOB( 3 JOB_NAME => ‘J_TEST’, 4 JOB_TYPE => ‘EXECUTABLE’, 5 JOB_ACTION => ‘/home/xxx/test.sh’, 6 ENABLED => … Continue reading

Posted in ORACLE | Tagged , , , , | Leave a comment

CRONTAB调用的备份脚本

EXP备份是DBA常规操作之一,尤其是10g以前的版本没有EXPDP,所有的逻辑备份都是通过EXP来实现。而将EXP写成SHELL脚本,使之可以调用也并没有什么特别之处。不过如果并非oracle用户执行,而是需要CRONTAB自动允许,那么备份的脚本就有一些要求了。 客户环境使用RMAN CATALOG方式备份,而RMAN的CATALOG数据库采用EXP进行逻辑备份。部署了一个每天7点运行的CRONTAB,调用执行EXP的SHELL。巡检时发现这个脚本从未真正运行过。 /app/oracle10g> crontab -l 0 7 * * * /app/oracle10g/rman_catalog_dmp/exp_by_date.sh /app/oracle10g/rman_catalog_dmp> more exp_by_date.sh export ORACLE_SID=RMANDB export ORACLE_BASE=/app/oracle10g export ORACLE_HOME=$ORACLE_BASE/product/10.2.0 export NLS_LANG=American_America.ZHS16CGB231280 EXP parfile=EXP.par file=./rman_catalog.dmp log=./rman_catalog.log/app/oracle10g> crontab -l 0 7 * * * /app/oracle10g/rman_catalog_dmp/exp_by_date.sh /app/oracle10g/rman_catalog_dmp> more exp_by_date.sh export ORACLE_SID=RMANDB … Continue reading

Posted in ORACLE | Tagged , , | 2 Comments