无法在SQLPlus中运行Oracle示例Schema脚本的问题求助
解决Oracle Docker容器中Sample Schema脚本路径引用问题
在Windows环境下通过Docker运行Oracle Express容器,部署Udemy Oracle SQL课程所需的Sample Schema时,执行mksample脚本出现路径引用错误,SQLPlus终端输出如下:
Connected. SP2-0310: unable to open file "__SUB__CWD__/human_resources/hr_main.sql" Connected. SP2-0310: unable to open file "__SUB__CWD__/order_entry/oe_main.sql" Connected. SP2-0310: unable to open file "__SUB__CWD__/product_media/pm_main.sql" Connected. SP2-0310: unable to open file "__SUB__CWD__/info_exchange/ix_main.sql" Connected. SP2-0310: unable to open file "__SUB__CWD__/sales_history/sh_main.sql" Connected. SP2-0310: unable to open file "__SUB__CWD__/bus_intelligence/bi_main.sql" Connected. not spooling currently SP2-0310: unable to open file "__SUB__CWD__/mkverify.sql"
文件夹结构说明:
- 根目录包含
mksample.sql和mkverify.sql - 根目录下有多个子文件夹:
human_resources、order_entry、product_media、info_exchange、sales_history、bus_intelligence,每个子文件夹内对应存放hr_main.sql、oe_main.sql等脚本
解决方案:
- 替换脚本占位符:打开根目录的
mksample.sql,将所有__SUB__CWD__字符串替换为容器内Sample Schema文件夹的绝对路径。例如若你将本地Sample Schema文件夹挂载到容器的/opt/oracle/samples,则替换为该路径。 - 正确挂载本地文件夹:启动Docker容器时,必须将本地的Sample Schema目录挂载到容器内可访问的路径,示例命令:
docker run -d -p 1521:1521 -v C:\your-local-sample-path:/opt/oracle/samples oracle/database:18.4.0-xe
(将C:\your-local-sample-path替换为你本地Sample Schema文件夹的实际路径)
- 进入容器指定目录执行脚本:通过
docker exec进入容器终端,切换到挂载的目录后再执行脚本:
docker exec -it <容器ID或名称> bash cd /opt/oracle/samples sqlplus system/你的密码 @mksample.sql
- 修复文件权限:确保容器内挂载目录的文件权限允许Oracle用户读取,执行以下命令:
chown -R oracle:oinstall /opt/oracle/samples
内容的提问来源于stack exchange,提问作者Paul D
相关产品推荐
相关产品推荐

