在Oracle 11g数据库的使用场景中,scott用户是官方提供的示例用户,包含emp、dept等经典测试表,很多初学者和测试人员都会用到。如果因为误操作删除了scott用户,或者该用户状态异常无法登录,就需要手动重建该用户。

重建前的准备工作
重建scott用户前需要先确认当前登录的数据库用户拥有足够的管理权限,通常需要使用sys或者system用户登录数据库,这两个用户是Oracle的默认管理员用户,拥有创建用户、分配权限的权限。
同时需要确认Oracle的安装目录下是否存在scott用户的建表脚本,默认路径为$ORACLE_HOME/rdbms/admin/utlsampl.sql,不同操作系统的路径格式略有差异,Windows系统下路径类似D:\app\用户名\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlsampl.sql。
具体操作步骤
1. 登录数据库
使用sys用户以sysdba身份登录数据库,执行以下命令:
-- 登录Oracle数据库,sys用户需要指定sysdba角色 sqlplus sys/密码 as sysdba
2. 执行重建脚本
登录成功后,直接执行utlsampl.sql脚本,该脚本会自动完成scott用户的创建、表的创建以及初始数据的插入:
-- 执行scott用户重建脚本,注意替换为实际的脚本路径 @D:\app\用户名\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlsampl.sql
如果执行过程中没有报错,说明脚本已经成功运行,此时scott用户已经被创建,默认密码为tiger。
3. 验证用户状态
可以查询数据库的用户表,确认scott用户是否存在,以及状态是否正常:
-- 查询scott用户的状态 select username, account_status from dba_users where username = 'SCOTT';
如果查询结果中account_status显示为OPEN,说明用户状态正常,可以正常登录。
4. 手动重建(脚本执行失败场景)
如果自动脚本执行失败,也可以手动执行以下步骤完成重建:
-- 1. 创建scott用户,设置密码为tiger
create user scott identified by tiger;
-- 2. 给用户分配基础权限,包括创建会话、创建表、使用表空间的权限
grant connect, resource to scott;
-- 3. 切换到scott用户
conn scott/tiger;
-- 4. 创建dept表
create table dept(
deptno number(2) primary key,
dname varchar2(14),
loc varchar2(13)
);
-- 5. 创建emp表
create table emp(
empno number(4) primary key,
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2)
);
-- 6. 插入初始测试数据
insert into dept values(10, 'ACCOUNTING', 'NEW YORK');
insert into dept values(20, 'RESEARCH', 'DALLAS');
insert into dept values(30, 'SALES', 'CHICAGO');
insert into dept values(40, 'OPERATIONS', 'BOSTON');
insert into emp values(7369, 'SMITH', 'CLERK', 7902, to_date('1980-12-17', 'yyyy-mm-dd'), 800, null, 20);
insert into emp values(7499, 'ALLEN', 'SALESMAN', 7698, to_date('1981-02-20', 'yyyy-mm-dd'), 1600, 300, 30);
insert into emp values(7521, 'WARD', 'SALESMAN', 7698, to_date('1981-02-22', 'yyyy-mm-dd'), 1250, 500, 30);
insert into emp values(7566, 'JONES', 'MANAGER', 7839, to_date('1981-04-02', 'yyyy-mm-dd'), 2975, null, 20);
insert into emp values(7654, 'MARTIN', 'SALESMAN', 7698, to_date('1981-09-28', 'yyyy-mm-dd'), 1250, 1400, 30);
insert into emp values(7698, 'BLAKE', 'MANAGER', 7839, to_date('1981-05-01', 'yyyy-mm-dd'), 2850, null, 30);
insert into emp values(7782, 'CLARK', 'MANAGER', 7839, to_date('1981-06-09', 'yyyy-mm-dd'), 2450, null, 10);
insert into emp values(7788, 'SCOTT', 'ANALYST', 7566, to_date('1987-04-19', 'yyyy-mm-dd'), 3000, null, 20);
insert into emp values(7839, 'KING', 'PRESIDENT', null, to_date('1981-11-17', 'yyyy-mm-dd'), 5000, null, 10);
insert into emp values(7844, 'TURNER', 'SALESMAN', 7698, to_date('1981-09-08', 'yyyy-mm-dd'), 1500, 0, 30);
insert into emp values(7876, 'ADAMS', 'CLERK', 7788, to_date('1987-05-23', 'yyyy-mm-dd'), 1100, null, 20);
insert into emp values(7900, 'JAMES', 'CLERK', 7698, to_date('1981-12-03', 'yyyy-mm-dd'), 950, null, 30);
insert into emp values(7902, 'FORD', 'ANALYST', 7566, to_date('1981-12-03', 'yyyy-mm-dd'), 3000, null, 20);
insert into emp values(7934, 'MILLER', 'CLERK', 7782, to_date('1982-01-23', 'yyyy-mm-dd'), 1300, null, 10);
-- 提交事务
commit;常见问题处理
如果重建后登录scott用户提示密码错误,可以使用sys用户重置密码:
-- 重置scott用户密码为tiger alter user scott identified by tiger;
如果用户状态显示为LOCKED,可以执行以下命令解锁:
-- 解锁scott用户 alter user scott account unlock;
完成以上操作后,就可以正常使用scott用户进行数据库相关的测试和学习了。
Oracle_11gscott用户用户重建数据库用户修改时间:2026-06-07 00:30:32