安装报告 (Installation Report)
安装日期:2026-08-15。本报告记录示例 schema 在本环境中的安装过程、账号信息、验证结果与已知限制。
1. 目标数据库
| 项目 | 值 |
|---|---|
| 数据库 | Oracle 23.26.3.0.0(26ai 系列),多租户架构 |
| 主机 / 端口 | 192.168.3.88:1521 |
| 容器 | CDB: ORCLCDB,PDB: ORCLPDB1(READ WRITE) |
| 连接串 | 192.168.3.88:1521/ORCLPDB1 |
| 组件 | XDB、SDO(Spatial)均 VALID |
2. 客户端工具(安装于本机)
| 工具 | 版本 | 位置 |
|---|---|---|
| SQLcl | 26.2.1.222.1617 | D:\tools\sqlcl |
| Instant Client (Basic) | 23.26.3.0.0 | D:\Program Files\instantclient-basic-oracle-23.26.3.0.0\instantclient_23_26 |
| Instant Client (Tools,含 SQL*Loader) | 23.26.3.0.0 | 同上(本次补充解压,提供 sqlldr.exe) |
3. 账号汇总
所有 schema 密码统一为 88888888,数据表空间统一为 sample,临时表空间 TEMP。
| 用户 | 密码 | 表空间 | 说明 |
|---|---|---|---|
| system / sys | 88888888 | - | 管理员账号(sys 以 SYSDBA 连接) |
| hr | 88888888 | sample | Human Resources |
| co | 88888888 | sample | Customer Orders |
| sh | 88888888 | sample | Sales History |
| oe | 88888888 | sample | Order Entry(归档,含 OC 子 schema) |
| pm | 88888888 | sample | Product Media(归档) |
4. 安装过程摘要
- HR / CO / SH(受支持 schema):以
system连接 PDB,分别在human_resources/、customer_orders/、sales_history/目录运行<schema>_install.sql,按提示输入密码88888888、表空间sample、覆盖 YES。SH 官方要求使用 SQLcl 运行。 - OE / PM(归档 schema):先按官方流程执行 perl 替换
__SUB__CWD__→D:/db-sample-schemas(生成了.bak备份),再以system连接,运行order_entry/oe_main.sql与product_media/pm_main.sql,传入 9 个参数(各 schema 密码、表空间sample、临时表空间TEMP、数据/日志路径、版本v3、连接串)。PM 通过 SQL*Loader 从客户端加载 LOB 数据。
5. 验证结果(provided = actual,全部一致)
HR:
| 表 | 行数 |
|---|---|
| regions / countries / departments / locations / employees / jobs / job_history | 5 / 25 / 27 / 23 / 107 / 19 / 10 |
CO:
| 表 | 行数 |
|---|---|
| customers / stores / products / orders / order_items / shipments / inventory | 392 / 23 / 46 / 1950 / 3914 / 1892 / 566 |
SH:
| 表 | 行数 |
|---|---|
| channels / costs / countries / customers / products / promotions / sales / times / supplementary_demographics | 5 / 82112 / 35 / 55500 / 72 / 503 / 918843 / 1826 / 4500 |
OE(93 个对象,0 无效;OC 类型 27 个,公共同义词 COE_ 5 个,HR→OE 授权 9 项):*
| 表 | 行数 |
|---|---|
| customers / orders / order_items / product_information / product_descriptions / inventories / warehouses / promotions | 319 / 105 / 665 / 288 / 8640 / 1112 / 9 / 2 |
PM(8 个对象,0 无效;SQL*Loader 加载 16 条记录,0 拒绝):
| 对象 | 行数 |
|---|---|
| print_media | 4 |
| textdocs_nestedtab(嵌套表) | 12 |
6. 已知限制
- OE 的 XDB 采购订单演示(
xdb03usg.sql):目录对象SS_OE_XMLDIR指向服务器端路径,而purchaseOrder.xml/.xsd文件在安装机本地、无法放置到远端服务器,因此 XDB 资源创建步骤失败(ORA-22288 / ORA-31001)。仅影响 XDB 演示资源,OE/OC 的表、视图、类型与数据完整。 - PM 的 BFILE 列(
print_media.ad_graphic):MEDIA_DIR目录对象已创建但指向本机路径字符串,服务器上无对应媒体文件,BFILE 定位符存在但DBMS_LOB.FILEEXISTS = 0。BLOB 数据(照片、文档等)均正常入库。
7. 日志位置
- HR / CO / SH:各 schema 目录下的
<schema>_install.log,运行输出副本在仓库根目录*_run_out.log。 - OE / PM:
logs/oe_oc_v3.log、logs/pm_main.log、logs/pm_p_lob.log(及运行输出副本logs/oe_run_out.log、logs/pm_run_out.log)。
8. 卸载方式
- HR / CO / SH:以特权用户运行各目录下的
<schema>_uninstall.sql。 - OE / PM:以特权用户执行
DROP USER oe CASCADE;与DROP USER pm CASCADE;。
9. 具体安装命令与步骤
以下命令在本机 Git Bash(Windows)中实际执行并验证通过。
/d/...为 Git Bash 路径写法,等价于D:/...。
9.1 工具准备
# 1) 下载并解压 SQLcl(需已装 Java 11+)
curl -sSL -o sqlcl-latest.zip https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip
unzip -q sqlcl-latest.zip -d /d/tools # 得到 /d/tools/sqlcl
# 2) 下载 Instant Client Tools 包(提供 sqlldr.exe),解压进已有 Basic 目录
curl -sSL -o ic-tools.zip "https://download.oracle.com/otn_software/nt/instantclient/2326300/instantclient-tools-windows.x64-23.26.3.0.0.zip"
unzip -q ic-tools.zip -d "/d/Program Files/instantclient-basic-oracle-23.26.3.0.0/instantclient_23_26/"
# zip 内含一层 instantclient_23_26/ 子目录,需将内容上移一层到 Basic 目录根
# 3) 建日志目录
mkdir -p /d/db-sample-schemas/logs
9.2 HR / CO / SH(受支持 schema,交互提示)
脚本用 ACCEPT 依次询问:密码、表空间、是否覆盖已存在 schema。以下用管道预填答案:
三行输入 = 密码 / 表空间 / 覆盖确认(空行回车 = 默认 YES)。
# HR
cd /d/db-sample-schemas/human_resources
printf '88888888\nsample\n\n' | /d/tools/sqlcl/bin/sql -S "system/88888888@192.168.3.88:1521/ORCLPDB1" @hr_install.sql
# CO
cd /d/db-sample-schemas/customer_orders
printf '88888888\nsample\n\n' | /d/tools/sqlcl/bin/sql -S "system/88888888@192.168.3.88:1521/ORCLPDB1" @co_install.sql
# SH(官方要求 SQLcl 运行)
cd /d/db-sample-schemas/sales_history
printf '88888888\nsample\n\n' | /d/tools/sqlcl/bin/sql -S "system/88888888@192.168.3.88:1521/ORCLPDB1" @sh_install.sql
三个脚本末尾自带的验证段(provided = actual 行数对比)会打印在输出与 <schema>_install.log 中。
9.3 OE / PM(归档 schema,参数传入)
归档脚本用 DEFINE &1..&9 接收参数(非交互提示),需先替换脚本与数据文件中的
__SUB__CWD__ 占位符为仓库绝对路径(官方安装流程,会生成 .bak 备份):
cd /d/db-sample-schemas
perl -p -i.bak -e 's#__SUB__CWD__#D:/db-sample-schemas#g' *.sql */*.sql */*.dat
OE(含 OC 子 schema) — @oe_main.sql 后跟 9 个参数:
cd /d/db-sample-schemas
printf 'exit\n' | /d/tools/sqlcl/bin/sql -S -L "system/88888888@192.168.3.88:1521/ORCLPDB1" \
@order_entry/oe_main.sql 88888888 sample TEMP 88888888 88888888 \
D:/db-sample-schemas D:/db-sample-schemas/logs/ v3 192.168.3.88:1521/ORCLPDB1
PM — @product_media/pm_main.sql 后跟 9 个参数(先确保 sqlldr 在 PATH 中):
export PATH="/d/Program Files/instantclient-basic-oracle-23.26.3.0.0/instantclient_23_26:$PATH"
cd /d/db-sample-schemas
printf 'exit\n' | /d/tools/sqlcl/bin/sql -S -L "system/88888888@192.168.3.88:1521/ORCLPDB1" \
@product_media/pm_main.sql 88888888 sample TEMP 88888888 88888888 \
D:/db-sample-schemas/product_media/ D:/db-sample-schemas/logs/ \
D:/db-sample-schemas/product_media/ 192.168.3.88:1521/ORCLPDB1
参数顺序说明(OE / PM 一致):
| # | 含义 | 本次取值 |
|---|---|---|
| 1 | 目标 schema 密码 | 88888888 |
| 2 | 默认表空间 | sample |
| 3 | 临时表空间 | TEMP |
| 4 | HR(OE 用)/ OE(PM 用)密码 | 88888888 |
| 5 | SYS 密码 | 88888888 |
| 6 | 数据/控制文件目录 | OE: D:/db-sample-schemas;PM: D:/db-sample-schemas/product_media/(PM 中同时写入目录对象 MEDIA_DIR) |
| 7 | 日志目录(末尾需带分隔符) | D:/db-sample-schemas/logs/ |
| 8 | OE: 版本号 v3(对应 coe_v3/loe_v3/poe_v3 系列脚本,注意不是 README 原写的 3);PM: 工作目录(存放 pm_p_lob.dat) |
OE: v3;PM: D:/db-sample-schemas/product_media/ |
| 9 | 连接串 | 192.168.3.88:1521/ORCLPDB1 |
说明:纯数字密码(
88888888)无需引号即可CREATE USER ... IDENTIFIED BY ...;
CREATE DIRECTORY不校验服务器路径是否存在,故 PM 的MEDIA_DIR指向本机路径也能完成安装。
9.4 验证抽查命令
/d/tools/sqlcl/bin/sql -S -L "system/88888888@192.168.3.88:1521/ORCLPDB1" <<'EOF'
select 'HR.employees='||count(*) from hr.employees;
select 'CO.orders='||count(*) from co.orders;
select 'SH.sales='||count(*) from sh.sales;
select 'OE.customers='||count(*) from oe.customers;
select 'PM.print_media='||count(*) from pm.print_media;
exit
EOF
完整的逐表行数对比见上文第 5 节验证结果。