database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 3910 게시물 읽기
No. 3910
Re: Re: Re: dbms_job에 대한 질문
작성자
firebird
작성일
2001-04-28 17:22
조회수
2,845

일단 주기적으로 실행되어야 되는 작업인 것은 맞군요.

WHAT에 해당되는 내용 즉, 작업의 내용은 변하지 않는것으로 보이니까 그렇게 가정

하고 설명드리겠습니다.

 

우선, DBA_JOBS라는 데이타 딕셔너리 뷰가 존재합니다. 여기에는 현재 시스템에

등록된 job의 상태가 기록되어 있습니다.

그리고 현재 실행중인 job은 DBA_JOBS_RUNNING이라는 뷰에 들어가 있습니다.

이 두가지 뷰는 job을 모니터링하시기 위해 꼭 알아두셔야 할 것들입니다.

 

님이 하시려는 작업을 job으로 구현하려면 job이 두개 등록되면 될 거 같습니다.

 

job A는 실제 액션을 취하려는 프로시져입니다.

job A는 평상시에는 BROKEN 상태로 기다립니다. 즉, 실행하지 않습니다.

그리고 일단 실행이 되면 필요한 일을 마치고 나서 다시 자기자신을 BROKEN 상태로

만들고 종료합니다.

 

다음 job B는 매일 일정시간에 깨어나 테이블을 읽는 프로시져입니다.

job B는 테이블을 읽고 job A를 실행할 시간을 결정합니다.

그러고 나서 job A에 대하여 DBMS_JOB.NEXT_DATE() 프로시져를 실행하여 job A가

실행될 시간을 결정하고 나서 DBMS_JOB.BROKEN() 프로시져를 써서 job A가 실행

가능하도록 합니다. (DBMS_JOB.CHANGE()로 한번에 하셔도 상관없습니다...:)

 

이런 두 프로시져를 짜고 두 JOB을 SUBMIT() 해두면 아마 님이 생각하시는 작업을

구현하실 수 있을 것 같습니다.

 

>>류광섭 님께서 쓰시길<<

 

:: 답변감사합니다.

::

:: 제가 하고자 하는 것은

:: DB에 입력된 시간을 읽어서 매일읽어서

:: 어떤 작업을 수행하도록 하는 것입니다.

::

:: 그러니까..

:: 읽는 시간은 동일하나.. 읽은 시간에 취해야 액션의 시간은 항상

:: 바뀌는 형태입니다.

::

:: 은행작업에 있어서.. 자금화 연장이라는 것이 걸리면..

:: 시간뒤에 액션을 취해야 하는 일이라서 그렇습니다..

::

:: 어떻게 처리를 해야할지...

:: 어떤 이비슷한 예라도 있으시면.. 부탁드립니다.

::

:: 감사합니다.

::

::

:: >>firebird 님께서 쓰시길<<

::

:: :: DBMS_JOB 패키지 사용시 INTERVAL 파라미터는 해당 JOB이 실행되면서 다음 실행될

:: :: 시점을 계산하기 위해서 평가됩니다. 따라서 임의의 시점에서 계산되어도 동일한

:: :: 결과를 낼 수 있는 Expression을 지정해야만 합니다.

:: :: 즉, 님이 생각하시는 것처럼 SUBMIT 시에 평가되는 것이 아니라는 것입니다. 따라서

:: :: 매개변수 전달은 불가능합니다.

:: ::

:: :: 일단 올려주신 샘플만 가지고는 정확히 뭘 하실려는 것인지 알수가 없군요.

:: :: 매번 SUBMIT을 할 때마다 새로운 JOB이 생성되기 때문에 님과 같은 방식으로 코딩하

:: :: 는 경우 계속 새로운 JOB을 등록하게 될 겁니다.

:: :: 원하시는게 그것인지요?

:: ::

:: :: 만약 시간주기를 변경하기를 원하신다면 DBMS_JOB.INTERVAL() 프로시져를 쓰실 수 있을

:: :: 것이고 실행할 프로시져를 변경하기를 원하신다면 DBMS_JOB.WHAT() 프로시져를 쓸 수

:: :: 있습니다. 또한 해당 프로시져의 작동을 중단하시기를 원한다면 BROKEN() 프로시져를

:: :: 쓰실 수 있겠지요.

:: ::

:: :: 일단은 어떤 목적으로 쓰시려고 하는지 모르겠네요. 얼핏 생각에는 특정 시점에 한번

:: :: 만 수행할 프로시져 같기도 한데 그렇다면 JOB은 그다지 적합하지는 않습니다.

:: :: 실행하고 나서 자기 자신을 BROKEN() 시켜줄 필요가 있겠지요.

:: ::

:: :: >>류광섭 님께서 쓰시길<<

:: ::

:: :: :: 오라클 테이블

:: :: :: create table temp_table (

:: :: :: NUM_COL NUMBER(10),

:: :: :: CHAR_COL CHAR(30)

:: :: :: );

:: :: :: create table test_yymmdd(

:: :: :: HHMI CHAR(12)

:: :: :: );

:: :: ::

:: :: :: CREATE OR REPLACE PROCEDURE Temp

:: :: :: AS

:: :: :: v_hour number(2);

:: :: :: v_min number(2);

:: :: :: v_jobNum number(3);

:: :: ::

:: :: :: begin

:: :: :: select substr(hhmi, 9, 2) into v_hour from test_yymmdd;

:: :: :: select substr(hhmi, 11, 2) into v_min from test_yymmdd;

:: :: :: insert into temp_table(num_col, char_col) values (temp_seq.nextval, TO_CHAR(sysdate, 'yyyy

:: -mm

:: :: -dd

:: :: :: hh24:mi:ss'));

:: :: :: commit;

:: :: :: end Temp;

:: :: ::

:: :: ::

:: :: :: BEGIN

:: :: :: DBMS_JOB.SUBMIT(:v_jobNum, 'Temp;', SYSDATE, 'sysdate+( :v_hour/24)');

:: :: :: END;

:: :: ::

:: :: :: 위와 같이 실행했을때

:: :: :: DB 에서 뽑아온 시간으로 실행을 하고 싶은데..

:: :: :: 잘 되지 않습니다.

:: :: :: 현재 변수 넘겨주는게 제대로 되질 않아서.. 그런것 같은데..

:: :: ::

:: :: :: :v_hour 부분을 숫자로 대치하면 잘 작동합니다.

:: :: ::

:: :: :: 도움을 부탁드리겠습니다.

:: :: :: 감사합니다.

:: :: :: 그럼.

:: :: ::

:: :: ::

[Top]
No.
제목
작성자
작성일
조회
3907Blob로 저장된 text data 검색 방법은?
김현
2001-04-28
2520
3908┕>BLOB/CLOB를 검색하는 간단한 예제입니다.
firebird
2001-04-28 16:37:26
4903
3922 ┕>CLOB 검색시 상당히 느린데..보완할 방법이 없을까요?
빈경윤
2001-04-30 01:09:07
2404
3923  ┕>Re: CLOB 검색시 상당히 느린데..보완할 방법이 없을까요?
권혁봉
2001-04-30 09:35:53
5912
3906snpashot을 자세히...
윤동만
2001-04-28
1944
3909┕>Re: snpashot을 자세히...
firebird
2001-04-28 16:58:19
2827
3939 ┕>Re: Re: snpashot을 자세히...
윤동만
2001-04-30 16:29:52
2602
3943  ┕>Re: Re: Re: snpashot을 자세히...
firebird
2001-04-30 19:25:23
2562
3899jsp 와 oracle 연동 에러
hsn
2001-04-28
2213
3895dbms_job에 대한 질문
류광섭
2001-04-27
2295
3896┕>Re: dbms_job에 대한 질문
firebird
2001-04-27 23:20:32
2745
3902 ┕>Re: Re: dbms_job에 대한 질문
류광섭
2001-04-28 11:06:04
2151
3910  ┕>Re: Re: Re: dbms_job에 대한 질문
firebird
2001-04-28 17:22:49
2845
3894MTS 설치에 관하여..
이창훈
2001-04-27
1971
3897┕>Re: MTS 설치에 관하여..
firebird
2001-04-27 23:58:13
1850
3903┕>Re: MTS 설치에 관하여..
최성준
2001-04-28 11:23:35
2348
3893여러 테이블에서 최대값을 갖는 컬럼의 특정 필드값 가져오기
Marvin™
2001-04-27
3976
3901┕>Re: 여러 테이블에서 최대값 필드값 가져오기
최성준
2001-04-28 10:59:54
3012
3892오라클 8i 8.16 스탠다드와 엔터프라이즈의 차이점은?
빈경윤
2001-04-27
1913
3915┕>Re: 오라클 8i 8.16 스탠다드와 엔터프라이즈의 차이점은?
firebird
2001-04-29 02:11:44
1821
3917 ┕>Re: Re: 오라클 8i 8.16 스탠다드와 엔터프라이즈의 차이점은?
문태준
2001-04-29 10:53:46
2437
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.030초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다