Oracle 21c Express安装HR schema失败及SP2-0310错误修复求助
修复Oracle 21c XE中HR Schema脚本执行的SP2-0310错误
问题背景
在Oracle 21c Express Edition环境下,通过Oracle SQL Developer 22.x以SYSTEM用户执行GitHub下载的HR Schema的hr_main.sql脚本时,先遇到ORA-01918(用户不存在)、ORA-65096(无效的公共用户或本地用户名称)错误,执行alter session set "_oracle_script"=true;后HR用户创建成功,但出现SP2-0310错误,提示无法找到__SUB__CWD__路径下的hr_cre.sql、hr_idx.sql等依赖文件。
错误原因
__SUB__CWD__是脚本中定义的当前工作目录变量,但SQL Developer无法自动识别并替换该变量,导致脚本找不到依赖文件的实际路径。
修复方法
1. 手动替换脚本中的路径变量
- 打开
hr_main.sql文件,查找所有包含@__SUB__CWD__/的行(比如@__SUB__CWD__/hr_cre.sql) - 将
__SUB__CWD__替换为你本地HR Schema文件所在的绝对路径,例如:- Windows系统:
@"C:\Users\YourName\Downloads\hr-schema\hr_cre.sql"(路径含空格需加引号) - Linux/Mac系统:
@/home/yourname/downloads/hr-schema/hr_cre.sql
- Windows系统:
- 保存修改后的脚本,重新执行即可。
2. 在SQL Developer中设置默认工作目录
- 打开SQL Developer,依次点击工具 → 首选项 → 数据库 → 工作表
- 在「默认路径」选项中,选择你下载的HR Schema文件所在的文件夹,点击「确定」
- 关闭并重新打开SQL Worksheet,再次执行
hr_main.sql,脚本会自动从设置的默认路径加载依赖文件。
3. 改用SQL*Plus执行脚本(更可靠的方式)
- 打开命令提示符(Windows)或终端(Linux/Mac),通过
cd命令切换到HR Schema文件所在的目录 - 用SYSTEM用户登录SQL*Plus:
sqlplus system/your_system_password@xe - 先执行会话设置:
alter session set "_oracle_script"=true; - 最后执行主脚本:
@hr_main.sql - 按提示输入所需参数(如HR用户密码、表空间名称等),这种方式会直接从当前目录读取依赖脚本,不会出现路径识别问题。
补充说明
- ORA-65096错误是因为Oracle 21c XE采用CDB(容器数据库)架构,默认禁止在根容器创建普通用户,
alter session set "_oracle_script"=true;命令可以绕过这个限制,允许创建非CDB风格的用户。 - ORA-01918错误是之前HR用户创建失败导致的,解决容器限制后即可正常创建用户。
内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ
相关产品推荐
相关产品推荐

