crontab因环境变量无法自动执行脚本问题

本文详细介绍了在AIX系统中,如何解决Oracle GoldenGate (OGG) DDL复制功能中遇到的问题,特别是在使用Crontab定时任务时,因环境变量缺失导致的错误。通过调整脚本和Crontab设置,成功实现了对新增表的自动附加日志,确保了DDL操作的完整记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本人在AIX系统源端oracle数据库中,部署了一套ogg同步软件,同步软件开启了ddl复制功能。由于ddl自动添加附加日志功能参数DDLOPTIONS ADDTRANDATA有时不能正确起作用,所以打算自己写一个脚本,在每日凌晨0点0,1,2,3分钟对新增的表自动添加附加日志,基本配置如下:

    crontab配置如下:


$ 
$ crontab -l
0,1,2,3 0 * * * sh /oracle/ogg/oggsh/oggall.sh

    oggall.sh脚本:

$ cat oggall.sh
/oracle/ogg/oggsh/oggtask.sh
/oracle/ogg/ggsci paramfile /oracle/ogg/oggsh/addtrandata.sh > /oracle/ogg/oggsh/add.log
$ 

    oggtask.sh脚本:

$ cat oggtask.sh
echo "dblogin userid goldengate,password goldengate
add trandata TD.IDS_GPS_`date +%Y%m%d`" > /oracle/ogg/oggsh/addtrandata.sh

    在配置完成后,后续通过查看日志,发现日志add.log中没有数据,查看crontab日志信息,发现报错如下:

From daemon Tue Jul  2 09:57:00 2019
Received: (from root@localhost)
        by lxbusdbs1 (AIX7.1/8.14.4/8.14.4) id x621v0nQ19334018
        for oracle; Tue, 2 Jul 2019 09:57:00 +0800
Date: Tue, 2 Jul 2019 09:57:00 +0800
From: daemon
Message-Id: <201907020157.x621v0nQ19334018@lxbusdbs1>
To: oracle
Subject: Output from cron job sh /oracle/ogg/oggsh/oggall.sh, oracle@lxbusdbs1, exit status 255

Cron Environment:
 SHELL = /usr/bin/sh
 PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java6/jre/bin:/usr/java6/bin
 CRONDIR=/var/spool/cron/crontabs
 ATDIR=/var/spool/cron/atjobs
 LOGNAME=oracle
 HOME=/home/oracle

Your "cron" job executed on lxbusdbs1 on Tue Jul  2 09:56:00 CST 2019
sh /oracle/ogg/oggsh/oggall.sh


produced the following output:

exec(): 0509-036 Cannot load program /oracle/ogg/ggsci because of the following errors:
        0509-150   Dependent module libgglog.a could not be loaded.
        0509-022 Cannot load module libgglog.a.
        0509-026 System error: A file or directory in the path name does not exist.


*****************************************************************
        cron: The previous message is the standard output
        and standard error of one of the cron commands.

    原来crontab默认是不带环境变量的,cron命令默认shell是/usr/bin/bsh,如果要在cron启动的脚本中使用ksh,就必须在脚本中的第一行添加“#/usr/bin/ksh”的声明。如果cron进程启动的shell脚本要用登陆时的环境变量,就必须在cron启动的shell添加环境变量。

    修改oggall.sh

$ cat oggall.sh
. ~/.profile
/oracle/ogg/oggsh/oggtask.sh
/oracle/ogg/ggsci paramfile /oracle/ogg/oggsh/addtrandata.sh > /oracle/ogg/oggsh/add.log
$ 

    修改完成后,脚本测试执行成功,表附加日志添加成功:

$ cat add.log

Oracle GoldenGate Command Interpreter for Oracle
Version 12.3.0.1.2 OGGCORE_12.3.0.1.0_PLATFORMS_171208.0005_FBO
AIX 6, ppc, 64bit (optimized), Oracle 11g on Dec 14 2017 02:48:55
Operating system character set identified as US-ASCII.

Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.



GGSCI (lxbusdbs1) 1> dblogin userid goldengate,password goldengate

Successfully logged into database.

GGSCI (lxbusdbs1 as goldengate@LXBUSDB1) 2> add trandata TD.IDS_GPS_20190702


2019-07-02 10:01:03  INFO    OGG-15131  Logging of supplemental redo log data is already enabled for table TD.IDS_GPS_20190702.

2019-07-02 10:01:04  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table TD.IDS_GPS_20190702.

2019-07-02 10:01:04  WARNING OGG-01988  Could not find schematrandata function in source database: failed to find function.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TPCloud

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值