오라클

CRONTAB에서 Oracle Program 구동

OEasy 2006. 11. 2. 11:41
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   

   


Oracle Korea Customer Support Technical Bulletins
 

'오라클' 카테고리의 다른 글

UNIX에서 사용되는 ORACLE환경변수  (0) 2006.11.02
RAID(Redundant Array of Inexpensive Disks)  (0) 2006.11.02
Oracle Permission 문제 (ORA-1034, 7320, 7429)  (0) 2006.11.02
SHARED MEMORY 문제  (0) 2006.11.02
SQL*LOADER SAMPLE  (0) 2006.11.02