【安装】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 系统检查和调整
检查hostname
hostname--修改:hostnamectl set-hostname 主机名
检查操作系统版本
uname -acat /etc/redhat-release
检查磁盘分区情况
df -h
检查内存情况
free -h
检查网卡信息
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/sdevgcreate oravg /dev/sdbvgcreate datavg /dev/sdcvgcreate backvg /dev/sddvgcreate archvg /dev/sdelvcreate -n oralv -L 20000M oravglvcreate -n datalv -L 20000M datavglvcreate -n backuplv -L 20000M backvglvcreate -n archivelv -L 20000M archvg--格式化为xfs格式/dev/backvg/backuplv/dev/archvg/archivelv/dev/datavg/datalv/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 16384oracle hard nproc 16384oracle soft nofile 16384oracle hard nofile 65536oracle soft stack 10240oracle hard stack 32768oracle soft memlock 8000000 --根据实际物理内存设置,单位KB,略低于物理内存,示例中内存8Goracle hard memlock 8000000 --根据实际物理内存设置,单位KB,略低于物理内存,示例中内存8Gvi /etc/security/limits.d/20-nproc.confsoft nproc 16384
说明:
soft代表软件限制,hard代表硬件限制
软件限制到了会报警,硬件限制到了会报错
nproc参数:操作系统级别对每个用户创建的进程数的限制
nofile参数:文件描述符(句柄)一个进程能够打开文件的次数,也就是一个进程能打开多少文件,影响应用的并发度
stack参数:堆大小
memlock参数:限制锁定内存的大小,单位KB,略低于物理内存
2.9 配置内核参数
vi /etc/sysctl.conf# ORACLEfs.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 /archivechmod -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]
修改设置
vi /etc/rc.d/rc.localif 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/defragfichmod +x /etc/rc.d/rc.local
设置后需要重启系统
2.12 修改numa功能
vi /etc/default/grub在GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off" 这一行加上numa=off--重新编译grub2-mkconfig -o /etc/grub2.cfg
参考:
https://www.thegeekdiary.com/how-to-disable-numa-in-centos-rhel-67/
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 解压用户是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
安装前检查问题解决:
/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下执行脚本
到此软件安装完毕
三、配置监听
su - oracle
netca
完成,查看1521端口是否被监听
netstat -an | grep 1521
查看监听状态
lsnrctl status
四、DBCA建库
Database Name设置与SID相同,要与.bash_profile文件中ORACLE_SID相同
不安装EM
按照图示选择,数据文件路径设置为/oradata
不启动闪回区,先不启用归档
选择Custom,参数设置要符合2.7小节说明
另外不要使用AMM,与内存大页不兼容
注意:在step 10 if 11这一步,需要设置
控制文件多路复用
system、sysaux、TEMP、UNDOTBS1 生产环境设置至少20G(20480M)
USERS表空间设置5G即可,
重做日志至少5组,至少200M/组
建库完毕
--查看监听状态
lsnrctl status
--登陆数据库查看
sqlplus / as sysdba
五、总结
以上为系统参数设置、数据库软件安装、监听配置及建库过程,后续还有补丁安装、参数优化步骤
部分设置,如numa还需深入了解原理,实际验证
生产环境一般使用静默安装方式,后续另开一篇
安装、分区、建库等都可通过shell脚本简化流程,该部分需要加强
