前言
在学习《信息管理概论》这门课的时候,有一个基于Oracle 19c 的TPCH性能分析实验,当时对于TPCH一脸懵逼,完全不知所云,网上也没找到相关的资料,写作业的过程中异常艰难,尤其在使用控制文件的时候,真是丈二的和尚,摸不着头脑。
后来在度娘的海洋里遨游了一段时间后,终于把这个作业写完了。于是,在这里记录下TPCH性能分析的过程,希望能够帮助到后续需要的人。
0. TPCH下载http://www.tpc.org/tpc_documents_current_versions/current_specifications5.aspwww.tpc.org
在TPC官网下载TPC-H的说明文件(.pdf文件)和源码(.zip文件)
下载完成后,可以用VS编译生成项目。
1. 下载最新的Oracle 19c,安装Oracle数据库
Oracle 19c官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/index.htmldocs.oracle.com
Oracle 19c下载链接:https://www.oracle.com/database/technologies/oracle19c-windows-downloads.htmlwww.oracle.com
安装完成,使用LSNRCTL STATUS命令查看数据库状态:
C:\Users\weifeihong>lsnrctl status
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 30-11月-2019 15:30:29
Copyright (c) 1991, 2019, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
LISTENER 的 STATUS
------------------------别名 LISTENER
版本 TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
启动日期 29-11月-2019 20:48:47
正常运行时间 0 天 18 小时 41 分 53 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 C:\Oracle19c\network\admin\listener.ora
监听程序日志文件 C:\app\diag\tnslsnr\WEIFEIHONG2463\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=WEIFEIHONG2463)(PORT=5500))(Security=(my_wallet_directory=C:\APP\admin\orcl\xdb_wallet))(Presentation=HTTP)(Session=RAW))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orclXDB" 包含 1 个实例。
实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
2. 下载TPCH性能基准,阅读第二章的数据库模式相关内容,创建TPC-H数据库表
创建tpch用户
create user tpch identified by 1
给tpch用户授权
grant dba to tpch
创建表方式一:使用dss.ddl脚本创建表
使用SQLPLUS登录tpch用户后,执行@dss.ddl:
SQL> @dss.ddl
表已创建。
表已创建。
表已创建。
表已创建。
表已创建。
表已创建。
表已创建。
表已创建。方式二:使用脚本直接创建表:
执行dss.ddl创建表后,再使用如下脚本创建表会提示表已创建。此处只将其作为一种建表方式。
CREATE TABLE NATION ( N_NATIONKEY INTEGER NOT NULL,
N_NAME CHAR(25) NOT NULL,
N_REGIONKEY INTEGER NOT NULL,
N_COMMENT VARCHAR(15