posted by 구름너머 2005. 11. 17. 19:29

No. 10342

DBMS_PIPE NOT DECLARED ERROR 발생 시
====================================

발생원인 1)

DBMS_PIPE는 oracle install시에 $ORACLE_HOME/rdbms/admin/catproc.sql을
실행함으로써 생성되도록 되어 있는 stored package이다.
다른 stored package(DBMS_OUTPUT....)등은 생성직후 sys를 owner로한
stored package에 대해 public synonym을 생성한 후 바로 이 synonym에
대해 public에게 execute previlege가 grant되지만 DBMS_PIPE는 생성만
되도록 되어 있기 때문에 사용하고자 하는 user에게 별도의 grant작업이
필요하다.

-> 확인사항 및 해결 방법

1) sqldba에서
select * from dba_objects where object_name = 'DBMS_PIPE';
를 수행하여 DBMS_PIPE에 관한 자료가 sys가 owner인 package
spec,package body,synonym만 나타나야 한다.
2) sqldba에서
grant execute on DBMS_PIPE to user_name;
을 실행하여 해당 user에게 grant한다.

발생원인 2)

DBMS_PIPE는 sys가 owner이어야 한다.
user의 실수로 system이나 다른 별도의 user로 connect하여 catproc.sql을
실행한 경우에 발생한다.

-> 확인사항 및 해결방법

1) sqldba에서
select * from dba_objects where object_name = 'DBMS_PIPE';
를 수행하여 DBMS_PIPE에 관한 자료가 sys나 public이 아닌 다른
user가 owner로 되어 있는 DBMS_PIPE object를 drop시킨다.
2) sqldba에서
grant execute on DBMS_PIPE to user_name;
을 실행하여 해당 user에게 grant한다.