HR Schema无法正常部署:执行hr_main.sql时遇not spooling错误
问题描述
- 已通过以下SQL创建HR用户:
create user hr identified by hr default tablespace users temporary tablespace temp profile default quota unlimited on users;
- 已连接至SQL Developer,且HR Schema已解压到C盘
- 执行
hr_main.sql时传入以下参数并执行命令:
参数1:hr
参数2:users
参数3:temp
参数4:自定义密码
参数5:$ORACLE_HOME/demo/schema/log
参数6:localhost:1521/XEPDB1
执行命令:
@ C:\app\guru1\product\21c\dbhomeXE\demo\schema\human_resources\hr_main.sql
- 触发错误:
当前未进行假脱机操作
由CONNECT脚本命令创建的连接已断开
解决方案
替换环境变量为Windows实际路径
$ORACLE_HOME是类Unix系统的环境变量格式,Windows下要换成你实际的Oracle安装路径,把参数5改成:C:\app\guru1\product\21c\dbhomeXE\demo\schema\log。使用DBA权限用户执行脚本
不要用刚创建的HR用户执行hr_main.sql,切换成SYSTEM或SYS这类拥有DBA权限的用户连接SQL Developer后再操作——脚本里包含创建表、分配权限等操作,普通HR用户没有对应的权限。直接在脚本路径后拼接参数
在SQL Developer里执行带参数的脚本,要把所有参数按顺序直接跟在脚本路径后面,无需单独列参数列表,正确命令格式如下:
@ C:\app\guru1\product\21c\dbhomeXE\demo\schema\human_resources\hr_main.sql hr users temp 你的密码 C:\app\guru1\product\21c\dbhomeXE\demo\schema\log localhost:1521/XEPDB1
确保日志目录已存在
手动检查C:\app\guru1\product\21c\dbhomeXE\demo\schema\log文件夹是否存在,不存在就新建一个。脚本需要往这个目录写入日志文件,目录不存在会导致假脱机操作失败,进而引发连接断开的错误。验证表空间有效性
执行以下SQL确认users和temp表空间存在:
SELECT tablespace_name FROM dba_tablespaces;
若不存在则需要先创建对应表空间(XE版本默认自带这两个表空间,一般无需额外操作)。
内容的提问来源于stack exchange,提问作者kiran Kumar
相关产品推荐
相关产品推荐

