프로시저 질문 드립니다. (db job) 0 4 2,747

by 비겁하다욕하지마 [Oracle 기초] [2015.10.28 10:21:53]


기존 프로젝트에서 사용하고 있는 프로시저가 있는데 DB job으로 매일 새벽 1시에 돌리는 프로시저인데요.

어느날 부터 프로시저가 안돌아 갑니다.

 

프로시저 내용은

(1) 최초 테이블1 의 내용을 delete 하고

(2) 테이블2를 select해서

(3) 테이블1에 insert 하는 내용입니다.

 

프로시저 소스는 맨 아래 적어놓았습니다.

 

상황 1.

똑같은 소스로 개발기에서는 프로시저 잘 돌아가고 데이터가 잘 들어가는데

운영기에서는 프로시저가 에러없이 돌아가긴 하는데 데이터 변동이 없어요.

(테이블1의 기존 데이터가 삭제되고 새로운 데이터가 insert 되어야 하는데 삭제도 안됩니다.)

(개발기에서 프로시저를 돌리면 프로시저가 에러없이 돌아가고 데이터도 잘들어갑니다.

운영기 에서는 프로시저가 에러없이 잘 돌아가는데 데이터는 변동이 없어요;;)

 

상황2.

EXEC TEST_ONE; 을 실행하면 에러없이

정상적동합니다. (익명 블록이 완료되었습니다. 라고 뜸.)

그런데 TABLE_ONE 테이블을 조회해 보면 기존 데이터가 그대로 남아있습니다.

(delete 부터 안되는것 같습니다.)

 

질문1.

이런경우 어떤게 문제인지 도저히 모르겠어서 질문 드립니다. 답변 부탁드립니다.

로그도 정상이고 TABLE_TWO 테이블도 정상적으로 select 가 되고

소스에 이상이 없는데 프로시저가 정상적으로 도는데 안돕니다(?;;;)

 

질문2.

혹시 테이블 생성 할때 속성중에 몇건 이상 (몇 ROW 이상) insert 안되는 속성 같은것도 있나요?

 

* case

TABLE_ONE 기존에 100건, TABLE_TWO테이블은 200건의 데이터가 있고

TABLE_ONE 기존 100건 데이터를 모두 삭제한 다음에

TABLE_TWO 테이블의 200건 데이터를 select 하여

TABLE_ONE 테이블에 INSERT 한다.

TABLE_ONE 과 TABLE_TWO 의 계정이 다르다. (server.TABLE_ONE , serversss.TABLE_TWO)

==============================================================

create or replace

PROCEDURE TEST_ONE

BEGIN

 

DELETE FROM server.TABLE_ONE ;

 

INSERT INTO server.TABLE_ONE

(

COL1

,COL2

,COL3

)

SELECT

COL1

,COL2

,COL3

FROM serversss.TABLE_TWO;

 

commit;

EXCEPTION

WHEN OTHERS THEN

ROLLBACK;

 

END;

 

==============================================================

 

 

by 마농 [2015.10.28 10:48:12]

EXCEPTION 절을 빼고 돌려보세요.

에러메시지가 뙇! 하고 나타날듯.

이후엔 에러를 잡으시면 됩니다.

아마도 권한 문제가 아닐까 생각되네요.


by 비겁하다욕하지마 [2015.10.28 13:23:35]
답변 정말 감사합니다. 그런데 권한이 제가 직접 돌리면 저의 권한 문제로 의심할수 있지만 제가 돌리지 않고 db job으로 돌릴때도 권한이 따로 설정하는게 있나요?

by 마농 [2015.10.28 13:38:45]

Procedure 의 소유자가 누구인지? 실행자는 누구인지?
Job 의 소유자는 누구인지?
Procedure 에서 사용하는 Table 의 소유자가 누구인지?
등등... 권한이 올바르게 설정되어 있어야만 동작하겠지요.


제 추측에는...
Procedure 에서 사용하는 다른 유저의 Table에 대한 권한을 부여받아야 할 것 같네요.


by 비겁하다욕하지마 [2015.10.28 16:38:07]

감사합니다!!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입