ORACLE 18c之DATAGUARD搭建一主两备物理standby(静默安装)

1. 前言

  Oracle Data Guard可确保企业数据的高可用性,数据保护和灾难恢复。

  Oracle Data Guard提供了一套全面的服务,可以创建,维护,管理和监视一个或多个备用数据库,以使生产Oracle数据库能够在灾难和数据损坏中幸免。Oracle Data Guard将这些备用数据库维护为生产数据库的副本,然后,如果生产数据库由于计划内或计划外的停机而变得不可用,则Oracle Data Guard可以将任何备用数据库切换为生产角色,从而最大程度地减少与停机相关的停机时间。Oracle Data Guard可以与传统的备份,还原和集群技术一起使用,以提供高水平的数据保护和数据可用性。

  借助Oracle Data Guard,管理员可以选择通过将资源密集型备份卸载并向备用系统报告操作来提高生产数据库的性能。(来源网络)

  本次测试环境的一主两备规划如下:根据dataguard的搭建方案,在Primary库上安装数据库软件,并建监听和实例,在Standby库上安装数据库软件,并建监听,但不建实例。

2. Master服务器Oracle数据库安装与配置说明

  本节说明master服务器(192.183.3.112)Oracle 18c数据库服务器的安装与配置情况,以便日后开发与管理参考。

2.1 安装前准备

2.1.1 数据库下载

  说明:目标服务器(192.183.3.112)安装的是非图形界面系统,需静默方式安装数据库,系统版本与内核情况查询如下:

[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@master ~]# cat /proc/version
Linux version 3.10.0-1062.1.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Mon Sep 30 14:19:46 UTC 2019
   Oracle 18c的下载源:https://www.oracle.com/database/technologies/oracle18c-linux-180000-downloads.html。如果在之前的数据版本上直接升级为18c,那么需要原版本为:11.2.0.4、12.1.0.2、12.2.0.1,其他的版本必须先升级到中间版本再升级到18c。
2.1.2 操作系统软硬件检查
  • 物理内存要求
   查看物理内存命令(约126G):
[root@master ~]# grep MemTotal /proc/meminfo
MemTotal:        7966904 kB
  • 虚拟内存要求
      对应上表可知虚拟内存要求,查看虚拟内存命令(约62G):
[root@master ~]#  grep SwapTotal /proc/meminfo
SwapTotal:       8257532 kB
  • /tmp空间要求

   /tmp磁盘空间至少1GB,如果不足1G需设置oracle用户的TMP和TMPDIR环境变量。

  查询命令:# df -h /tmp

[root@master ~]#  df -h /tmp
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  6.7G   44G  14% /
  • 安装目录要求

  对数据库安装目录,需至少7.5G空间,本次安装目录为/home/app/oracle下。

[root@master ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  6.7G   44G  14% /
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.8G     0  3.8G   0% /dev/shm
tmpfs                    3.8G  8.6M  3.8G   1% /run
tmpfs                    3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/sda1                494M  125M  369M  26% /boot
/dev/mapper/centos-home  408G   21G  387G   6% /home
tmpfs                    779M     0  779M   0% /run/user/0
  • RPM包要求
binutils-2.23.52.0.1-12.el7.x86_64 
compat-libcap1-1.10-3.el7.x86_64 
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64 
gcc-c++-4.8.2-3.el7.x86_64 
glibc-2.17-36.el7.i686 
glibc-2.17-36.el7.x86_64 
glibc-devel-2.17-36.el7.i686 
glibc-devel-2.17-36.el7.x86_64 
ksh
libaio-0.3.109-9.el7.i686 
libaio-0.3.109-9.el7.x86_64 
libaio-devel-0.3.109-9.el7.i686 
libaio-devel-0.3.109-9.el7.x86_64 
libgcc-4.8.2-3.el7.i686 
libgcc-4.8.2-3.el7.x86_64 
libstdc++-4.8.2-3.el7.i686 
libstdc++-4.8.2-3.el7.x86_64 
libstdc++-devel-4.8.2-3.el7.i686 
libstdc++-devel-4.8.2-3.el7.x86_64 
libXi-1.7.2-1.el7.i686 
libXi-1.7.2-1.el7.x86_64 
libXtst-1.2.2-1.el7.i686 
libXtst-1.2.2-1.el7.x86_64 
make-3.82-19.el7.x86_64 
sysstat-10.1.5-1.el7.x86_64
unixODBC-2.3.1-6.el7.x86_64 or later
unixODBC-2.3.1-6.el7.i686 or later
unixODBC-devel-2.3.1-6.el7.x86_64 or later
unixODBC-devel-2.3.1-6.el7.i686 or later

  安装前查看需要的RPM包安装情况,安装缺失的RPM包,这里就不赘述。

[root@master ~]# rpm -q binutils compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 gcc gcc-c++ glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 ksh libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686  libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 make sysstat unixODBC.i686 unixODBC.x86_64 unixODBC-devel.i686 unixODBC-devel.x86_64
[root@master ~]# yum -y install compat-libcap1 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 glibc.i686 glibc-devel.i686 libaio.i686 libaio-devel.i686 ksh libgcc.i686 libstdc++.i686 libstdc++-devel.i686 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 unixODBC.i686 unixODBC-devel.i686 sysstat unixODBC.x86_64 unixODBC-devel.x86_64
  • 关闭SELinux
[root@master ~]# vim /etc/sysconfig/selinux
  • 创建用户、用户组以及安装目录
[root@master ~]# groupadd -g 54321 oinstall
[root@master ~]# /usr/sbin/groupadd -g 54322 dba
[root@master ~]# groupadd -g 54323 oper
[root@master ~]# /usr/sbin/groupadd -g 54324 backupdba
[root@master ~]# /usr/sbin/groupadd -g 54325 dgdba
[root@master ~]# useradd -g oinstall -G dba oracle oper 
[root@master ~]# usermod -a -G backupdba,dgdba,oper oracle
[root@master ~]# mkdir -p /home/app/oracle
[root@master ~]# mkdir -p /home/app/oraInventory
[root@master ~]# mkdir -p /home/app/oracle/product/18.3.0/dbhome_1
[root@master ~]# chown -R oracle:oinstall /home/app
[root@master ~]# chmod -R 775 /home/app
[oracle@master ~]$ cd /home/app/oracle/product/18.3.0/dbhome_1

  注意:将安装文件解压到Oracle Home下,这里和Oracle 18c之前的版本不同,之前的版本解压的安装文件可以在任何位置,Oracle解压的安装文件必须在Oracle Home下,因为仅从Oracle home运行runInstaller命令,不要从任何其他位置运行runInstaller。

[oracle@master dbhome_1]$ unzip -q /home/softwares/oracle/LINUX.X64_180000_db_home.zip
  • 配置Oracle用户shell limit
[root@master ~]# vim /etc/security/limits.conf
 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
  • 修改系统内核参数
      建议参考值:

  参数详解如下:

  1)fs.aio-max-nr = 1048576:同时可以拥有的的异步IO请求数目,1048576 即 1024*1024 也就是1024K个。

  2)fs.file-max = 6553600:系统允许打开的文件数。

  3)kernel.shmall = 2097152:指定任意时刻,系统中可以分配的所有共享内存段的总和的最大值,也可以保留默认值,这个值太小有可能导致数据库启动报错,这个是8G的值,如果大于8G需要调整,计算公式为:内存(G)10241024*1024/4096,4096为getconf PAGE_SIZE得到分页大小。

  4)kernel.shmmax = 536870912:Linux进程可以分配的单独共享内存段的最大值,最小值536870912,最大值为比物理内存小1byte,一般推荐设置为内存总大小的一半,这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。

  5)kernel.shmmni = 4096:设置系统级最大共享内存段数量,推荐最小值为4096。

  6)kernel.sem = 2010 285420 100 142:从左到右分别为SEMMSL、SEMMNS、SEMOPM和SEMMNI。

  SEMMSL:设置每个信号灯组中信号灯最大数量,推荐的最小值是250,对于系统中存在大量并发连接的系统,推荐将这个值设置为PROCESSES初始化参数加10。

  SEMMNS:设置系统中信号灯的最大数量,操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSLSEMMNI),事实上,如果SEMMNS的值超过了SEMMSLSEMMNI是非法的,因此推荐SEMMNS的值就设置为SEMMSL*SEMMNI,Oracle推荐SEMMNS的设置不小于32000,假如数据库的PROCESSES参数设置为2000,则SEMMNS的设置应为:

  SQL> select (2000+10)*142 from dual;

  SEMOPM:设置每次系统调用可以同时执行的最大信号灯操作的数量,由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值,Oracle验证的10.2和11.1的SEMOPM的配置为100。

  SEMMNI:设置系统中信号灯组的最大数量,Oracle10g和11g的推荐值为142。

  编辑内核参数:

[root@master ~]# vim /etc/sysctl.conf
# For oracle
 fs.aio-max-nr = 1048576
 fs.file-max = 6815744
 kernel.shmall = 2097152
 kernel.shmmax = 536870912
 kernel.shmmni = 4096
 kernel.sem = 2010 285420 100 142
 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 = 1048576

[root@master ~]# sysctl -p
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 2010 285420 100 142
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 = 1048576
  • 编辑登录配置文件

  在文本最后添加:session required pam_limits.so或者session required /lib/security/pam_limits.so使shell limit生效。

  [root@master ~]# vim /etc/pam.d/login

  • 配置/etc/hosts文件

  在/etc/hosts文件中添加IP地址和域名的映射关系,进入hosts文件,在文件末尾加上本机实际IP和主机用户名。

[root@master ~]# vim /etc/hosts
192.183.3.112 master
192.183.3.194 slave1
192.183.3.145 slave2 
  • 配置/etc/profile

  [root@master ~]# vim /etc/profile

   [root@master ~]# source /etc/profile
  • 设置环境变量
    [root@master ~]# su - oracle
    [oracle@master ~]$ vim ~/.bash_profile
    添加ORACLE_BASE和ORACLE_SID到bash_profile文件中,如下:
# For Oracle
export ORACLE_BASE=/home/app/oracle
export ORACLE_SID=primdb
export ORACLE_HOME=$ORACLE_BASE/product/18.3.0/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

  注意:除了ORACLE_BASE和ORACLE_SID,(/etc/profile和.bash_profile中)不设置任何oracle相关环境变量(ORACLE_HOME、PATH、LD_LIBRARY_PATH等)。

  生效修改后的bash_profile:

  [oracle@master ~]$ source /home/oracle/.bash_profile

2.2 安装Oracle 18c数据库

2.2.1 创建oraInst.loc

  [root@master ~]# vim /etc/oraInst.loc

  inventory_loc=/home/app/oraInventory

  inst_group=oinstall

  [root@master ~]# chown oracle:oinstall /etc/oraInst.loc

  [root@master ~]# chmod 664 /etc/oraInst.loc

2.2.2 创建响应文件
  • 创建Oracle数据库安装的响应文件

  默认情况下,Oracle响应文件的模板在/home/app/oracle/product/18.3.0/dbhome_1/install/response/目录中,Oracle数据库安装的响应文件为db_install.rsp,这里只需根据实际的安装需求对该文件的参数进行相应的修改,即可用于安装数据库。

  更改文件权限保护响应文件:[root@master ~]# chmod 600 /home/app/oracle/product/18.3.0/dbhome_1/install/response/db_install.rsp

  本次安装修改的参数主要如下:

  [root@master response]# egrep -v “#|$” db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/app/oraInventory
ORACLE_HOME=/home/app/oracle/product/18.3.0/dbhome_1
ORACLE_BASE=/home/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值