ORA-29913: error in executing ODCIEXTTABLEOPEN callout (ODCIEXTTABLEOPEN callout 실행 오류)
Oracle의미
외부 테이블에 접근할 때 소스 파일을 읽거나 파싱하는 중 오류가 발생했다. Oracle이 외부 테이블 데이터를 가져오기 위해 호출하는 access driver(ORACLE_LOADER / ORACLE_DATAPUMP) 루틴에서 실패했다.
원인
보통 DIRECTORY 객체가 가리키는 경로에 파일이 없거나, Oracle OS 사용자에게 파일/디렉터리 읽기 권한이 없거나, log/bad 파일 쓰기 권한이 없거나, access parameter(필드 구분자, 레코드 형식)가 잘못된 경우다. ORA-29400, KUP-04xxx 같은 하위 오류가 자주 함께 나타난다.
해결 방법
하위 오류(KUP-xxxx)를 읽어 근본 원인을 파악한다. DIRECTORY 경로와 파일 존재 여부 확인: SELECT directory_name, directory_path FROM all_directories; Oracle OS 사용자에게 파일과 디렉터리 읽기 권한, log/bad 디렉터리 쓰기 권한을 부여한다. 외부 테이블 정의의 ACCESS PARAMETERS 절을 소스 파일 형식에 맞춘다. 필요하면 DIRECTORY에 대한 READ/WRITE 권한을 확인한다.
같은 데이터베이스의 다른 항목
- ORA-00600internal error code, arguments: [...]
- ORA-07445exception encountered: core dump
- ORA-01102cannot mount database in EXCLUSIVE mode
- ORA-19804cannot reclaim N bytes disk space from M bytes limit (M바이트 한도에서 N바이트 디스크 공간을 회수할 수 없음)
- ORA-00494enqueue held for too long by 'inst N, osid M' (enqueue가 너무 오래 보유됨)
- ORA-04021timeout occurred while waiting to lock object (객체 락 대기 중 타임아웃 발생)
- ORA-04061existing state of package/procedure has been invalidated (패키지/프로시저의 기존 상태가 무효화됨)