(Unix)CRONTAB에서 Oracle Program 구동
BULLETIN CATEGORY
BULLETIN TOPIC : UNIX
: CRONTAB에서 Oracle Program 구동
--------------------------------------------------------------------------------
[ 설명 ]
Unix 에서 특정 Program을 User가 지정한 시간에 자동으로 실행하기 위해서는 Crontab Utility를 이용하여야 한다. Crontab에 의해 기동 된 Program은 Background로 실행되며, 일반 시스템 및 사용자가 Crontab을 이용하기 위해서는 시스템 관리자로부터의 권한 부여 및 프로그램의 실행 시간, 실행하고자 하는 프로그램 등이 Crontab 관련 화일에 등록되어 있어야 한다.
Crontab Command를 이용하기 위해 필요한 화일은 cron.allow(System File), Crontab_File(User Definded), Shell Script, cron.deny(System File) 및 최종 실행 프로그램 등이다. cron.allow에는 Crontab을 사용하는 사용자의 Login Name이 등록되어 있으며 Corntab_File에는 프로그램이 기동되는 시간과 실행되는 프로그램의 이름이 기록된다. Cron.allow가 존재하지 않으면 cron.deny를 점검하여 사용자가 사용 권한을 거부 당했는지 여부를 결정한다.
여기서 Crontab_File은 1개의 행이 6개의 Field로 구성되고, 각 Field는 Blank로 구분되며, Syntax는 다음과 같다.
[ 예제 ]
$crontab cron_sample <enter>
cron으로 작업을 등록하고 나면 /var/spool/cron/crontabs에 사용자 로그인 이름의
화일이 하나 만들어 진다.
1. cron_sample의 내용:
30 * * * * sample
->매월 매일 매시 30분에 sample을 실행하라는 의미
2. sample의 내용: /users/oracle/c/demo/samplec
여기서 만일 Samplec 프로그램이 Oracle에 Connect하여 동작하는 경우, 프로그램이 정상적으로 실행되지 않는다.
이유는 Crontab에 의해 구동 된 프로세스는 프로그램의 Owner의 Shell에 의해 Fork되는 것이 아니므로, Oracle 프로그램이 구동 되는데 필요한 환경 변수(ORACLE_HOME, ORACLE_SID, PATH 등)가 Setting되어야 한다.
따라서 Samplec가 정상적으로 실행되기 위해서는 Shell Script인 Sample이 다음과 같이 수정되어야 한다.
3. 수정된 sample의 내용:
ORACLE_SID=ora7; export ORACLE_SID
ORACLE_HOME=/oracle; export ORACLE_HOME;
PATH=$PATH;$ORACLE_HOME/BIN; export PATH
/users/oracle/c/demo/samplec
이외에도 경우에 따라서 NLS_LANG, ORA_NLS등도 세팅 해 주어야 한다.
4. /users/oracle/c/demo/samplec의 내용이 scott/tiger의 test(a number, b varchar2(10))라는 table에 하나의 row를 insert시키는 내용이라면 다음과 같다.
sqlplus scott/tiger << ins_EOF
insert into test values (5, 'Inserted');
commit;
exit
ins_EOF



댓글 없음:
댓글 쓰기