当前位置:   article > 正文

分享一篇Oracle RAC实战安装11G

分享一篇Oracle RAC实战安装11G

分享一次很久以前的Oracle rac项目实施。

1、拓扑结构

基础环境是2台H3C的服务器+2台3PAR的双活存储,操作系统centos7.2。借用下别人家的拓扑先(这是一套典型的RAC架构)。

图片

2、网卡TEAM操作

以eno51和en052组成Team1组为示例:

  1. nmcli con add type team con-nameteam1 ifname team1 config '{"runner": {"name":"activebackup"}}'
  2. nmcli con mod team1 ipv4.addresses'192.168.1.1/24'
  3. nmcli con mod team1 ipv4.methodmanual
  4. nmcli con add type team-slavecon-name team1-port1 ifname eno51 master team1
  5. nmcli con add type team-slavecon-name team1-port2 ifname eno52 master team1
  6. teamdctl team1 state(查看状态)

配置完成后,修改其它网卡的启动模式从原来的dhcp改为none

3、修改主机名

  1. hostnamectl set-hostname <主机名>
  2. hostnamectl status进行查看

4、配置yum源

使用本地源有两个方法

(1)挂载光驱

mount  /dev/cdrom  /mnt

(2)如果没有光驱则用以下方法,挂载系统安装盘的ISO文件

需要先把安装ISO文件rhel-server-7.2-x86_64-dvd.iso上传到指定目录,并在目录下执行

mount -o loop rhel-server-7.2-x86_64-dvd.iso /mnt

创建配置文件cat /etc/yum.repos.d/local.repo

  1. [rhel]
  2. name=rhel
  3. gpgcheck=0
  4. enable=1
  5. baseurl=file:///mnt

5、安装系统包

  1. yum install -yelfutils-libelf-devel.x86_64
  2. yum install -ycompat-libstdc++-33.x86_64
  3. yum install -y compat-libcap1.x86_64
  4. yum install -y gcc.x86_64
  5. yum install -y gcc-c++.x86_64
  6. yum install -y glibc.i686
  7. yum install -y glibc-devel.i686
  8. yum install -y glibc-devel.x86_64
  9. yum install -y ksh-*.x86_64
  10. yum install -y libaio.i686
  11. yum install -y libaio-devel.i686
  12. yum install -y libaio-devel.x86_64
  13. yum install -y smartmontools
  14. yum install -y libgcc.i686
  15. yum install -y libstdc++.i686
  16. yum install -y libstdc++-devel.i686
  17. yum install -y libstdc++-devel.x86_64
  18. yum install -y libXi.i686
  19. yum install -y libXi.x86_64
  20. yum install -y libXtst.i686
  21. yum install -y libXtst.x86_64
  22. yum install -y sysstat.x86_64
  23. yum install xorg-x11-xauth
  24. yum install -y xterm
  25. yum install -y ntpdate
  26. yum install -y device-mapper-multipath

以下安装包需要手动安

  1. rpm -ivhcompat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
  2. rpm -e ksh-20120801-22.el7_1.2.x86_64
  3. rpm -ivhpdksh-5.2.14-37.el5_8.1.x86_64.rpm

6、修改HOSTS​​​​​​​

  1. 10.10.17.1 dyckrac1
  2. 10.10.17.2 dyckrac2
  3. 10.10.17.3 dyckrac1-vip
  4. 10.10.17.4 dyckrac2-vip
  5. 10.10.17.5 dyck-scan
  6. 192.168.1.1 dyckrac1-priv
  7. 192.168.1.2 dyckrac2-priv

7、创建用户

  1. /usr/sbin/groupadd -g 501 oinstall
  2. /usr/sbin/groupadd -g 502 dba
  3. /usr/sbin/groupadd -g 504 asmadmin
  4. /usr/sbin/groupadd -g 506 asmdba
  5. /usr/sbin/groupadd -g 507 asmoper
  6. /usr/sbin/useradd -u 501 -g oinstall-G asmadmin,asmdba,asmoper -d /home/grid -m grid
  7. /usr/sbin/useradd -u 502 -g oinstall-G dba,asmdba -d /home/oracle -m oracle
  8. echo oracle|passwd--stdin oracle
  9. echo grid|passwd --stdin grid

8、修改用户环境变量

使用su - oracle命令切换到ORACLE用户下

编辑文件  ~/.bash_profile   增加如下内容(实例名按实际填写,分别修改两个节点

  1. export ORACLE_SID=orcl1
  2. export ORACLE_BASE=/u01/app/oracle
  3. exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
  4. exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

使用su - grid命令切换到ORACLE用户下​​​​​​​

编辑文件  ~/.bash_profile   增加如下内容(实例名按实际填写,分别修改两个节点)​​​​​​​

  1. export ORACLE_SID=+ASM1
  2. export ORACLE_BASE=/g01/app/grid
  3. exportORACLE_HOME=/g01/app/11.2.0/grid
  4. exportPATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch

9、配置GRID用户及ORACLE用户SSH互信

以GRID用户为例,

 ./sshUserSetup.sh -user grid -hosts "dyckrac1 dyckrac2" -advanced -noPromptPassphrase

10、关闭防火墙

systemctl stop firewalld.service&& sudo systemctl disable firewalld.service

11、关闭SELINUX

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

12、修改limits限制

修改配置文件cat /etc/security/limits.conf

  1. grid soft nproc 16384
  2. grid hard nproc 16384
  3. grid soft nofile 65536
  4. grid hard nofile 65536
  5. oracle soft nproc 16384
  6. oracle hard nproc 16384
  7. oracle soft nofile 65536
  8. oracle hard nofile 65536

13、修改内核参数

修改文件/etc/sysctl.conf,增加如下内容:

共享内存段按自己的实际内存修改,我这里分享个脚本来自动计算

  1. cp /etc/sysctl.conf /etc/sysctl.conf.bak
  2. echo "#oracle" >> /etc/sysctl.conf
  3. echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
  4. echo "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
  5. echo "fs.file-max = 6815744" >> /etc/sysctl.conf
  6. echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
  7. echo "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
  8. echo "net.core.rmem_default = 262144" >> /etc/sysctl.conf
  9. echo "net.core.rmem_max = 4194304" >> /etc/sysctl.conf
  10. echo "net.core.wmem_default = 262144" >> /etc/sysctl.conf
  11. echo "net.core.wmem_max = 1048586" >> /etc/sysctl.conf
  12. echo "vm.swappiness = 10" >> /etc/sysctl.conf
  13. echo "kernel.shmmax= $(free|grep Mem |awk '{print int($2*1024*0.85)}')" >> /etc/sysctl.conf
  14. echo "kernel.shmall = $(free|grep Mem |awk '{print int(($2*1024*0.85)/4096)}')" >> /etc/sysctl.conf
  15. echo "vm.nr_hugepages = $(free -m|grep Mem |awk '{print int(($2*0.8*0.8)/2)}')" >> /etc/sysctl.conf
  16. free -m
  17. sysctl -p

14、禁用Transparent HugePages(不禁用导致ORACLE性能问题)

  1. [root@rac1 ~]# cat/sys/kernel/mm/transparent_hugepage/enabled
  2. [always] madvise never //现在为启用
  3. [root@rac1 ~]# cd /etc/default/
  4. [root@rac1 default]#cp grub grub.bak
  5. [root@rac1 ~]# cat /etc/default/grub
  6. GRUB_TIMEOUT=5
  7. GRUB_DISTRIBUTOR="$(sed 's,release .*$,,g' /etc/system-release)"
  8. GRUB_DEFAULT=saved
  9. GRUB_DISABLE_SUBMENU=true
  10. GRUB_TERMINAL_OUTPUT="console"
  11. GRUB_CMDLINE_LINUX="crashkernel=autord.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never"
  12. GRUB_DISABLE_RECOVERY="true"

此处有差异

 On BIOS-based machines(安装系统时使用传统 BIOS的改法):

 grub2-mkconfig -o /boot/grub2/grub.cfg

On UEFI-based machines(安装系统时使用UEFI-BIOS时的改法):

grub2-mkconfig -o/boot/efi/EFI/redhat/grub.cfg

执行输入如下,执行完毕后重启                                                                   

  1. configuration file ...
  2. Found linux image:/boot/vmlinuz-3.10.0-327.el7.x86_64
  3. Found initrd image:/boot/initramfs-3.10.0-327.el7.x86_64.img
  4. Found linux image:/boot/vmlinuz-0-rescue-a6225ccf9497470bb6051d6392773fc9
  5. Found initrd image:/boot/initramfs-0-rescue-a6225ccf9497470bb6051d6392773fc9.img
  6. done
  7. [root@rac1 default]# reboot

重启后 再查看

  1. [root@rac1 ~]# cat/sys/kernel/mm/transparent_hugepage/enabled
  2. always madvise [never] //现在为关闭

15、禁用avahi-daemon

  1. systemctl stopavahi-daemon
  2. systemctldisable avahi-daemon
  3. systemctlstatus avahi-daemon

16、设置RemoveIPC=false(避免导致ASM实例CRASH)

  1. # vi /etc/systemd/logind.conf
  2. RemoveIPC=no

重启systemd-logind服务或重启主机​​​​​​​

  1. systemctl daemon-reload
  2. systemctl restart systemd-logind

设置原因请参考官方:ALERT: Setting RemoveIPC=yes on Redhat 7.2 Crashes ASM and DatabaseInstances as Well as Any Application That Uses a Shared Memory Segment (SHM) orSemaphores (SEM) (文档 ID 2081410.1)

17、配置多路径磁盘

使用/usr/lib/udev/scsi_id -g -u -d /dev/sda查出系统盘的WWID,关在MULTIAPTHD配置里把此ID列到屏蔽列表中

在两个节点启用multipathd并设置开机启动​​​​​​​

  1. systemctl enable multipathd
  2. mpathconf --enable

然后修改配置文件如下(此配置文件适合3PAR存储使用multipath的环境)

LINUX自带的multipath配置文件在/etc/multipath.conf​​​​​​​

  1. defaults {
  2. polling_interval 10
  3. user_friendly_names no
  4. find_multipaths yes
  5. path_checker tur
  6. }
  7. blacklist {
  8. wwid 3600508b1001c5b05f73bd869031e78f5
  9. devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
  10. devnode "^hd[a-z]"
  11. }
  12. multipaths {
  13. multipath {
  14. wwid360002ac000000000000000030001f3c6
  15. aliasocrvote2
  16. }
  17. multipath {
  18. wwid 360002ac000000000000000020001f3c6
  19. aliasocrvote1
  20. }
  21. multipath {
  22. wwid 360002ac000000000000000040001f3c6
  23. aliasocrvote3
  24. }
  25. multipath {
  26. wwid360002ac000000000000000050001f3c6
  27. aliasasmdata01
  28. }
  29. multipath {
  30. wwid 360002ac000000000000000060001f3c6
  31. alias asmdata02
  32. }
  33. multipath {
  34. wwid 360002ac000000000000000070001f3c6
  35. alias asmdata03
  36. }
  37. multipath {
  38. wwid 360002ac000000000000000080001f3c6
  39. alias asmdata04
  40. }
  41. multipath {
  42. wwid 360002ac000000000000000090001f3c6
  43. alias asmdata05
  44. }
  45. multipath {
  46. wwid 360002ac0000000000000000a0001f3c6
  47. alias asmdata06
  48. }
  49. multipath {
  50. wwid 360002ac0000000000000000b0001f3c6
  51. alias asmdata07
  52. }
  53. multipath {
  54. wwid 360002ac0000000000000000c0001f3c6
  55. alias asmdata08
  56. }
  57. multipath {
  58. wwid 360002ac0000000000000000d0001f3c6
  59. alias asmdata09
  60. }
  61. multipath {
  62. wwid 360002ac0000000000000000e0001f3c6
  63. alias asmdata10
  64. }
  65. multipath {
  66. wwid 360002ac0000000000000000f0001f3c6
  67. alias asmdata11
  68. }
  69. multipath {
  70. wwid 360002ac000000000000000100001f3c6
  71. alias asmdata12
  72. }
  73. }
  74. devices {
  75. device {
  76. vendor "3PARdata"
  77. product "VV"
  78. path_grouping_policy group_by_prio
  79. path_selector "round-robin 0"
  80. path_checker tur
  81. features "0"
  82. hardware_handler "1 alua"
  83. prio alua
  84. failback immediate
  85. rr_weight uniform
  86. no_path_retry 18
  87. rr_min_io_rq 1
  88. detect_prio yes
  89. # fast_io_fail_tmo 10
  90. # dev_loss_tmo 14
  91. }
  92. }

修改完成后执行service multipathd reload

18、绑定磁盘UDEV权限

创建文件/etc/udev/rules.d/12-mulitpath-privs.rules,内容如下​​​​​​​

  1. ENV{DM_NAME}=="ocrvote*",OWNER:="grid", GROUP:="asmadmin", MODE:="660"
  2. ENV{DM_NAME}=="asmdata*",OWNER:="grid", GROUP:="asmadmin", MODE:="660"

19、安装目录附权限​​​​​​​

  1. chown -R oracle:oinstall /u01
  2. chown -R grid:oinstall /g01

20、安装GI软件

使用ROOT用户拷贝软件包到/tmp目录解压,安装GI

1、解压grid软件

unzip -qp13390677_112040_Linux-x86-64_3of7.zip

2、对grid软件打补丁19404309​​​​​​​

  1. unzip -q p19404309_112040_Linux-x86-64.zip
  2. cd b19404309
  3. export ORA_SHIPS=/tmp/soft
  4. cp grid/cvu_prereq.xml$ORA_SHIPS/grid/stage/cvu

安装单节点。安装完成后按要求以root用户执行root.sh

然后升级OPatch。用最新OPatch替换$ORACLE_HOME目录下OPatch目录即可。

安装补丁18370031

解压补丁

使用GRID用户执行$ORACLE_HOME/OPatch/ocm/bin/emocmrsp生成ocm.rsp文件

使用grid用户进入到补丁包目录

cd /tmp/soft/18370031

然后执行以下命令升级

opatch apply -oh $ORACLE_HOME -ocmrf  $ORACLE_HOME/OPatch/ocm/bin/ocm.rsp

拷贝GRID软件到2节点

在1节点,以GRID用户身份执行

  1. cd /g01
  2. scp -r app grid@dyckrac2:/g01

拷贝完成后,以root用户执行以下脚本

  1. /g01/app/oraInventory/orainstRoot.sh
  2. /g01/app/11.2.0/grid/root.sh

克隆ORACLE_HOME目录

在1节点执行

  1. cd/g01/app/oraInventory
  2. rm-rf *
  3. su-grid
  4. cd$ORACLE_HOME/clone/bin

#下面的是一条命令

perlclone.pl -silent -debug ORACLE_BASE=/g01/app/gridORACLE_HOME=/g01/app/11.2.0/grid ORACLE_HOME_NAME=Ora11g_gridinfrahome1  INVENTORY_LOCATION=/g01/app/oraInventoryOSDBA_GROUP=oinstall OSOPER_GROUP=dba -O'"CLUSTER_NODES={dyckrac1,dyckrac2}"'  -O'"LOCAL_NODE=dyckrac1"' CRS=TRUE -ignoreSysPrereqs

等待执行成功,去2节点执行

在2节点执行

  1. cd/g01/app/oraInventory
  2. rm-rf *
  3. su-grid
  4. cd$ORACLE_HOME/clone/bin

#下面的是一条命令

perlclone.pl -silent -debug ORACLE_BASE=/g01/app/gridORACLE_HOME=/g01/app/11.2.0/grid ORACLE_HOME_NAME=Ora11g_gridinfrahome1  INVENTORY_LOCATION=/g01/app/oraInventoryOSDBA_GROUP=oinstall OSOPER_GROUP=dba-O'"CLUSTER_NODES={dyckrac1,dyckrac2}"'  -O'"LOCAL_NODE=dyckrac2"' CRS=TRUE-ignoreSysPrereqs

21、配置集群

以grid用户使用xstart登录到1节点执行

$ORACLE_HOME/crs/config/config.sh进行配置集群。

然后在1节点执行root.sh

成功后去2节点执行root.sh

最后的INS-20802报错忽略

查看集群状态正常则进行DB安装

安装DB

  1. unzip -qp13390677_112040_Linux-x86-64_1of7.zip
  2. unzip -qp13390677_112040_Linux-x86-64_2of7.zip

对db软件打补丁19404309​​​​​​​

  1. unzip -q p19404309_112040_Linux-x86-64.zip
  2. cd /tmp/soft/b19404309
  3. export ORA_SHIPS=/tmp/soft
  4. cp database/cvu_prereq.xml$ORA_SHIPS/database/stage/cvu

然后以ORACLE用户登录XSTART执行DB集群安装

安装中途会报错

另开一个窗口,直接修改ins_emagent.mk文件

  1. $ vi $ORACLE_HOME/sysman/lib/ins_emagent.mk
  2. #===========================
  3. # emdctl
  4. #===========================
  5. $(SYSMANBIN)emdctl:
  6. $(MK_EMAGENT_NMECTL)
  7. 修改为:
  8. #===========================
  9. # emdctl
  10. #===========================
  11. $(SYSMANBIN)emdctl:
  12. $(MK_EMAGENT_NMECTL)-lnnz11

然后点击Retry继续安装

安装完成后,再后续可以继续打最新的补丁,也可以直接建库使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/298621
推荐阅读
相关标签
  

闽ICP备14008679号