- 系统软件环境说明:
VMware Workstation Pro 16.1.2; Oracle Linux 8 iso安装包;Oracle Grid 19.3.0.0.0, Database 19.3.0.0.0
Oracle Linux 8系统安装好后,Oracle官方建议禁用操作系统的Transparent HugePages功能,改为使用标准的HugePages功能。默认启用的Transparent HugePages功能,在运行时会导致内存延迟分配,进而导致Oracle数据库出现性能问题。
Transparent HugePages(透明大页)和Standard HugePages (标准大页)不同,使用透明大页的话,内核 khugepaged 线程会在运行时动态地分配内存;使用标准大页,则会在启动时预先分配好内存,在运行时不会再发生更改。
处理方法如下:
1)验证透明大页功能是否启用:以root身份执行下列命令:
cat /sys/kernel/mm/transparent_hugepage/enabled
结果显示:[always] madvise never, 括号括在always上,表示启用了透明大页功能,只有括号括在never上,才表示禁用了透明大页功能。
2)vim /etc/default/grub,修改下列行为:
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet transparent_hugepage=never" (新添加的内容如红字所示)
保存配置,并使用下列命令使之生效:
grub2-mkconfig -o /boot/grub2/grub.cfg
3)重启服务器,并再次验证/sys/kernel/mm/transparent_hugepage/enabled结果文件,括号已括在never上。
2、系统软硬件环境说明:
HP暗影精灵3笔记本,Intel Core i7-7700HQ处理器,32G内存,1TB NVMe硬盘。
虚拟机使用的资源:
CPU:4 vCPU; Memory: 16GB; SSD: 125G系统盘,125G数据盘,数据盘中按50G放置ASM实例,50G放置Database实例文件,50G盘做Fast Recovery Area快速恢复区使用。
系统盘中,SWAP分区分配16GB的空间,用于后期的Oracle数据库软件打补丁之用,如果使用系统自动创建的SWAP空间大小,在打补丁时,软件会提示空间不足的问题。
在操作系统安装好后,需要在/etc/hosts文件中,添加下列解析记录, 如下图所示:
192.168.116.132 oralinuxsrv.localdomain oralinuxsrv
其中,192.168.116.132是操作系统获得的IP地址,oralinuxsrv是主机名称。
创建的虚拟机名称取为:Oracle Linux Server
3、安装Oracle 19c Database的预安装包
以root身份,从Oracle repository默认安装源,安装19c Database的预安装包:
# yum -y install oracle-database-preinstall-19c
预安装包会在系统中创建oracle用户(用于数据库的安装),必要的系统组:oinstall, backupdba, dgdba, kmdba, racdba, 并将oracle加入到上述组中。
在操作系统的“Settings/Details/Users”界面,将oracle的Acount Type设置为Administrator, 将赋与Password (或者通过root身份,用passwd oracle命令给oracle帐号设置密码)。
4、为grid帐号准备必要的用户组
帐号grid专用于Grid软件的安装配置过程。第3步执行的19c Database的预安装包已经完成大部分grid帐号需要使用的用户组创建。剩下组号为54327-53329三个组没有创建。使用下列命令补齐:
# groupadd -g 54327 asmdba
# groupadd -g 54328 asmoper
# groupadd -g 54329 asmadmin
创建grid用户并添加到下列组中:
# useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba grid
后期,为了让oracle用户能够使用和管理由grid帐号创建ASM磁盘组,需要将oracle同时加入到asmadmin组中,指令如下:
# usermod -a -G asmdba,asmoper,asmadmin oracle (必须使用-a参数,以添加组身份)
在操作系统的“Settings/Details/Users”界面,将grid的Acount Type设置为Administrator, 将赋与Password (或者通过root身份,用passwd grid命令给grid帐号设置密码)。
5、辅助工具rlwrap-0.37.tar.gz的安装过程
工具软件rlwrap,用于支持在sqlplus环境下,记录历史命令,并可使用上下箭头来提取前面已执行过的命令,重新执行,以减少输入,提高工作效率。
将rlwrap-0.37.tar.gz通过文件管理器,利用smb协议,从Windows系统中获取,放入oracle帐号的Downloads目录下,如下图所示:
在Downloads目录中,打开一个Terminal界面,使用su命令,进入root用户环境,执行下列命令,用于准备rlwrap软件需要使用的软件环境:
# yum -y install libtermcap-devel
将readline-5.0.tar.gz复制到Downloads中,完成readline软件的解压,编译、安装过程(./configure, make, make install)。
以root身份,修改环境文件/etc/ld.so.conf, 增加下列两行:
include ld.so.conf.d/*.conf
/usr/local/lib
/usr/lib64
并执行下列命令:
# ldconfig
使用操作系统自带的tar解压缩软件,解压缩rlwrap安装包:
# tar zxpf rlwrap-0.37.tar.gz
软件rlwrap-0.37将解压缩到目录rlwrap-0.37中。进入到rlwrap-0.37,执行软件包的编译、安装过程:
cd /home/oracle/Downloads/rlwrap-0.37
# ./configure
确保过程成功完成。如果有任何错误,或缺失的依赖文件,需要做相应的处理。
# make
# make install
再一次执行下列命令:
# ldconfig
检查rlwrap软件是不是成功安装,需要执行下列命令:
# rlwrap –h
如果能正常显示软件的帮助内容,即说明该软件成功安装,如下图所示:
如何使用rlwrap软件?需要在oracle帐号的.bashrc启动文件中,添加下列别名,即可在sqlplus、rman等软件中使用历史命令:
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias adrci='rlwrap adrci'
alias ggsci='rlwrap ggsci'
6、修改操作系统的防火墙设置
使用root身份,修改操作系统防火墙配置,禁用防火墙。修改配置文件:/etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
关闭防火墙,并禁用防火墙(或者根据应用需要,开启必要的端口):
# systemctl stop firewalld.service
# systemctl disable firewalld.service
7、准备grid、oracle帐号的软件安装、工作环境
登录grid帐号环境,切换到root帐号,在系统根(/)目录下,创建下列目录:
# mkdir /oracle
# mkdir -p /oracle/grid
# mkdir -p /oracle/grid/app
# mkdir -p /oracle/grid/product
# mkdir -p /oracle/database
# mkdir -p /oracle/database/app
# mkdir -p /oracle/database/product
改变上述目录的拥有者:
# cd /oracle
# chown -R oracle:oinstall database/
# chown -R grid:oinstall grid/
# su - grid
为grid帐号,创建工作环境(修改.bash_profile文件):
# User specific environment and startup programs
export CV_ASSUME_DISTID=OEL7
export ORACLE_HOME=/oracle/grid/product
export ORACLE_BASE=/oracle/grid/app
export ORACLE_SID=+ASM
export PATH=$ORACLE_HOME/bin:/usr/local/bin:$HOME/.local/bin:$HOME/bin:$PATH
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
为了将.bash_profile文件配置立即生效,可执行下列命令:
$ source /home/grid/.bash_profile
为oracle帐号,创建工作环境(修改.bash_profile文件):
$ nano /home/oracle/.bash_profile
export CV_ASSUME_DISTID=OEL7
export ORACLE_HOSTNAME=oralinuxsrv
export ORACLE_HOME=/oracle/database/product
export ORACLE_BASE=/oracle/database/app
export ORACLE_UNQNAME=orclcdb
export DB_NAME=orclcdb
export ORACLE_SID=orclcdb
export PDB_NAME=pdb
export PATH=$ORACLE_HOME:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/perl/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
8、准备ASM裸磁盘
在虚拟机Oracle Linux Server的设置中,添加磁盘类型选择:NVMe, 其中硬盘2(50G)用于承载+ASM实例数据,硬盘3(50G)用于承载Database 实例数据文件,硬盘4(50G)用于承载Fast Recovery Area数据文件。新添加的磁盘不要做分区设置。
以grid帐号登录系统,将Grid软件的安装包,解压到$ORACLE_HOME(/oracle/grid/product)目录中:
$ cd $ORACLE_HOME
$ unzip -q /home/gird/Downloads/V982068-01.zip
$ su - root, 改变为root帐号,临时设置下列环境变量,用于创建ASM裸盘:
# export ORACLE_HOME=/oracle/grid/product
# export ORACLE_BASE=/tmp
使用Oracle ASM command line tool (asmcmd)去置备带有Oracle ASM Filter Driver特性的磁盘设备:
# cd $ORACLE_HOME/bin
# asmcmd afd_label DATA1 /dev/nvme0n2 --init (注意:这里是2个“-”)
# asmcmd afd_label DATA2 /dev/nvme0n3 --init
# asmcmd afd_label DATA3 /dev/nvme0n4 --init
验证上述设备是否已被打上Oracle ASMFD标识,如下图:
# asmcmd afd_lslbl /dev/nvme0n2
# asmcmd afd_lslbl /dev/nvme0n3
# asmcmd afd_lslbl /dev/nvme0n4
改变上述创建的ASM裸设备的拥有者:
# chown -R grid:oinstall /dev/nvme0n2 (注意:这里要设置为 grid:oinstall用户和组,设置为其它,有可能导致+ASM实例无法启动)
# chown -R grid:oinstall /dev/nvme0n3
# chown -R grid:oinstall /dev/nvme0n4
在/etc/rc.local文件中,添加上述命令,以确保/dev/nvme0n2p1,/dev/nvme0n3p1,/dev/nvme0n4p1所有者为grid:asmadmin
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
chown -R grid:oinstall /dev/nvme0n2
chown -R grid:oinstall /dev/nvme0n3
chown -R grid:oinstall /dev/nvme0n4
修改rc.local的文件特性,使其开机自动运行:
# chmod +x /etc/rc.local
删除root帐户下的ORACLE_BASE环境变量设置:
# unset ORACLE_BASE
9、执行Grid 软件的单独安装
以帐号grid登录系统,执行下列命令,选择Set up Software Only Grid软件的设置,如下图:
$ cd $ORACLE_HOME
$ ./gridSetup.sh
输入允许自动执行的root.sh脚本的root密码。
安装完成后,重启一下系统。
10、执行Grid 软件的Grid Restart安装设置
重新以grid帐号登录系统,执行下列命令,选择安装和配置Oracle Restart功能,如下图:
$ cd $ORACLE_HOME
$ ./gridSetup.sh
Change Discovery Path: /dev/nvme0*
Redundancy: 选择External
为+ASM实例,勾选/dev/nvme0n2p1磁盘,作用为存储空间。
为SYS、ASMSNMP帐号,创建同样的密码。
以root身份运行root.sh的结果:
以root身份,修改/etc/oratab文件, 将+ASM实例设置为允许自启动:
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM:/oracle/grid/product:Y # line added by Agent
以grid身份,运行asmca软件,创建业务数据库实例需要使用的数据空间,快速恢复区空间。
重启操作系统。
11、执行Database软件的单独安装设置
以oracle帐号登录系统,将Database软件的安装包,解压到$ORACLE_HOME(/oracle/database/product)目录中:
$ cd $ORACLE_HOME
$ unzip -q /home/oracle/Downloads/V982063-01.zip
运行数据库实例的安装程序(选择Set up Software Only),如下图:
$ ./runInstaller
成功安装后,重启系统。
12、运行dbca执行数据库实例的创建
以oracle身份,登录系统,运行dbca数据库实例创建工具:
$ dbca
选择Advanced configuration选择,如下图:
Global database name:orclcdb.localdomain
SID: orclcdb
勾选Create as Container database, 如下图:
选择Use following for the database storage attributes, 并选择Database files storage type为Automatic Storage Management (ASM), 选择Database files location: +DATA1/{DB_UNIQUE_NAME}
勾选Use Oracle-Managed Files (OMF), 如下图:
选择Fast Recovery Area为:+FRA1, Fast Recovery Area size: 40960 (分区空间的90%), 勾选Enable archiving, 如下图:
勾选Create a ne wlistener, Listener name: DBLISTENER, Listener port: 1522 (由于TCP 1521已用于Grid环境,故改用TCP 1522。要事先使用netstat –an | grep 1522, 确认TCP1522端口没有被其它应用占用),如下图:
为SYS, SYSTEM, PDBADMIN帐号,创建同样的密码。
使用root身份,修改/etc/oratab文件,允许+ASM、orclcdb数据库能自启动。
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM:/oracle/grid/product:Y # line added by Agent
orclcdb:/oracle/database/product:Y # line added by Agent
13、解决https://oralinuxsrv:5500/em界面无法访问的问题
使用https://oralinuxsrv:5500/em, 无法打开Enterprise Manager Express组件。
问题系由于$ORACLE_BASE/admin/orclcdb/xdb_wallet中文件访问权限不足导致。执行下列命令:
$ cd $ORACLE_BASE/admin/orclcdb/xdb_wallet
$ sudo chmod 640 *.*
重启一下系统,即可正常访问:https://oralinuxsrv:5500/em
使用下列命令,也可看到TCP 5500已处于侦听状态:
$ sudo netstat –an | grep 5500
修改数据库的界面,使用emx模式访问Enterprise Manager Express组件:
$ sqlplus / as sysdba
SQL> @?/rdbms/admin/execemx emx
用Firefox延长支持版访问:https://oralinuxsrv:5500/em
根据软件提示,下载并安装rpm版本的Flash Player插件包:
$ sudo rpm –ivh /home/oracle/Downloads/flash-player-npapi-release.x86_64.rpm
再次打开:https://oralinuxsrv:5500/em, 如下图所示:
至此,成功完成所有的安装、配置过程。
联系信息
以上信息仅供参考,有遗漏之处,在所难免。欢迎有同样兴趣的朋友,一起分享讨论。本人联系信息:无锡爱普尔信息科技有限公司,徐先生,微信和手机同号:18015329198。