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

2021-04-22 17:16:12 浏览数 (1)

安装数据库阶段是非常重要的一环,安装合理可以避免很多后续问题,当前生产环境基本都使用的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
代码语言:javascript复制
hostname
--修改:hostnamectl set-hostname 主机名
  1. 检查操作系统版本
代码语言:javascript复制
uname -a
cat /etc/redhat-release
  1. 检查磁盘分区情况
代码语言:javascript复制
df -h
  1. 检查内存情况
代码语言:javascript复制
free -h
  1. 检查网卡信息
代码语言:javascript复制
ifconfig

2.2 修改hosts文件

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

代码语言:javascript复制
echo "192.168.10.136  xktest" >> /etc/hosts
cat /etc/hosts
代码语言:javascript复制
2.3 配置语言环境变量
代码语言:javascript复制
echo "export LANG=en_US" >> ~/.bash_profile
source ~/.bash_profile

2.4 准备文件系统

代码语言:javascript复制
fdisk -l 查看磁盘
代码语言:javascript复制
pvcreate /dev/sdb /dev/sdc /dev/sdd /dev/sde

vgcreate oravg /dev/sdb
vgcreate datavg /dev/sdc
vgcreate backvg /dev/sdd
vgcreate archvg /dev/sde

lvcreate -n oralv -L 20000M oravg
lvcreate -n datalv -L 20000M datavg
lvcreate -n backuplv -L 20000M backvg
lvcreate -n archivelv -L 20000M archvg

--格式化为xfs格式
mkfs.xfs /dev/backvg/backuplv
mkfs.xfs /dev/archvg/archivelv
mkfs.xfs /dev/datavg/datalv
mkfs.xfs /dev/oravg/oralv
代码语言:javascript复制
设置文件系统自动挂载
代码语言:javascript复制
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

或者采用如下方式

代码语言:javascript复制
echo "/dev/oravg/oralv  /oracle    xfs  defaults  0 0" >> /etc/fstab

创建挂载目录

代码语言:javascript复制
mkdir /oracle
mkdir /oradata
mkdir /backup
mkdir /archive

挂载

代码语言:javascript复制
mount /oracle
mount /oradata
mount /backup
mount /archive

2.5 关闭不必要的系统服务

  • 关闭防火墙
代码语言:javascript复制
systemctl stop firewalld
systemctl disable firewalld

--关闭后查看状态
systemctl status firewalld
或 firewall-cmd --stat
  • 关闭selinux(重启生效)
代码语言:javascript复制
--永久关闭
vi /etc/selinux/config
修改SELINUX参数为disabled

--临时关闭
setenforce 0
查看状态 getenforce

2.6 配置yum源

代码语言:javascript复制
mount /dev/cdrom /mnt

备份原有文件

代码语言:javascript复制
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak/

生成配置文件

代码语言:javascript复制
echo "[EL]" >> /etc/yum.repos.d/source.repo
echo "name=Linux 7.x DVD" >> /etc/yum.repos.d/source.repo
echo "baseurl=file:///mnt" >> /etc/yum.repos.d/source.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/source.repo
echo "enabled=1" >> /etc/yum.repos.d/source.repo

检查内容

代码语言:javascript复制
cat /etc/yum.repos.d/source.repo

2.7 安装所需包

代码语言:javascript复制
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

单独安装

代码语言:javascript复制
rpm -ivh compat-libstdc  -33-3.2.3-69.el6.x86_64.rpm

2.8 修改资源限制参数

代码语言:javascript复制
vi /etc/security/limits.conf

# ORACLE SETTING
oracle     soft    nproc   16384             
oracle     hard    nproc   16384
oracle     soft    nofile  16384
oracle     hard    nofile  65536
oracle     soft    stack   10240
oracle     hard    stack   32768
oracle     soft    memlock   8000000      --根据实际物理内存设置,单位KB,略低于物理内存,示例中内存8G
oracle     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 配置内核参数

代码语言:javascript复制
vi /etc/sysctl.conf

# ORACLE 
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 1258291
kernel.shmmax = 5153960755
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
#kernel.panic_on_oops = 1
vm.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

检查大页情况

代码语言:javascript复制
cat /proc/meminfo | grep Huge

2.10 创建用户、组及目录

创建组

代码语言:javascript复制
/usr/sbin/groupadd -g 60001 oinstall
/usr/sbin/groupadd -g 60002 dba
/usr/sbin/groupadd -g 60003 oper

创建oracle用户

代码语言:javascript复制
useradd -u 61001 -g oinstall -G dba,oper oracle
passwd oracle

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

创建目录

代码语言:javascript复制
mkdir -p /oracle
mkdir -p /oracle/app/oracle/product/11.2.0
mkdir -p /oracle/app/oraInventory

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

修改所属组及授权

代码语言:javascript复制
chown -R oracle:oinstall /oracle
chown -R oracle:oinstall /oradata
chown -R oracle:oinstall /backup
chown -R oracle:oinstall /archive

chmod -R 775 /oracle
chmod -R 775 /oradata
chmod -R 775 /backup
chmod -R 775 /archive

2.11 关闭透明大页

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

代码语言:javascript复制
cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]

cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

修改设置

代码语言:javascript复制
vi /etc/rc.d/rc.local

if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag;then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

chmod  x /etc/rc.d/rc.local

设置后需要重启系统

2.12 修改numa功能

代码语言:javascript复制
vi /etc/default/grub

在GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off" 这一行加上numa=off

--重新编译
grub2-mkconfig -o /etc/grub2.cfg

参考:

  1. https://www.thegeekdiary.com/how-to-disable-numa-in-centos-rhel-67/
  2. https://www.cnblogs.com/wjoyxt/p/4804081.html

2.13 共享内存段

代码语言:javascript复制
vi /etc/fstab
没有的话加入下一行
none    /dev/shm    tmpfs  defaults,size=8G  0    0

--生效
mount -o remount    /dev/shm

2.14 配置环境变量

代码语言:javascript复制
su - oracle
vi ~/.bash_profile
代码语言:javascript复制
export PATH
#左侧显示
PS1="[`whoami`@`hostname`:"'$PWD]'
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_UNQNAME=xktest
export ORACLE_SID=xktest
export 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、安装包上传解压

代码语言:javascript复制
cd /tmp

--使用终端工具将压缩包上传
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
代码语言:javascript复制
su - oracle
unzip 解压
解压缩完成后出现database文件夹 用户是oracle 组是oinstall

2、软件安装

代码语言:javascript复制
cd database

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

代码语言:javascript复制
./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

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

代码语言:javascript复制
export DISPLAY=192.168.10.1:0.0
上面IP为本机IP

安装前检查问题解决:

  • /tmp目录空间不足,清理空间即可,对实际安装无影响
  • 内核参数shmall不符合要求,勾选后点击【Fix&Check Again】,在root执行脚本解决
  • 缺少安装包,安装即可,pdksh包在7环境下不需要可选择ignore

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

再点击retry

root下执行脚本

到此软件安装完毕

三、配置监听

代码语言:javascript复制
su - oracle
netca

完成,查看1521端口是否被监听

代码语言:javascript复制
netstat -an | grep 1521

查看监听状态

代码语言:javascript复制
lsnrctl status

四、DBCA建库

Database Name设置与SID相同,要与.bash_profile文件中ORACLE_SID相同

不安装EM

按照图示选择,数据文件路径设置为/oradata

不启动闪回区,先不启用归档

选择Custom,参数设置要符合2.7小节说明 另外不要使用AMM,与内存大页不兼容

注意:在step 10 if 11这一步,需要设置

  1. 控制文件多路复用
  2. system、sysaux、TEMP、UNDOTBS1 生产环境设置至少20G(20480M)
  3. USERS表空间设置5G即可,
  4. 重做日志至少5组,至少200M/组

建库完毕

代码语言:javascript复制
--查看监听状态
lsnrctl status
--登陆数据库查看
sqlplus / as sysdba

五、总结

  1. 以上为系统参数设置、数据库软件安装、监听配置及建库过程,后续还有补丁安装、参数优化步骤
  2. 部分设置,如numa还需深入了解原理,实际验证
  3. 生产环境一般使用静默安装方式,后续另开一篇
  4. 安装、分区、建库等都可通过shell脚本简化流程,该部分需要加强

0 人点赞