Oracle的官方安装包,除了软件外,还会自带一个示例数据库,准确地说,是几个示例schema,像HR用户,很多教程中用到的测试数据,其实就来自这。

如果是11g的examples,需要从官网,下载这个包,

p13390677_112040_Linux-x86-64_6of7.zip

上传服务器,解压,生成examples文件夹,内容如下,

[oracle@app examples]$ ls
install  readme.html  response  runInstaller  stage  welcome.html

如果是图形安装,执行./runinstaller即可,和正常的数据库软件安装很像。

如果当前服务器,不支持图形操作,和数据库软件一样可以选择静默安装。

此时,我们需要设置静默安装的配置文件,首先,将包中提供的响应文件模板,demos_install.rsp,删除空行、注释等,生成新的文件,install.rsp,

[oracle@app response]$ cat demos_install.rsp | grep -v ^# | grep -v ^$ > install.rsp

根据实际信息,填写相应内容,其实rsp文件中的内容和用图形界面安装需要选择的内容都是一一对应的,无非是静默安装,提前输入了需要选择的信息,

[oracle@app response]$ cat install.rsp 
oracle.install.responseFileVersion=/oracle/install/rspfmt_demosinstall_response_schema_v11_2_0
ORACLE_HOSTNAME=
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0.4
ORACLE_BASE=/u01/app/oracle
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=

带上响应文件的路径执行静默安装,

[oracle@app response]$ ./runInstaller -silent -force -ignorePrereq -ignoreSysPrereqs -responseFile /opt/app/software/examples/response/install.rsp

安装完成,$ORACLE/demo/schema中就存在mksample.sql脚本了,sqlplus执行@mksample.sql,就可以创建测试用户和数据了,

SQL> @mksample.sql
specify password for SYSTEM as parameter 1:
Enter value for 1: oracle


specify password for SYS as parameter 2:
Enter value for 2: oracle


specify password for HR as parameter 3:
Enter value for 3: oracle


specify password for OE as parameter 4:
Enter value for 4: oracle


specify password for PM as parameter 5:
Enter value for 5: oracle


specify password for IX as parameter 6:
Enter value for 6: oracle


specify password for  SH as parameter 7:
Enter value for 7: oracle


specify password for  BI as parameter 8:
Enter value for 8: oracle


specify default tablespace as parameter 9:
Enter value for 9: examples_tbs


specify temporary tablespace as parameter 10:
Enter value for 10: temp


specify log file directory (including trailing delimiter) as parameter 11:
Enter value for 11: /u01/app/oracle/diag/rdbms/xxx/XXX/trace


...

每个schema都是有他的含义,如下是他们的业务属性,

HR: Human Resources
OE: Order Entry
PM: Product Media
IX: Information Exchange
SH: Sales History
BI: Business Intelligence

如果有兴趣,可以读下mksample.sql,他会调用不同文件夹中的sql脚本,创建不同的用户,以及不同的数据,因此,可以有选择的创建个别用户,例如,只创建HR用户以及相关的数据,

[oracle@app response]$ cd /u01/app/oracle/product/11.2.0.4/demo/schema/human_resources
[oracle@app human_resources]$ ls
hr_analz.sql  hr_code.sql  hr_comnt.sql  hr_cre.sql  hr_dn_c.sql  hr_dn_d.sql  hr_drop.sql  hr_idx.sql  hr_main.sql  hr_popul.sql

其实这些脚本,写的非常标准,除了创建测试schema,我们也可以从中学习他的代码逻辑、注释风格、调用方式,是很好的借鉴。