티스토리 뷰

반응형

오라클 PL SQL 패키지 내에 DB LINK가 있을 때 유의할 점(?) 혹은 알아두면 좋을 점을 공유하려고 합니다.

특정 테이블을 조회하고 있고, 또한 DB LINK로 원격지 테이블도 조회하는 PL SQL이 있습니다.

이때 로컬에 있는 테이블에 컬럼을 추가하는 DDL를 수행하면 PL SQL 패키지 또는 프로시저(펑션)의 상태가

INVALID가 됩니다.

그 이후에 PL SQL를 호출하면 DB LINK가 있을 경우와 없는 경우가 다르게 처리 됩니다.

1. DB LINK가 존재하는 경우

: 호출시 해당 PL SQL이 DDL로 수행이 되면서 컴파일도 되고 VALID 상태로 변경된 후에 호출이 됨


2. DB LINK가 없는 경우

: 호출시 해당 PL SQL이 DDL로 수행되는게 아니라 컴파일 후에 VALID 상태로 됨.


예를 들어 PL SQL이 존재하는  스키마에 트리거로 DDL 수행을 막아 놓았을 경우에

1번 경우에는 호출시 에러가 발생하지만, 2번의 경우엔 에러가 발생하지 않고 정상적으로 호출이 됨.


반응형