You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 18XE执行hr_main.sql时出现文件读取错误求助

Oracle 18XE执行hr_main.sql时"Error reading file"问题排查方案

1. 检查Oracle目录对象权限

Oracle 18XE对文件访问有严格的容器级限制,默认仅允许读取$ORACLE_HOME/demo/schema/human_resources下的HR脚本。若你的脚本存放在自定义目录:

  • 执行SELECT * FROM DBA_DIRECTORIES;确认是否存在对应目录的Oracle目录对象
  • 若不存在,创建目录对象:CREATE DIRECTORY HR_SCRIPT_DIR AS '/你的脚本绝对路径';
  • 给C##HR授予目录读写权限:GRANT READ, WRITE ON DIRECTORY HR_SCRIPT_DIR TO C##HR;
  • 修改脚本中子脚本引用方式为@HR_SCRIPT_DIR/hr_cre.sql(使用Oracle目录对象而非OS路径)

2. 核对脚本路径格式与有效性

  • 注意OS路径格式:Linux用/,Windows需用\\转义或/,含空格的路径需用双引号包裹,例如@"C:\Program Files\Oracle\XE18c\demo\schema\human_resources\hr_cre.sql"
  • 若通过远程工具(如SQL Developer)连接,脚本路径必须是服务器端OS路径,而非本地客户端路径
  • 直接在服务器OS中复制脚本路径访问,确认文件存在且无拼写错误

3. 确认C##用户的容器权限

18XE为CDB架构,C##公共用户需在目标PDB(如XEPDB1)内拥有文件访问权限:

  • 切换到目标PDB:ALTER SESSION SET CONTAINER=XEPDB1;
  • 检查权限:SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE='C##HR';
  • 若缺少权限,在PDB内执行:GRANT READ ON DIRECTORY HR_SCRIPT_DIR TO C##HR;(使用对应目录对象)

4. 检查OS层面文件权限

Oracle运行用户(Linux为oracle,Windows为OracleServiceXE)需具备脚本文件的读取权限:

  • Linux:执行ls -l /你的脚本路径/,确保oracle用户拥有r权限,无权限则执行chmod +r *.sql
  • Windows:右键脚本文件→属性→安全,给OracleServiceXE用户添加读取权限

5. 排查工具当前工作目录

若使用相对路径引用脚本,需匹配工具的当前工作目录:

  • SQL*Plus中执行HOST pwd(Linux)或HOST cd(Windows)查看当前目录,确认脚本存在于此
  • SQL Developer中可通过「工具→首选项→数据库→工作表→默认目录」修改工作目录

内容的提问来源于stack exchange,提问作者Turchenko W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 02:55:04