HammerDB测试之Oracle安装及系统配置

本文主要介绍基于HammerDB测试的oracle的安装及环境配置,以被测机(System Under Test, SUT)的操作为主,末尾会简单介绍下控制端。
关于HammerDB这个数据库性能测试工具可以参考这里:数据库压力测试工具HammerDB

被测机(SUT)的系统配置及Oracle安装

操作系统:Redhat 7.3 x86_64
硬盘:2块NVME SSD
Oracle版本 12.1

  1. 下载并解压oracle安装包


首先建立几个文件夹

[root@hammer-server~]# mkdir /u01     
[root@hammer-server~]# mkdir /u01/app      # oracle安装目录
[root@hammer-server~]# mkdir /u01/software    # oracle安装包放置目录

Oracle官网下载oracle安装包,注意这里跟操作系统保持一致,也是选64位的 oracle官网下载链接

将oracle安装包放到/u01/software下

[root@hammer-server~]# ls /u01/software/
linuxamd64_12102_database_1of2.zip  linuxamd64_12102_database_2of2.zip    linuxamd64_12102_grid_1of2.zip   linuxamd64_12102_grid_2of2.zip  

解压后生成database和grid两个文件夹,先装grid 再装database。如果是直接使用文件系统而不打算使用**ASM(Automatic Storage Management)**进行管理硬盘,可以跳过grid安装这一步。

[root@hammer-server~]# ls /u01/software/
database     grid
  1. 创建oracle和grid 用户并设置oracle相关环境变量


分别创建oracle用户和grid用户,oracle用户用来装oracle database软件,grid用户用来安装oracle grid软件。

[root@hammer-server~]# groupadd dba       # 先新建dba用户组
[root@hammer-server~]# useradd oracle -g dba	     # 建立oracle用户并归属于dba用户组
[root@hammer-server~]# useradd grid -g dba        # 建立oracle用户并归属于dba用户组
[root@hammer-server~]# passwd oracle       # 创建用户密码
[root@hammer-server~]# passwd grid 

分别修改oracle用户和grid用户下的环境变量

  • oracle用户
[oracle@hammer-server ~]$ vi .bash_profile

添加以下内容

app_name=oracle
app_version=12.1.0.2
export ORACLE_BASE=/u01/app/$app_name
export ORACLE_HOME=$ORACLE_BASE/product/$app_version/db_1
export ORACLE_SID=hammer   #可以任意设置,但注意这个必须是后面建立数据库时的数据库实例名称
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/jdk/lib:$ORACLE_HOME/jdk/jre/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

  • grid用户
[grid@hammer-server ~]$ vi .bash_profile

添加以下内容

app_name=grid
app_version=12.1.0.2
export ORACLE_BASE=/u01/app/$app_name
export ORACLE_HOME=$ORACLE_BASE/product/$app_version/$app_name
export ORACLE_SID=+ASM
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin:$ORACLE_HOME/OPatch
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/jdk/lib:$ORACLE_HOME/jdk/jre/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

3.配置系统参数:修改 sysctl.conf文件和limits.conf文件,配置防火墙


  • 修改 sysctl.conf文件:最主要是设置hugepage,当然还有一些其他的参数可以设置以优化性能。
[root@hammer-server ~]# vi /etc/sysctl.conf   # 在文件结尾添加下一行
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.aio-max-nr = 3145728
fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 1

vm.min_free_kbytes = 512000
vm.nr_hugepages=120000  # (2M each, total 24G)根据系统内存设置,不合适的设置会导致系统无法启动,请谨慎操作

这里主要要注意oracle的使用需要打开hugepage,每个hugepage有2M,这里页数的设置取决于oracle参数所定义出的SGA (System Global Area)大小,hugepage的总容量大小需要大于SGA大小,稍微大于就好,太大则会浪费内存空间。
Note:注意大页的大小一定要小于系统总内存的大小,否则会导致无法正常使用系统并且重启机器时无法进入操作系统。

[root@hammer-server ~]# sysctl –p            # 使之生效
[root@hammer-server ~]# cat /proc/meminfo            # 查看内存使用情况
HugePages_Total:   120000

  • 修改limits.conf文件: 最主要是增大oracle用户和grid用户的最大文件打开数
[root@hammer-server ~]# vi /etc/security/limits.conf   # 在文件结尾添加如下内容
grid    hard    nofile  65536         # 增大grid用户最大文件打开数
grid    soft    nofile  65536
grid    soft    nproc   16384
grid    hard    nproc   16384
oracle  soft    nofile  65536		  # 增大oracle用户最大文件打开数
oracle  hard    nofile  65536 
oracle  soft    nproc   16384
oracle  hard    nproc   16384
oracle  soft    memlock 786432000    # 750G,根据系统情况设置
oracle  hard    memlock 786432000

[oracle@hammer-server ~]$ ulimit –a  # 查看是否生效,注意需要重新打开一个会话用oracle/grid用户登录才会生效 
open files                      (-n) 65536

  • 配置系统防火墙 否则控制机端无法访问被测机上的数据库。当然也可以直接关闭系统防火墙。

  • 硬盘格式化 分区和udev管理



考虑到性能方面的需求,oracle的测试需要至少两个硬盘,一个存放测试数据(data),一个存放oracle的重做日志(redo log)。

  • 硬盘格式化

如果硬盘以前使用过有数据,需要先将硬盘格式化。

  • 硬盘分区

如果要使用oracle中的ASM (Automatic Storage Management)去管理硬盘,需要先对硬盘进行分区,然后用linux中的udev工具去管理。
硬盘的分区可以用fdisk或者parted 工具。下面以parted为例,给nvme0n1盘建立一个分区。

[root@hammer-server ~]# parted /dev/nvme0n1  
(parted) help       # 查看帮助 
(parted) print      # 查看硬盘分区情况
Model: Unknown (unknown)
Disk /dev/nvme0n1: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) mklabel gpt   # 定义分区表格式 
(parted) mkpart primary 2048s 100%  # 建立分区,百分数代表新分区占硬盘总容量的百分比
(parted) align-check opt 1  # 对齐检查
1 aligned
(parted) print     # 分区成功,查看
Model: Unknown (unknown)
Disk /dev/nvme0n1: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  2000GB  2000GB                primary

  • udev管理

这里以Intel的PCIe SSD P3700为例,不同的硬盘这里使用的命令会有差异。
在/etc/udev/rules.d目录下新建一个.rules规则文件,可自己命名,但要以数字开头。

[root@hammer-server ~]# vi /etc/udev/rules.d/99-oracleasm.rules   添加如下内容
KERNEL=="nvme0n1p1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SNVMe_INTEL_SSDPEDMD02PHFT5364000B2P0EGN", SYMLINK+="oracle/DATA", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="nvme1n1p1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SNVMe_INTEL_SSDPEDMD02CVFT4415008A2P0EGN", SYMLINK+="oracle/REDO", OWNER="oracle", GROUP="dba", MODE="0660"

其中RESULT==双引号里的内容需要分别替换成运行PROGRAM里命令的结果,即如下命令:

[root@hammer-server ~]# usr/lib/udev/scsi_id -g -u -d /dev/nvme0n1
SNVMe_INTEL_SSDPEDMD02PHFT5364000B2P0EGN
[root@hammer-server ~]# usr/lib/udev/scsi_id -g -u -d /dev/nvme1n1
SNVMe_INTEL_SSDPEDMD02CVFT4415008A2P0EGN
[root@hammer-server ~]# udevadm test /block/nvme0n1/nvme0n1p1   # 测试
[root@hammer-server ~]# udevadm test /block/nvme1n1/nvme1n1p1

[root@hammer-server ~]# ls  /dev/oracle/ -l     	 # 查看该目录下是否有data和redo两个链接文件
total 0
lrwxrwxrwx 1 root root 12 Feb 14 02:34 DATA -> ../nvme0n1p1
lrwxrwxrwx 1 root root 12 Feb 14 02:38 REDO -> ../nvme1n1p1

[root@hammer-server ~]# ls /dev/nvme*n1p1 –al   		# 查看所属用户是否变为oracle用户
brw-rw---- 1 oracle dba 259, 2 Feb 14 06:07 /dev/nvme0n1p1
brw-rw---- 1 oracle dba 259, 4 Feb 14 06:07 /dev/nvme1n1p1
  1. grid安装 (ASM管理)


安装grid是为了使用ASM去建立DATA和REDO的disk group磁盘组,更有效率的管理磁盘。

[root@hammer-server ~]# mkdir /u01/app/grid   # 新建grid文件夹
[root@hammer-server ~]# chown –R grid:dba /u01   # 改变 /u01文件夹下的所属用户(注意是dba用户组的grid用户)

以grid用户重新登录

[grid@hammer-server ~]$ cd /u01/software/grid
[grid@hammer-server grid]$ ./runInstaller   # 运行安装程序,弹出安装窗口

选择单机服务器安装
这里写图片描述

grid的安装需要先至少有一个磁盘组disk group,这里选择change directory path为刚才生成的/dev/oracle,之后会显示出data和redo两个硬盘

这里写图片描述

这里写图片描述

选择硬盘data,注意选择’External’即没有冗余,提高数据写入效率(安全性低,仅用于测试,平常使用不推荐)
这里写图片描述

设置密码
这里写图片描述

都选择dba用户组
这里写图片描述

这里显示的路径就是环境变量里ORACLE_BASE和ORACLE_HOME的路径
这里写图片描述

这里写图片描述

oracle安装预检查系统是否配置好以及依赖包是否安装。如果提示缺失package用yum安装一下就可以了,然后‘check again’
这里写图片描述

如果最后仍然提示系统缺少swap size,那么可以‘ignore all’,性能测试中是用不到swap size的。
这里写图片描述

接下来安装install就可以了,直到出现如下提示对话框,以root用户运行这两条命令之后在点击ok继续安装。
这里写图片描述

安装成功
grid安装好了之后grid用户就可使用ASM命令了

[grid@hammer-server ~]$ asmcmd 
ASMCMD> ls         # 查看磁盘组
DATA/     		 # DATA磁盘组已建立
ASMCMD> quit

这里还需要建立REDO磁盘组

[grid@hammer-server ~]$ asmca  	# 启动ASM助手(图形界面)管理或添加磁盘组

这里写图片描述

点击create,和建DATA一样选择‘External’然后‘OK’
这里写图片描述

这里写图片描述

现在再查看磁盘组,能看到DATA和REDO两个了

[grid@hammer-server ~]$ asmcmd 
ASMCMD> ls         # 查看磁盘组
DATA/     		 
REDO/          # REDO磁盘组已建立
  1. Oracle安装


oracle的安装和前面grid的安装类似

[root@hammer-server ~]# mkdir /u01/app/oracle   # 新建oracle文件夹
[root@hammer-server ~]# chown oracle:dba /u01/app/oracle   # 改变新的文件夹下的所属用户(注意是dba用户组的oracle用户)

以oracle用户重新登录

[oracle@hammer-server ~]$ cd /u01/software/database
[oracle@hammer-server database]$ ./runInstaller  # 运行安装程序

仅安装数据库软件

这里写图片描述

选择单实例数据库
这里写图片描述

下一步显示的路径就是oracle用户下环境变量里ORACLE_BASE和ORACLE_HOME的路径
这里写图片描述

都选择dba用户组
这里写图片描述

继续ignore swap size,下一步安装,和grid安装一样,弹出窗口提示以root用户运行命令后再‘OK’继续安装。

这里写图片描述

  1. 建立数据库


安装成功之后使用dbca 数据库配置助手在oracle中建立数据库
[oracle@hammer-server ~]$ dbca

这里写图片描述

输入Global database name数据库实例名,需要和oracle用户的环境变量中ORACLE_SID一致,数据库文件位置选择在DATA上,设置密码
这里写图片描述

成功建立数据库后先不要关闭窗口,选择’password management’设置数据库中年SYS和SYSTEM用户的密码,这个密码会在HammerDB‘Build schema’的时候用到。
这里写图片描述

这里写图片描述

数据库建立之后可以使用sqlplus命令

[oracle@hammer-server ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 29 05:06:25 2015
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options

SQL> create pfile='/home/oracle/install.pfile' from spfile;

生成此刻数据库建立时的启动参数到install.pfile中。
数据库实例的启动需要一个参数文件,比如刚才生成的install.pfile,但这只是规定的最基本的一些参数。如果追求性能上的优化,需要根据自己的需要新建一个pfile文件作为自定义的oracle启动参数文件,它是进行数据库设计和性能调优的重要文件。

如果自己定义了一个pfile文件(这里hammer.pfile为例),这里需要注意,每一次数据库建立后的control file名称都是不同的,所以需要把install.pfile文件中的CONTROL FILE的值替换到hammer.pfile的CONTROL FILE项中,这样才可以成功用hammer.pfile启动数据库实例。

[oracle@hammer-server ~]$ cat hammer.pfile
_ash_enable=FALSE
_awr_restrict_mode=FALSE
_check_block_after_checksum=FALSE
_collect_undo_stats=FALSE
_db_block_check_objtyp=FALSE
_db_block_prefetch_limit=0
_disable_highres_ticks=TRUE
_first_spare_parameter=1
_numa_shift_enabled=FALSE
_resource_manager_always_off=TRUE
_trace_pool_size=0
_use_adaptive_log_file_sync=FALSE
_disable_logging=FALSE
_disable_selftune_checkpointing=TRUE
_disk_sector_size_override=TRUE
_enable_NUMA_interleave=TRUE
_enable_NUMA_support=TRUE
_fast_cursor_reexecute=TRUE
_in_memory_undo=TRUE
_kgl_hot_object_copies=8
aq_tm_processes=0
audit_trail=NONE
commit_logging=BATCH
commit_wait=NOWAIT
#compatible=12.2.0.1.0
compatible=19.0.0
control_files=‘+DATA/HAMMER/CONTROLFILE/current.262.321447751’,‘+DATA/HAMMER/CONTROLFILE/current.261.321447751’
db_16k_cache_size=53687091200
#db_4k_cache_size=53687091200
db_block_checking=false
db_block_checksum=false
db_block_size=8192
db_cache_size=200g #根据系统内存及Hugepage区域大小分配
db_create_file_dest=+DATA
db_file_multiblock_read_count=4
db_name=hammer
db_writer_processes=4
diagnostic_dest=/u01/app/oracle
disk_asynch_io=TRUE
dispatchers=‘(PROTOCOL=TCP) (SERVICE=hammerXDB)’
dml_locks=500
fast_start_mttr_target=0
java_pool_size=6442450944
large_pool_size=6442450944
lock_sga=TRUE
log_buffer=1073709056
log_checkpoint_interval=0
log_checkpoint_timeout=0
log_checkpoints_to_alert=TRUE
open_cursors=2000
parallel_max_servers=0
parallel_min_servers=0
pga_aggregate_target=3589934592
pre_page_sga=FALSE
processes=1000
query_rewrite_enabled=FALSE
remote_login_passwordfile=EXCLUSIVE
replication_dependency_tracking=FALSE
result_cache_max_size=0
shared_pool_size=11811160064
#statistics_level=‘TYPICAL’
#timed_statistics=true
statistics_level=‘BASIC’
timed_statistics=false
trace_enabled=FALSE
transactions=2000
transactions_per_rollback_segment=1
undo_management=AUTO
undo_retention=2
undo_tablespace=UNDOTBS1
use_large_pages=ONLY
_undo_autotune=FALSE
_db_writer_flush_imu=false
plsql_optimize_level=3
plsql_code_type=“NATIVE”

hammer.pfile中的CONTROL FILE修改了之后,使用hammer.pfile参数文件重启数据库

SQL> shutdown immediate;   # 先关闭数据库实例
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup pfile='hammer.pfile';   # 使用自定义的hammer.pfile参数文件启动数据库
ORACLE instance started.

Total System Global Area 3.4843E+11 bytes
Fixed Size                  7669992 bytes
Variable Size            2.5192E+10 bytes
Database Buffers         3.2212E+11 bytes
Redo Buffers             1107365888 bytes
ORACLE instance startup.
Database mounted.

新建tpc.sql文件,用于建立tpc和tpcctab表空间,根据自己需要选择增加多少个datafile。

drop tablespace tpc including contents and datafiles;
create tablespace tpc datafile '+DATA' size 31g extent management local segment space management auto;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;
alter tablespace tpc add datafile '+DATA' size 31g;

drop tablespace tpcctab including contents and datafiles;
create tablespace tpcctab datafile '+DATA' size 31g blocksize 16k extent management local segment space management auto;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
alter tablespace tpcctab add datafile '+DATA' size 31g;
exit;
SQL> @tpc.sql;   # 建立tpc和tpcctab表空间

增加undo表空间容量
添加几个数据文件datafile到现有的undo表空间,可以根据需要添加多个数据文件

SQL> alter tablespace undotbs1 add datafile '+DATA' size 31g;
SQL> alter tablespace undotbs1 add datafile '+DATA' size 31g;

在建立数据库时会有3个redo logfile group重做日志文件组自动建立到DATA磁盘组,需要将它从DATA移到REDO磁盘组,做这个之前需要了解以下事情:
数据库系统中至少要有2个redo logfile group循环使用,当一个用满了之后会做一个checkpoint。
只有当group 的状态为inactive时,才可以删除它,如果必须删除current 的group 需要先 alter system switch logfile;

因此我们需要在REDO上面新建2个新的redo logfile group然后再把原先DATA上的drop掉

SQL>select * from v$log  # 列出数据库中的redo logfile group
SQL>select* from v$logfile # 列出数据库中的redo logfile group的位置
SQL>alter database add logfile group 4 '+REDO' size 300g blocksize 4096;    
SQL>alter database add logfile group 5 '+REDO' size 300g blocksize 4096;
SQL>select *from v$log; # 查看是否建立成功
SQL>alter system switch logfile; # 切换current的logfile
SQL>alter system checkpoint; # 将要删除的logfile状态变为inactive
SQL>alter database drop logfile group 1;
SQL>alter database drop logfile group 2;
SQL>alter database drop logfile group 3;

控制机client 端的系统配置

  1. 安装Oracle客户端软件


同样新建dba用户组下的oracle用户

[root@hammer-server~]# groupadd dba 
[root@hammer-server~]# useradd oracle -g dba

配置oracle用户环境变量

[oracle@hammer-client ~]$ vi .bash_profile   添加
export ORACLE_HOME=/home/oracle/app/oracle/product/12.1.0/client_1
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=/home/oracle/HammerDB-2.23/lib:$LD_LIBRARY_PATH

解压oracle客户端安装包到某文件夹下

[oracle@hammer-client ~]$ cd oracle-client
[oracle@hammer-client oracle-client]$ ./runInstaller    # 运行安装程序

选择Runtime

这里写图片描述

这里写图片描述
接下来按照默认的设置一直安装下去就可以了。

  1. 安装HammerDB


HammerDB的安装可以参考上一篇文章:数据库压力测试工具HammerDB

安装成功后打开HammerDB可能会遇到如下报错:

[oracle@localhost HammerDB-2.23]$ ./hammerdb.tcl 
wish8.6: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory

原因是缺少某包

[root@localhost ~]# yum search libXss
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
========================================================= N/S matched: libXss ==========================================================
libXScrnSaver.i686 : X.Org X11 libXss runtime library
libXScrnSaver.x86_64 : X.Org X11 libXss runtime library

  Name and summary matches only, use "search all" for everything.
[root@localhost ~]# yum install libXScrnSaver.x86_64
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值