프로시저로 테이블을 매일 밤 마다 초기화 시키는 작업이 필요했다.
그리고 해당 프로시저를 잡으로 등록까지 해줘야 했다.
프로시저를 직접 생성하는 경험이 없어서, 검색을 하면서 작업을 진행했다.
create or replace PROCEDURE CR_IPM_HRM_INFO AS
SQL_STR VARCHAR2(4000);
BEGIN
SQL_STR := 'DROP TABLE TMP_IPM_HRM_INFO';
EXECUTE IMMEDIATE SQL_STR;
SQL_STR := 'CREATE TABLE TMP_IPM_HRM_INFO AS
SELECT * FROM TB_IPM_HRM_INFO';
EXECUTE IMMEDIATE SQL_STR;
END CR_IPM_HRM_INFO;
해당 프로시저를 작성 후 실행을 해보면 계속 권한이 필요합니다 라는 에러가 발생하더라
그래서 찾아보니 EXECUTE에 대한 권한이 필요하다고 하여 모든 사용자가 해당 프로시저를 실행 할 수 있도록
주었다.
GRANT EXECUTE ON CR_IPM_HRM_INFO TO PUBLIC;
하지만 이 권한을 주어도 같은 에러가 계속 발생하더라.
아무래도 다른 권한이 필요한가 싶어서 더 찾아보았다. Create 권한을 주면 된다는 정보를 찾았는데 해당 권한으로 계속 테이블을 생성하고 있었는데 Create 권한이 필요한건가? 의문이 들었지만 혹시 몰라 권한을 줬다.
GRANT CREATE TABLE TO 계정명;
Create 권한을 주니 정말 실행이 잘 되더라...
해당 프로시저를 생성 후 잡을 등록하려고 또 이런 저런 시도를 해봤다.
잡도 등록해본 경험이 없어서 여러가지 글을 읽고 약간의 이해를 통해 생성을 하였다.
DECLARE X NUMBER;
BEGIN SYS.DBMS_JOB.SUBMIT (
JOB => X ,
WHAT => 'CR_IPM_HRM_INFO' ,
NEXT_DATE => to_date('03-01-2021 00:00:00','dd/mm/yyyy hh24:mi:ss') ,
INTERVAL => TRUNC(SYSDATE+1)+1/24 ,
NO_PARSE => TRUE
);
END;
매일 밤 1시마다 실행되는 잡이다.
나중에 또 언제 필요할지 몰라 기록을 해놓는다.
댓글 영역