2015-01-16 1 views
0

PLSQL Developer 클라이언트를 사용하여 11G Oracle 데이터베이스에 액세스하고 있습니다. 내 이해는 these이이 버전과 함께 제공되는 기본 패키지입니다.
기본 Oracle 11G 패키지를 사용할 수 없습니다. utl_file

PLS-00201: identifier 'UTL_FILE' must be declared

내 프로그램 : 나는 utl_file.file_type 변수를 선언하려고한다면, 나는 다음과 같은 오류가

declare 
    l utl_file.file_type; 
begin 
    NULL; 
end; 

내가, 예를 들면, DBMS_LOB를 선언하려고했습니다. BFILE, 그리고 그것은 성공적으로 컴파일되어, 다른 패키지가 내 블록에 임포트된다는 것을 증명합니다. 모든 Oracle 기본 패키지가 자동으로 가져 오기되지 않습니까?

+0

어떤 사용자로 로그인 했습니까? – Mihai

+2

작성한 데이터베이스입니까, 아니면 액세스 권한이있는 데이터베이스입니까 (예 : 직장)? UTL_FILE에 대한 공개 액세스가 [보안 조치로 취소되었습니다.] (http://oracle-base.com/articles/misc/basic-security-measures-for-oracle.php#revoke_unnecessary_privileges); 그렇다면 DBA에 물어볼 필요가 있습니다. ('Imported'는 올바른 용어가 아닙니다. 이것은 권한에 대한 것입니다. 뭔가에 대해 prives가 있으면 암묵적으로 사용할 수 있습니다.) –

답변

0

필자의 데이터베이스라면 SYS 사용자를위한 패스가 있다고 가정합니다. 이 경우 utl_file 패키지가 설치되어 있는지 확인해야합니다. SYS로 연결하여이 문장을 실행할 수 있습니다.

SELECT * FROM dba_objects WHERE object_name = 'UTL_FILE' 

해당 패키지가 있는지 확인해야합니다. 또한 소유자 유형이 'PUBLIC'인 오브젝트 유형 'SYNONYM'을보아야합니다. 패키지 DB에 존재하지만,에 대한 동의어가없는 경우 이러한 패키지가없는 경우에는이 문

CREATE PUBLIC SYNONYM OF UTL_FILE FOR SYS.UTL_FILE 

를 사용하여 만들 수 있습니다 - 당신은

에 위치한 스크립트를 실행하여 설치한다

{ORACLE_HOME}/rdbms/admin/utlfile.sql