跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

如何安装Oracle的示例方案_HR/SCOTT用户解锁与数据导入

Oracle 12c/19c 安装后 HR 和 SCOTT 用户默认是锁住的 装完 oracle 数据库(比如用 oracle database 12c 或 19c 的桌面版/企业版),
hr
和
scott
这两个示例用户通常处于
locked
状态,连不上,也查不到表。这不是安装失败,而是 oracle 默认安全策略:示例用户不自动启用。 解锁前得先确认实例是否跑起来、监听是否就绪,否则会误判为“解锁没用”。常见错误现象包括:
ORA-01017: invalid username/password
(密码错)、
ORA-28000: the account is locked
(明确提示锁了)。 必须用具有
DBA
权限的用户登录,比如
sys
或
system
HR
用户密码默认就是
hr
,
SCOTT
默认是
tiger
;但首次解锁时建议显式改密,避免后续被审计工具报弱口令 12c 及以后版本中,
HR
模式默认不带数据,需手动运行脚本导入;
SCOTT
更老,有些精简版安装甚至不附带其 SQL 脚本 用 sqlplus 解锁 HR 和 SCOTT 并重置密码 别打开 OEM 或 SQL Developer 点来点去——最稳的方式是命令行直连
sqlplus
,绕过图形层干扰。注意:必须连到
AS SYSDBA
,否则权限不够执行解锁。 操作步骤: 终端里执行:
sqlplus / as sysdba
依次执行:
ALTER USER hr ACCOUNT UNLOCK IDENTIFIED BY hr;
再执行:
ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;
如果提示
user does not exist
,说明该用户根本没创建,跳到下个副标题处理 为什么不能只用
UNLOCK
?因为 Oracle 12c+ 对已锁定账户,仅
ACCOUNT UNLOCK
不重置认证状态,仍可能报
ORA-01045
。必须搭配
IDENTIFIED BY
显式设密,哪怕设成原密码。 HR 用户不存在?运行 catqm.sql 和 hr_main.sql 补全示例方案 某些安装(尤其是自定义组件选择时取消了“Sample Schemas”),
HR
用户压根不会出现在
dba_users
里。这时不是解锁问题,是根本没建模。需要手动运行 Oracle 自带的建模脚本。 关键路径和依赖: 脚本位置通常在:
$ORACLE_HOME/demo/schema/human_resources/
(Linux/macOS)或
%ORACLE_HOME%\demo\schema\human_resources\
(Windows) 必须先确保
hr_main.sql
能访问到
catqm.sql
(它在
$ORACLE_HOME/rdbms/admin/
),否则报
SP2-0310: unable to open file
运行前确认当前连接用户是
system
,且密码正确;用
sys
会因角色权限问题卡在
CREATE ROLE
执行命令:
@?/demo/schema/human_resources/hr_main.sql hr hr TEMP users
(四个参数分别是:密码、默认表空间、临时表空间、用户表空间) 这个过程可能耗时 30–90 秒,期间没输出是正常的。结束后检查:
SELECT username, account_status FROM dba_users WHERE username IN ('HR', 'SCOTT');
—— 应显示
OPEN
。 SCOTT 用户脚本缺失?用 ubd.sql 或手建 emp/dept 表
SCOTT
在 19c 后的安装介质里经常被移除,
$ORACLE_HOME/demo/schema/scott/
目录可能为空。官方不再维护它,但很多教学场景仍依赖
emp
/
dept
表结构。 两个务实选择: 从 Oracle GitHub 公共仓库找存档版
scott.sql
(搜 “oracle sample schemas github”),下载后用
sqlplus scott/tiger @scott.sql
运行(前提是你已解锁并设好密码) 更轻量:直接粘贴经典建表语句(不用完整 schema)。例如:
CREATE TABLE emp (empno NUMBER PRIMARY KEY, ename VARCHAR2(10));
,再
INSERT
几条测试数据。够本地调试用,不占资源 千万别用网上流传的“一键导入所有示例”的 shell 脚本——它们常硬编码旧路径,且可能静默跳过错误,导致部分表没建成功却以为万事大吉 容易被忽略的一点:
SCOTT
的
emp
表里
mgr
字段是自关联外键,如果建表时没加
CONSTRAINT
定义,后续
JOIN
查询会慢,且
SQL*Plus
的
DESC emp
看不出缺失约束。

相关文章