설치 : Oracle 11g에서 실행되는 두 개의 스크립트 트리가 있습니다. 하나의 세트가 올바른 인스턴스 구성을 보장하고 모든 DBA 프록시 계정이 dbadmin 계정에 연결하고 다른 세트가 데이터베이스 환경.다른 스키마에서 방금 만든 패키지에서 프로 시저를 어떻게 실행합니까?
문제 : 데이터 사전 인구 다음 DBADMIN 계정에 프록시 사용는 스크립트의 두 번째 세트는 한 조각에 대한 제외 잘 실행됩니다. SYSDBA로 SYSDBA로 실행하면 데이터를로드 할 수있는 프로 시저가 적절한 스키마 아래에 생성되며 데이터를로드하는 스크립트는 올바르게 실행되지만 DBADMIN으로 실행하려고하면 호출 프로 시저를 생성 한 직후 매번 전화 할 때마다 PLS-00904: insufficient privilege to access object schema.package
이 나옵니다. 심지어 스크립트 GRANT EXECUTE ON schema.package TO DBADMIN
을 가질 수 없기 때문에 (물론) 예상 된 ORA-01749: you may not GRANT/REVOKE privileges to/from yourself
오류가 발생하기 때문입니다.
더 간단히 말해 :
(DBADMIN :
...
CREATE OR REPLACE PACKAGE BODY other_schema.package_name IS
...
PROCEDURE add_data(...)
...
는 (성공하고 testably하고있다) 로 (나중에, 같은 부모 스크립트라는 또 다른 스크립트에서, 여전히 DBADMIN :)로
BEGIN
other_schema.package_name.add_data(...);
...
는 (제기 PLS-00904 위에서 주어진 - 불충분 한 권한) DBADMIN 계정에 EXCUTE 액세스 권한을 부여하는 방법에 대한 아이디어 나 DBADMIN이 전체 스크립트 스트림을 중지하지 않고 SYSDBA SYSDBA로 로그 아웃 한 후 다시 액세스 할 수있는 방법에 대해 설명합니다. 그것을 줘? SYSDBA SYSDBA를 처음 사용할 때 SYSDBA SYSDBA를 사용하면 처음에는 "SYSDBA SYSDBA를 사용할 때"라는 수동 단계가 필요합니다.
D' oh! 나는 내가 그것을 놓쳤다라고하는 어떤 생각도 가지지 않고있다! DBADMIN 만 호출하여 임의의 권한을 부여하는 SYS 프로 시저를 작성하는 것보다 훨씬 나은 해결책입니다. (: – Thought