vlambda博客
学习文章列表

【安装】CentOS7.7下图形化安装Oracle11gR2

安装数据库阶段是非常重要的一环,安装合理可以避免很多后续问题,当前生产环境基本都使用的CentOS7+Oracle11gR2的搭配,现将虚拟机环境下图形安装方式整理如下,内容包含:系统参数设置、数据库软件安装、监听配置及建库

一、准备工作

1、环境规划


设置 备注
内存 8G
交换分区(SWAP) 8G 物理内存16GB以内,SWAP的大小应该与物理内存相等;物理内存大于16GB时,SWAP的大小设置为16G
磁盘1 /oracle 软件安装盘,生产最小设置50G
磁盘2 /oradata 数据文件存放盘,根据业务情况设置大小
磁盘3 /backup 备份盘,考虑使用NFS
磁盘4 /archive 归档日志盘,根据业务情况设置大小

2、基本环境配置

2.1 系统检查和调整

  1. 检查hostname

hostname--修改:hostnamectl set-hostname 主机名
  1. 检查操作系统版本

uname -acat /etc/redhat-release
  1. 检查磁盘分区情况

df -h
  1. 检查内存情况

free -h
  1. 检查网卡信息

ifconfig

2.2 修改hosts文件

将IP、主机名对应关系添加到host文件,示例:

echo "192.168.10.136 xktest" >> /etc/hostscat /etc/hosts
2.3 配置语言环境变量
echo "export LANG=en_US" >> ~/.bash_profilesource ~/.bash_profile

2.4 准备文件系统

fdisk -l 查看磁盘
pvcreate /dev/sdb /dev/sdc /dev/sdd /dev/sde
vgcreate oravg /dev/sdbvgcreate datavg /dev/sdcvgcreate backvg /dev/sddvgcreate archvg /dev/sde
lvcreate -n oralv -L 20000M oravglvcreate -n datalv -L 20000M datavglvcreate -n backuplv -L 20000M backvglvcreate -n archivelv -L 20000M archvg
--格式化为xfs格式mkfs.xfs /dev/backvg/backuplvmkfs.xfs /dev/archvg/archivelvmkfs.xfs /dev/datavg/datalvmkfs.xfs /dev/oravg/oralv
设置文件系统自动挂载
vi /etc/fstab/dev/oravg/oralv /oracle xfs defaults 0 0/dev/datavg/datalv /oradata xfs defaults 0 0/dev/backvg/backuplv /backup xfs defaults 0 0/dev/archvg/archivelv /archive xfs defaults 0 0

或者采用如下方式

echo "/dev/oravg/oralv /oracle xfs defaults 0 0" >> /etc/fstab

创建挂载目录

mkdir /oraclemkdir /oradatamkdir /backupmkdir /archive

挂载

mount /oraclemount /oradatamount /backupmount /archive

2.5 关闭不必要的系统服务

  • 关闭防火墙

systemctl stop firewalldsystemctl disable firewalld
--关闭后查看状态systemctl status firewalld或 firewall-cmd --stat
  • 关闭selinux(重启生效)

--永久关闭vi /etc/selinux/config修改SELINUX参数为disabled
--临时关闭setenforce 0查看状态 getenforce

2.6 配置yum源

mount /dev/cdrom /mnt


备份原有文件

cd /etc/yum.repos.dmkdir bakmv *.repo bak/

生成配置文件

echo "[EL]" >> /etc/yum.repos.d/source.repoecho "name=Linux 7.x DVD" >> /etc/yum.repos.d/source.repoecho "baseurl=file:///mnt" >> /etc/yum.repos.d/source.repoecho "gpgcheck=0" >> /etc/yum.repos.d/source.repoecho "enabled=1" >> /etc/yum.repos.d/source.repo

检查内容

cat /etc/yum.repos.d/source.repo

2.7 安装所需包

yum -y install binutils compat-libstdc++-33 gcc gcc-c++ glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat openssh-clients compat-libcap1 xorg-x11-utils xorg-x11-xauth elfutils unixODBC unixODBC-devel libXp elfutils-libelf elfutils-libelf-devel smartmontools

单独安装

rpm -ivh compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm

2.8 修改资源限制参数

vi /etc/security/limits.conf
# ORACLE SETTINGoracle soft nproc 16384 oracle hard nproc 16384oracle soft nofile 16384oracle hard nofile 65536oracle soft stack 10240oracle hard stack 32768oracle soft memlock 8000000 --根据实际物理内存设置,单位KB,略低于物理内存,示例中内存8Goracle hard memlock 8000000 --根据实际物理内存设置,单位KB,略低于物理内存,示例中内存8G
vi /etc/security/limits.d/20-nproc.conf * soft nproc 16384

说明:

  • soft代表软件限制,hard代表硬件限制

  • 软件限制到了会报警,硬件限制到了会报错

  • nproc参数:操作系统级别对每个用户创建的进程数的限制

  • nofile参数:文件描述符(句柄)一个进程能够打开文件的次数,也就是一个进程能打开多少文件,影响应用的并发度

  • stack参数:堆大小

  • memlock参数:限制锁定内存的大小,单位KB,略低于物理内存

2.9 配置内核参数

vi /etc/sysctl.conf
# ORACLE fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 1258291kernel.shmmax = 5153960755kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048586#kernel.panic_on_oops = 1vm.nr_hugepages = 2600

sysctl -p 生效

参数 说明
fs.aio-max-nr 可以拥有的异步IO请求数,避免IO系统故障,默认
fs.file-max 允许的文件句柄最大数目,默认
kernel.shmall 控制共享内存页数=shmmax/PAGESIZE;getconf PAGESIZE 查看PAGESIZE
kernel.shmmax 单个共享内存段最大值,让数据库在一个共享段里容纳整个SGA。举例:假设有8G内存,数据库最大使用内存,不要超过物理内存的80%(SGA+PGA),所以8G内存情况下,SGA要小于4.8G,PGA要小于1.6G,计算shmmax值最大为4.8Gx1024x1024x1024=5153960755
kernel.shmmni 共享内存段的最大数量,默认
kernel.sem 空格不能去掉,信号参数,默认
net.ipv4.ip_local_port_range oracle本地ipv4端口范围
net.core.rmem_default 默认
net.core.rmem_max 默认
net.core.wmem_default 默认
net.core.wmem_max 默认
kernel.panic_on_oops CentOS7需要加上该参数,避免12cbug
vm.nr_hugepages 大内存页,默认4K/页,数据库建议用2M/页,该参数一定要大于SGA。计算方式:sga_max_size/2M+100~500M。8G内存情况下SGA最大4.8G,(4.8x1024)/2=2457.6,加一点得2600

检查大页情况

cat /proc/meminfo | grep Huge

2.10 创建用户、组及目录

创建组

/usr/sbin/groupadd -g 60001 oinstall/usr/sbin/groupadd -g 60002 dba/usr/sbin/groupadd -g 60003 oper

创建oracle用户

useradd -u 61001 -g oinstall -G dba,oper oraclepasswd oracle

注意:不建议使用echo “oracle” | passwd --stdin oracle 命令设置,该方式使用history可以看到密码,另有符号问题可能会导致bug

创建目录

mkdir -p /oraclemkdir -p /oracle/app/oracle/product/11.2.0mkdir -p /oracle/app/oraInventory

注意:不建议使用/u01作为目录,使用/oracle清晰避免误操作

修改所属组及授权

chown -R oracle:oinstall /oraclechown -R oracle:oinstall /oradatachown -R oracle:oinstall /backupchown -R oracle:oinstall /archive
chmod -R 775 /oraclechmod -R 775 /oradatachmod -R 775 /backupchmod -R 775 /archive

2.11 关闭透明大页

rac环境下会导致节点重启及性能问题
查看设置前情况

cat /sys/kernel/mm/transparent_hugepage/defragalways madvise [never]
cat /sys/kernel/mm/transparent_hugepage/enabledalways madvise [never]

【安装】CentOS7.7下图形化安装Oracle11gR2
修改设置

vi /etc/rc.d/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled;thenecho never > /sys/kernel/mm/transparent_hugepage/enabledfiif test -f /sys/kernel/mm/transparent_hugepage/defrag;thenecho never > /sys/kernel/mm/transparent_hugepage/defragfi
chmod +x /etc/rc.d/rc.local

设置后需要重启系统
【安装】CentOS7.7下图形化安装Oracle11gR2

2.12 修改numa功能

vi /etc/default/grub
在GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off" 这一行加上numa=off
--重新编译grub2-mkconfig -o /etc/grub2.cfg

【安装】CentOS7.7下图形化安装Oracle11gR2
参考:

  1. https://www.thegeekdiary.com/how-to-disable-numa-in-centos-rhel-67/

  2. https://www.cnblogs.com/wjoyxt/p/4804081.html

2.13 共享内存段

vi /etc/fstab没有的话加入下一行none /dev/shm tmpfs defaults,size=8G 0 0
--生效mount -o remount /dev/shm

2.14 配置环境变量

su - oraclevi ~/.bash_profile
export PATH#左侧显示PS1="[`whoami`@`hostname`:"'$PWD]'export TMP=/tmpexport LANG=en_USexport TMPDIR=$TMPexport ORACLE_UNQNAME=xktestexport ORACLE_SID=xktestexport ORACLE_BASE=/oracle/app/oracle;export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1;export NLS_DATA_FORMAT="yyyy-mm-dd HH24:MI:SS";export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;#线程标志export THREADS_FLAG=native;export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch#终端类型export ORACLE_TERM=xterm;#代表使用oracle用户创建的文件都是755权限,此处是反码umask=022

注意:等号前后不能有空格

二、安装Oracle软件

1、安装包上传解压

cd /tmp
--使用终端工具将压缩包上传p13390677_112040_Linux-x86-64_1of7.zipp13390677_112040_Linux-x86-64_2of7.zip
su - oracleunzip 解压解压缩完成后出现database文件夹 用户是oracle 组是oinstall

2、软件安装

cd database

CentOS7下安装11gR2有bug,需要执行如下安装命令

./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

注意:虚拟机环境无法打开图形化界面需要执行

export DISPLAY=192.168.10.1:0.0上面IP为本机IP

【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
安装前检查问题解决:

  • /tmp目录空间不足,清理空间即可,对实际安装无影响

  • 内核参数shmall不符合要求,勾选后点击【Fix&Check Again】,在root执行脚本解决

  • 缺少安装包,安装即可,pdksh包在7环境下不需要可选择ignore

【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
安装到86%报错,这里为CentOS7下安装11gR2的bug,处理方式:
/oracle/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk
先备份,再修改
搜索NMECTL这一行 在括号后面加上 -lnnz11 修改保存
【安装】CentOS7.7下图形化安装Oracle11gR2
再点击retry

【安装】CentOS7.7下图形化安装Oracle11gR2
root下执行脚本
【安装】CentOS7.7下图形化安装Oracle11gR2
到此软件安装完毕

三、配置监听

su - oracle
netca

【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
完成,查看1521端口是否被监听

netstat -an | grep 1521

【安装】CentOS7.7下图形化安装Oracle11gR2
查看监听状态

lsnrctl status

四、DBCA建库

【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
Database Name设置与SID相同,要与.bash_profile文件中ORACLE_SID相同
【安装】CentOS7.7下图形化安装Oracle11gR2
不安装EM
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
按照图示选择,数据文件路径设置为/oradata
【安装】CentOS7.7下图形化安装Oracle11gR2
不启动闪回区,先不启用归档
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
选择Custom,参数设置要符合2.7小节说明
另外不要使用AMM,与内存大页不兼容
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
注意:在step 10 if 11这一步,需要设置

  1. 控制文件多路复用

  2. system、sysaux、TEMP、UNDOTBS1 生产环境设置至少20G(20480M

  3. USERS表空间设置5G即可,

  4. 重做日志至少5组,至少200M/组

【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
【安装】CentOS7.7下图形化安装Oracle11gR2
建库完毕

--查看监听状态
lsnrctl status
--登陆数据库查看
sqlplus / as sysdba

五、总结

  1. 以上为系统参数设置、数据库软件安装、监听配置及建库过程,后续还有补丁安装、参数优化步骤

  2. 部分设置,如numa还需深入了解原理,实际验证

  3. 生产环境一般使用静默安装方式,后续另开一篇

  4. 安装、分区、建库等都可通过shell脚本简化流程,该部分需要加强