武汉诺浰科技有限公司

技术知识

Oracle 12c 单机安装

RHEL7.6 12c 安装过程

 

 

主机名设置 
hostnamectl set-hostname oradb 
=================================================================================== 
本地光盘作为yum源 
/run/media/root/RHEL-7.6\ Server.x86_64/ 

mkdir /mnt/dvd 
ls -ld /mnt/dvd 

mount /dev/sr0 /mnt/dvd 

# cd /etc/yum.repos.d/ 
# vi rh76.repo 
[iso] 
name=Media 
baseurl=file:///mnt/dvd 
gpgcheck=0 
enabled=1 

# 清除yum缓存 
yum clean all 
# 缓存本地yum源 
yum makecache 
# 测试yum本地源  
yum list 

=================================================================================== 

建立用户和组 

/usr/sbin/groupadd -g 54321 oinstall 
/usr/sbin/groupadd -g 54322 dba 
/usr/sbin/groupadd -g 54323 oper 
/usr/sbin/groupadd -g 54324 backupdba 
/usr/sbin/groupadd -g 54325 dgdba 
/usr/sbin/groupadd -g 54326 kmdba 
/usr/sbin/useradd -u 54321 -g oinstall -G oinstall,dba,oper oracle 

echo "oracle" | passwd --stdin oracle  
echo "grid" | passwd --stdin grid 


修改分组 
usermod -a -G dba,oper  oracle   
说明:这里的usermod指修改,-a就相当于append  dba,oper是用户组,oracle指存在的用户 ,-G 标识组的意思 

将用户分配给主要用户组 
usermod -g oinstall oracle   说明:-g 用户初始化为指定为登录组 

=================================================================================== 
安装必要的文件包 

yum install -y compat-lib* 
yum install -y gcc-* 
yum install -y gcc-c++* 
yum install -y glibc-dev* 
yum install -y libaio-* 
yum install -y sysstat-* 
yum install -y binutils-* 
yum install -y glibc-* 
yum install -y libgcc-* 
yum install -y libstdc++* 
yum install -y make-* 


或者 


yum install binutils  compat-libstdc++-33   gcc  gcc-c++  glibc  glibc.i686  glibc-devel   ksh   libgcc.i686   libstdc++-devel  libaio  libaio.i686  libaio-devel  libaio-devel.i686  libXext  libXext.i686  libXtst  libXtst.i686  libX11  libX11.i686  libXau  libXau.i686  libxcb  libxcb.i686  libXi  libXi.i686  make  sysstat  unixODBC  unixODBC-devel  zlib-devel  zlib-devel.i686 compat-libcap1 -y 
=================================================================================== 


关闭防火墙 
[root@oradb]# systemctl stop firewalld 
[root@oradb]# systemctl disable firewalld 


关闭 SElinux 

sed -i  "s/SELINUX=enforcing/SELINUX=disabled/"  /etc/selinux/config 
cat /etc/selinux/config 


关闭禁用透明大页和配置HugePage【生产环境必须】 

关闭禁用透明大页 
Linux 7.4中的关闭方法 
当然Oracle Linux 默认已经关闭了THP,可以不用再进行关闭,但如果是Redhat 6,7,SUSE 11 那么还是需要手工来操作的 
Linux 7 之后,需要修改/etc/default/grub文件,添加transparent_hugepage=never,然后执行grub2-mkconfig,最后再重启系统 

cat /sys/kernel/mm/transparent_hugepage/enabled 
cat /sys/kernel/mm/transparent_hugepage/enabled 
如没有没有,则检查 
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 

如果/sys/kernel/mm/transparent_hugepage 和 /sys/kernel/mm/redhat_transparent_hugepage 这2个文件都不存在,那么就是在系统内核中移除了THP 

cat /etc/default/grub 
grub2-mkconfig -o /boot/grub2/grub.cfg 
reboot 

验证 
[root@oradb]# cat /sys/kernel/mm/transparent_hugepage/enabled 
always madvise [never] 
[root@oradb]# cat /proc/cmdline 

配置HugePage 

HugePage 的实际大小可以使用如下命令查看: 

$ grep Hugepagesize /proc/meminfo 

可以使用sysctl -w 命令临时生效: 
# sysctl -w vm.nr_hugepages=xxxx 

永久生效配置修改: /etc/sysctl.conf 文件添加如下内容: 
vm.nr_hugepages=xxxx 

# grep HugePages /proc/meminfo 


关闭avahi-daemon 
Avahi-daemon 可能会带来网络问题和bug,尤其是对于RAC系统,Oracle建议直接关闭 
[root@oradb]#  
systemctl stop avahi-daemon 
systemctl disable avahi-daemon 

创建目录 

mkdir -p /u01/app/oracle/product/12.2.0.1.0/dbhome_1 



oracle用户 
cat /home/oracle/.bash_profile  

export TMP=/tmp 
export TEMP=/tmp 
export TMPDIR=$TMP 
export ORACLE_SID=orcl 
export ORACLE_UNQNAME=oracle 
export JAVA_HOME=/usr/local/java 
export ORACLE_BASE=/u01/app/oracle 
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1.0/dbhome_1 
export ORACLE_TERM=xterm 
export NLS_DATE_FORMAT="YYYY:MM:DDHH24:MI:SS" 
export NLS_LANG=american_america.ZHS16GBK 
export TNS_ADMIN=$ORACLE_HOME/network/admin 
export ORA_NLS11=$ORACLE_HOME/nls/data 

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin 
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin 
export PATH 

LD_LIBRARY_PATH=$ORACLE_HOME/lib 
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib 
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib 
export LD_LIBRARY_PATH 

CLASSPATH=$ORACLE_HOME/JRE 
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib 
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib 
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib 
export CLASSPATH 

export THREADS_FLAG=native 

umask 022 

alias home='cd /u01/app/oracle/product/12.2.0.1.0/dbhome_1' 



修改资源限制  /etc/security/limits.conf 
[root@oradb]#  
cat >> /etc/security/limits.conf <<EOF 
oracle  soft  nproc  2047 
oracle  hard  nproc  16384 
oracle  soft  nofile  1024 
oracle  hard  nofile  65536 
oracle  soft  stack  10240 
oracle  hard  stack  32768 
oracle soft memlock 3145728 
oracle hard memlock 3145728 
EOF 

设置PAM 
确保加载了最新版本的 PAM,然后在 /etc/pam.d/login 文件中添加或编辑以下行: 
[root@oradb]#  
cat >> /etc/pam.d/login <<EOF 
session required pam_limits.so 
EOF 



配置NOZEROCONF 
vi /etc/sysconfig/network增加以下内容 
NOZEROCONF=yes 

也可以直接执行如下语法完成修改: 
echo "NOZEROCONF=yes"  >>/etc/sysconfig/network 


修改内核参数  /etc/sysctl.c

[root@oradb]# 

cat >> /etc/sysctl.conf <<EOF   
fs.aio-max-nr = 1048576 
fs.file-max = 6815744 
kernel.sem = 5010 64000 5010 256 
kernel.shmmni = 4096 
kernel.shmall = 8388608 
kernel.shmmax = 34359738367 
kernel.panic_on_oops = 1 
net.core.rmem_default = 262144 
net.core.rmem_max = 4194304 
net.core.wmem_default = 262144 
net.core.wmem_max = 1048576 
net.ipv4.conf.all.rp_filter = 2 
net.ipv4.conf.default.rp_filter = 2 
net.ipv4.ip_local_port_range = 9000 65500 
EOF 


dbserver【hostname  oradb】 
kernel.shmall = 13185268 
kernel.shmmax = 67508572160 


即刻生效 
[root@oradb]# 
sysctl -p 

kernel.sem:对应4个值 
SEMMSL、SEMMNS、SEMOPM、SEMMNI 

SEMMSL: 每个信号集的最大信号数量 
数据库最大 PROCESS 实例参数的设置值再加上 10 。 
Oracle 建议将 SEMMSL 的值设置为不少于 100 。 

SEMMNS:用于控制整个 Linux 系统中信号(而不是信号集)的最大数。 
Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。 
使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS 或 (SEMMSL * SEMMNI) 

SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。 
semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。 
一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL 。 
Oracle 建议将 SEMOPM 的值设置为不少于 100 。 

SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量。 
Oracle 建议将 SEMMNI 的值设置为不少于 100 。 


kernel.shmmni: 共享内存段的最大数量 
注意该参数不是shmmin,是shmmni,shmmin 表示内存段最小大小 
shmmni缺省值4096 足够
shmmax(bytes) = shmmni(page size, default 4k) * shmall (page的个数) 



shmall、shmmax参数要根据实际内存数进行调整,不然安装会有问题,静态安装很容易忽略 

kernel.shmall : 
该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。 
一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页), 
当内存为 12G 时, kernel.shmall = 3145728 
当内存为 16G 时, kernel.shmall = 4194304 
当内次为 32G 时, kernel.shmall = 8388608 
当内存为 64G 时, kernel.shmall = 16777216 
当内存为 128G 时, kernel.shmall = 33554432 

kernel.shmmax : 
是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。 
设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。 
至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低 ( 在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响 ) ,但是其他时候都不会有影响。 
官方建议值: 
32 位 linux 系统:可取最大值为 4GB ( 4294967296bytes ) -1byte ,即 4294967295 。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295 。 32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。 
64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。   
内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887 
内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183 
内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367 
内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735 
内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471 



安装必要的文件包 
yum install binutils  compat-libstdc++-33   gcc  gcc-c++  glibc  glibc.i686  glibc-devel   ksh   libgcc.i686   libstdc++-devel  libaio  libaio.i686  libaio-devel  libaio-devel.i686  libXext  libXext.i686  libXtst  libXtst.i686  libX11  libX11.i686  libXau  libXau.i686  libxcb  libxcb.i686  libXi  libXi.i686  make  sysstat  unixODBC  unixODBC-devel  zlib-devel  zlib-devel.i686 compat-libcap1 -y 


====================================================================================

在线客服
联系电话

159-2649-2641

微信

扫一扫 联系我