Oracle 11G外部表ORA-29913错误排查求助
ORA-29913 错误解决:Oracle 11G 外部表无法访问日志文件
针对你遇到的ORA-29913错误,核心原因是Oracle无法创建/访问指定目录下的日志文件,以下是针对性的解决步骤:
1. 修复授权语句的语法错误
你执行的授权语句末尾使用了冒号:, 这是语法错误,会导致授权未生效:
-- 错误语句 GRANT READ, WRITE ON DIRECTORY EDOS_MEX TO PUBLIC: -- 修正为分号结尾 GRANT READ, WRITE ON DIRECTORY EDOS_MEX TO PUBLIC;
重新执行修正后的语句,确保PUBLIC用户(或HR用户)拥有该目录的读写权限。
2. 检查Oracle服务账户的文件系统权限
Windows环境下,Oracle数据库服务是通过专用账户运行的(默认是Local System),而非你当前登录的用户。该账户需要拥有C:\datosext2文件夹的读写权限:
- 右键
C:\datosext2文件夹 → 「属性」→「安全」选项卡 - 点击「编辑」→「添加」,输入Oracle服务运行的账户名(如
NT AUTHORITY\SYSTEM) - 给该账户分配「读取」「写入」「修改」权限,点击「应用」后重启Oracle服务
3. 修正目录路径的格式
Oracle中识别Windows路径时,单斜杠\会被视为转义字符,需改用双反斜杠\\或正斜杠/:
-- 两种正确写法任选其一 CREATE DIRECTORY EDOS_MEX AS 'C:\\datosext2'; CREATE DIRECTORY EDOS_MEX AS 'C:/datosext2';
4. 显式指定日志/坏文件的目录
在外部表的ACCESS PARAMETERS中,显式关联目录别名,避免路径解析歧义:
CREATE TABLE C_ESTADOS ( ESTADO_ID CHAR (2), ESTADO_NOMBRE VARCHAR2(50) ) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY EDOS_MEX ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE BADFILE EDOS_MEX:'bad_estados.bad' LOGFILE EDOS_MEX:'log_estados.log' FIELDS TERMINATED BY ',' (ESTADO_ID CHAR (2), ESTADO_NOMBRE CHAR(50)) ) LOCATION ('estados.txt') );
完成以上步骤后,重新执行SELECT * FROM C_ESTADOS;即可正常访问外部表。
内容的提问来源于stack exchange,提问作者Luis Emilio González Ruiz
相关产品推荐
相关产品推荐

