TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-16 |
제목 | UTL_FILE PACKAGE 사용 시 발생하는 INVALID OPERATION ERROR (HP, | ||
---|---|---|---|
UTL_FILE PACKAGE 사용 시 발생하는 INVALID OPERATION ERROR (HP, SUN)
================================================================== Utl_file package 를 이용해서 OS에 file을 write하기 위해서 다음과 같은 script 를 사용할 때 Invalid Operation 이 발생할 수 있다. declare file_handle UTL_FILE.FILE_TYPE; begin file_handle:=utl_file.fopen('/tmp','myfile','a'); end; / This will return: declare * ERROR at line 1: ORA-6510: PL/SQL: unhandled user-defined exception ORA-6512: at "SYS.UTL_FILE", line 85 ORA-6512: at "SYS.UTL_FILE", line 120 ORA-6512: at line 4 Oracle7 Server Application Developers's Guide 에서는 다음처럼 기술하고 있다. Note: If you open a file that does not exist using the 'a' value for OPEN_MODE, the file is created in write ('w') mode. (A32536-1) 그러나, 실제로 HP 와 SUN Machine 에 install 된 Oracle 7.3.x 에서는 file 이 존재하지 않을 경우 open_mode 를 'a' 로 지정하면 위에서 처럼 unhandled exception 이 발생한다. 물론 file 이 이미 존재하는 경우엔 내용이 append 가 되며 error 가 발생하지는 않는다. 따라서, 위와 같은 에러가 발생할 때에는 UTL_FILE.FOPEN 의 file mode 를 반드시 'w' 로 지정해야 한다. 그리고, Oracle DB 나 Listener Process 가 restart 되기 전에 지정한 UTL_FILE_DIR parameter 의 directory 가 실재 존재할 경우에도 Oracle user 가 해당 directory 에 대한 적절한 permission 을 부여받을 때까지는 error 가 계속될 것이므로 이를 반드시 확인해야 한다. Windows NT 에서는 위에서 설명한 OPEN_MODE 에 따른 error 가 발생하지는 않는다. 그러나, 일반적인 utl_file package 를 사용할 때 Invalid Operation exception error 가 발생할 수 있는데 이 때는 제어판의 서비스에서 OracleService 가 어떤 logon account 로 시작되었는지를 확인해 보아야 한다. 만약, SYSTEM account 가 OracleService 를 시작했다면 SYSTEM account 는 반드시 UTL_FILE.FOPEN 에서 지정되는 target directory 에 대한 permission 을 가지고 있어야 한다. OracleService 가 Administrator 나 다른 account 로 시작되었다면 다른 Oracle Service 들도 모두 같은 account 로 시작되어야 하며 마찮가지로 target directory 에 대한 permission 도 받아야 한다. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |