为 oracle19c 创建 hr 样例数据库

本文最后更新于:2020年8月16日 下午

报了 ORA-20000: Schema “HR” does not exist or insufficient privileges 错找了半天才找到解决方法。

前言

这学期开了大型数据库的课,要用 Oracle 的数据库。但老师的实验是用 Oracle 的样例数据库。而我看了看,我没有这个啊。

怎么办呢?查了一下,原来是这个数据库要自己安装。于是跟着教程走了一遍,不过出了点问题,但搜了一下还是解决了。

于是记录一下,方便自己以后用以及和我遇到了一样的问题的人。

环境

  1. Windows10 1909
  2. Oracle Database 19c 19.3
  3. Oracle Database 19c Client (19.3)

安装步骤

不知道你是安的 client 还是 db。最开始我安的db,但老师又安了client,所以我也跟着安装,结果这东西好像client 的覆盖了 db 的路径。莫名其妙的。也不知道 db 安装了到底有啥用。

总之我发现现在的环境变量是 client 的而不是 db 的。而我们要安装这个样例数据库的话,可以用 Oracle 官方的脚本,但这个脚本是包含在 db 的而不是 client 里的。所以要用的话可以从 db 的文件夹里复制脚本到 client 的文件夹里。

找到脚本

db 里复制

去你下的那个安装包解压的地方,比如 \WINDOWS.X64_193000_db_home 这样的。

然后复制这个文件夹下的 demo 文件夹到 \WINDOWS.X64_193000_client_home 这个文件夹里。

用这个方法的是和我一样先装了 db 后装了 client 的。如果你只装了 db 或者先装了 client 后装了 db 的那就无所谓了,因为默认的环境变量的下面就有这个。

从 github 上下载

Oracle 官方在 github 上放了脚本来安装样例数据库,可以 点这里 去下载最新的脚本。

下载完了后,把里面的文件夹都拷出来,放的位置是\WINDOWS.X64_193000_client_home\demo\schema。没有这个文件夹的可以自己创建。

安装

总之现在把脚本放在了指定的地方,其实也可以不放在这里,但我主要是为了方便用环境变量做解释。
现在连接 sqlplus, 用 sys 账号,以 sysdba 的身份登录
然后输入如下的命令

sql>@?/demo/schema/human_resources/hr_main.sql;

现在就是正式创建了,输入之前的命令后会出现下面这样的字样。
我一步步翻译解释一下吧。

  • 输入 HR 的密码

这里我输入的是 hr 作为密码

specify password for HR as parameter 1:
Enter value for 1: hr
  • 输入 HR 的默认表空间

这里我把 user 作为默认表空间

specify default tablespeace for HR as parameter 2:
Enter value for 2: user
  • 输入 HR 的临时表空间

这里我把 temp 作为临时表空间

specify temporary tablespace for HR as parameter 3:
Enter value for 3: temp
  • 输入 log 存放的地址

这里我把直接把它放在了数据库程序的 ~/demo/schema/log/这个文件夹里面

specify log path as parameter 4:
Enter value for 4:  $ORACLE_HOME/demo/schema/log/

这个时候有些人会报错,像下面这样

Comment created.


Commit complete.

BEGIN dbms_stats.gather_schema_stats('HR'                            ,                granularity => 'ALL'            ,                cascade => TRUE                 ,                block_sample => TRUE            ); END;

*
ERROR at line 1:
ORA-20000: Schema "HR" does not exist or insufficient privileges
ORA-06512: at "SYS.DBMS_STATS", line 3701
ORA-06512: at "SYS.DBMS_STATS", line 24470
ORA-06512: at "SYS.DBMS_STATS", line 24435
ORA-06512: at line 1

报错 ORA-20000: Schema “HR” does not exist or insufficient privileges

这是因为 HR 用户之前没有被创建,而脚本自己好像又建不了。而 Oracle 19c 要求自建用户的用户名的格式是 c##hr 而不是hr 这样的。但我们要求用的用户名是hr。所以就得输入下面的命令来改变一下。

SQL> alter session set "_ORACLE_SCRIPT"=true;

然后我们就可以再运行上面的脚本来搞定了。

当出现下面这样的字样时就说明搞定了

Comment created.


Commit complete.


PL/SQL procedure successfully completed.

现在我们打开新的终端或者 sql devoloper 来连接试试吧。

参考文章

oracle 19c 创建 sample schema-HR,OE,SH 等等
ORA-20000: Schema “HR” does not exist or insufficient privileges in Oracle Database 19C(主要参考的这篇文章)