当前位置:   article > 正文

VMware虚拟机安装CentOS7.9 Oracle 11.2.0.4 RAC+单节点RAC ADG_vmware安装oracle rac

vmware安装oracle rac

目录

一、参考资料

二、RAC环境配置清单

1.主机环境

2.共享存储

3.IP地址 

4.虚拟机

三、系统参数配置

1. 配置网卡

1.1 配置NAT网卡

1.2 配置HostOnly网卡

2. 修改主机名

3. 配置/etc/hosts

4. 关闭防火墙

5. 关闭Selinux

6. 配置内核参数

7. 配置grid、oracle用户的shell限制

8. 配置/etc/pam.d/login文件

9. 创建组和用户

10. 创建目录并授权

11. 配置grid和oracle环境变量

12. 挂载镜像

13. 配置yum源

14. 安装依赖包

四、配置共享存储

1. 配置虚拟机共享磁盘

2. 配置udev

2.1 CentOS 6生成脚本

2.2 CentOS 7 生成脚本

2.3 udev规则配置文件

五、grid安装

1. 上传grid、oracle安装包和补丁包

2. 修改包权限

3. grid用户解压grid安装包

4. 第一个补丁安装

5. 安装grid

5.1 跳过更新

5.2 安装配置GI集群

5.3 高级安装

5.4 语言选择

5.5 集群名和scan名

5.6 添加第二个节点

5.7 配置ssh

5.8 确认网卡属性

5.9 使用ASM

5.10 选择OCR磁盘

5.11 设置密码

5.12 不选择智能平台管理 

5.13 ASM实例权限分组

5.14 安装目录

5.15 grid安装清单

5.16 环境检测

5.17 检测结果

5.18 打补丁并执行脚本

5.19 最后100% bug报错

5.20 完成grid安装

6. 多个报错

7. 安装失败卸载GI

7.1 执行./deinstall命令

7.2 节点2root执行脚本

7.3 节点1root执行脚本

7.4 继续执行脚本

7.5 清理asm磁盘

7.6 清理残留文件

六、创建ASM磁盘组

1. 显示ASM实例情况

2. OCR磁盘组

3. 创建磁盘组

4. 查看磁盘组状态

5. 创建磁盘组报错

5.1 删除磁盘组

5.2 root用户删除磁盘组资源

七、database软件安装

1. 解压安装包

2. 执行安装

3. 不勾选安全更新

4. 跳过更新

5. 只安装数据库软件

6. 配置ssh

7. 选择语言

8. 选企业版

9. 安装目录

10. 属组

11. 自动检测环境

12. 开始安装

13. bug报错

14. 两个节点用root执行脚本

15.完成安装

八、dbca建库

1. 创建rac集群

2. 创建数据库

3. 选择数据库类型

4. 数据库名和实例名前缀

5. 不配置EM

6. 用相同的密码

7. 多路复用

8. 不使用快速恢复区,暂不开启归档

9.安装的组件

10. 使用ASMM

11. 自定义连接数

12. 字符集和初始化参数

13. 开始创建

14. 完成安装

九、备库清单

十、备库配置

十一、ADG搭建

1. 主库

1.1 开启归档

1.2 修改归档路径

1.3 开启强制日志

1.4 添加standby日志

1.5 配置静态监听

1.6 配置TNSNAMES

1.7 配置参数

1.8 密码文件

2. 备库

2.1 配置静态监听

2.2 配置tnsnames

2.3 备库创建pfile文件

2.4 启动备库

3. 开始复制

4. 复制完成打开备库

5. 验证数据是否同步

6. ADG开关步骤

6.1 关闭ADG

6.2 启动ADG

十二、相关视图


一、参考资料

  • Requirements for Installing Oracle 11.2.0.4 RDBMS on OL7 or RHEL7 64-bit (x86-64) (Doc ID 1962100.1)
  • Installation walk-through - Oracle Grid/RAC 11.2.0.4 on Oracle Linux 7 (Doc ID 1951613.1)

二、RAC环境配置清单

以下是在VMwareWorkstation 17 Pro中安装测试

1.主机环境

节点1节点2
hostnamerac11g_1rac11g_2
CPU2*22*2
内存8G8G
SWAP8G8G
本地盘100G100G

2.共享存储

磁盘组大小冗余方式用途
OCR2G*3NormalOCR、Votedisk表决磁盘
DATA40GExternal控制文件、数据文件、redo等
FRA15GExternal归档、闪回文件等

3.IP地址 

节点1节点2
Public IP192.168.23.101192.168.23.102
VIP192.168.23.103192.168.23.104
Private IP12.12.12.1212.12.12.13
Scan IP192.168.23.105192.168.23.105

4.虚拟机

  • 每个虚拟机两块网卡,节点之间的网卡名称要一致,比如都为ens33、ens36
  • 业务public ip网卡用NAT模式,私有网络Private IP网卡用HostOnly模式
  • 本地硬盘可以不立即分配空间
  • 主机名不要使用大写字母
  • 系统为CentOS 7.9(CentOS-7-x86_64-DVD-2009.iso)
  • 设置好一个节点,可把二节点直接克隆出来改IP

三、系统参数配置

安装前的准备工作,分别在两个节点操作

1. 配置网卡

1.1 配置NAT网卡

  1. [root@localhost ~]# cd /etc/sysconfig/network-scripts
  2. [root@localhost network-scripts]# vi ifcfg-ens33
  3. #修改
  4. BOOTPROTO=static
  5. ONBOOT=yes
  6. IPADDR=192.168.23.101
  7. #重启网卡
  8. [root@localhost ~]# ifdown ens33 && ifup ens33

1.2 配置HostOnly网卡

由于是创建完虚拟机后新增的HostOnly网卡,没有配置文件,可以通过下面方式去新增配置文件

  • 使用nmcli con show命令获取ens36网卡的uuid
  1. [root@rac11g_1 ~]# nmcli con show
  2. NAME UUID TYPE DEVICE
  3. ens33 405f5126-93bf-472d-970a-f4e2a707c544 ethernet ens33
  4. Wired connection 1 b98743f7-f514-3b5f-82c8-ef2ac042ef57 ethernet ens36
  5. virbr0 83e51f05-6627-4910-8b85-b5c2e1b3f683 bridge virbr0
  • 使用ip addr命令获取ens36网卡的mac地址
  1. [root@rac11g_1 ~]# ip addr
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4. inet 127.0.0.1/8 scope host lo
  5. valid_lft forever preferred_lft forever
  6. inet6 ::1/128 scope host
  7. valid_lft forever preferred_lft forever
  8. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  9. link/ether 00:0c:29:69:93:11 brd ff:ff:ff:ff:ff:ff
  10. inet 192.168.23.101/24 brd 192.168.23.255 scope global secondary noprefixroute ens33
  11. valid_lft forever preferred_lft forever
  12. inet6 fe80::98a6:6bd5:2267:8f06/64 scope link noprefixroute
  13. valid_lft forever preferred_lft forever
  14. 3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  15. link/ether 00:0c:29:69:93:1b brd ff:ff:ff:ff:ff:ff
  16. inet 192.168.80.128/24 brd 192.168.80.255 scope global noprefixroute dynamic ens36
  17. valid_lft 1543sec preferred_lft 1543sec
  18. inet6 fe80::61e9:798:194b:1dc3/64 scope link noprefixroute
  19. valid_lft forever preferred_lft forever
  20. 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
  21. link/ether 52:54:00:ce:35:59 brd ff:ff:ff:ff:ff:ff
  22. inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
  23. valid_lft forever preferred_lft forever
  24. 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
  25. link/ether 52:54:00:ce:35:59 brd ff:ff:ff:ff:ff:ff
  •  复制ens33网卡的配置文件,下面是修改的内容
  1. [root@rac11g_1 ~]# cd /etc/sysconfig/network-scripts/
  2. [root@rac11g_1 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
  3. [root@rac11g_1 network-scripts]# vi ifcfg-ens36
  4. #修改后
  5. NAME=ens36
  6. UUID=b98743f7-f514-3b5f-82c8-ef2ac042ef57
  7. DEVICE=ens36
  8. IPADDR=12.12.12.13
  9. #重启ens36网卡
  10. [root@rac11g_1 network-scripts]# ifdown ens36 && ifup ens36

2. 修改主机名

  1. [root@localhost ~]# hostnamectl set-hostname rac11g_1
  2. [root@localhost ~]# hostname
  3. rac11g_1

3. 配置/etc/hosts

  1. [root@rac11g_1 ~]# vi /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. #Public IP
  5. 192.168.23.101 rac11g_1
  6. 192.168.23.102 rac11g_2
  7. #VIP
  8. 192.168.23.103 rac11g_1-vip
  9. 192.168.23.104 rac11g_2-vip
  10. #Private IP
  11. 12.12.12.12 rac11g_1-private
  12. 12.12.12.13 rac11g_2-private
  13. #Scan IP
  14. 192.168.23.105 rac11g-scan

4. 关闭防火墙

  1. [root@rac11g_1 ~]# systemctl stop firewalld.service
  2. [root@rac11g_1 ~]# systemctl disable firewalld.service
  3. [root@rac11g_1 ~]# systemctl status firewalld.service

5. 关闭Selinux

  1. [root@rac11g_1 ~]# vi /etc/selinux/config
  2. #修改为
  3. SELINUX=disabled
  4. #生效
  5. [root@rac11g_1 ~]# setenforce 0

6. 配置内核参数

  1. [root@rac11g_1 ~]# vi /etc/sysctl.conf
  2. kernel.shmmax = 4294967296
  3. kernel.shmall = 1048576
  4. kernel.shmmni = 4096
  5. fs.aio-max-nr = 1048576
  6. fs.file-max = 6815744
  7. kernel.sem = 250 32000 100 128
  8. net.ipv4.ip_local_port_range = 9000 65500
  9. net.core.rmem_default = 262144
  10. net.core.rmem_max = 4194304
  11. net.core.wmem_default = 262144
  12. net.core.wmem_max = 1048586
  13. #使配置生效
  14. [root@rac11g_1 ~]# sysctl -p
参数说明
kernel.shmmax单个共享内存段最大值,让数据库在一个共享段里容纳整个SGA。举例:假设有8G内存,数据库最大使用内存,不要超过物理内存的80%(SGA+PGA),所以8G内存情况下,SGA要小于4.8G,PGA要小于1.6G,计算shmmax值最大为4.8Gx1024x1024x1024=5153960755
kernel.shmall控制共享内存页数=shmmax/PAGESIZE;getconf PAGESIZE 查看PAGESIZE
kernel.shmmni共享内存段的最大数量,默认
fs.aio-max-nr可以拥有的异步IO请求数,避免IO系统故障,默认
fs.file-max允许的文件句柄最大数目,默认
kernel.sem空格不能去掉,信号参数,默认
net.ipv4.ip_local_port_rangeoracle本地ipv4端口范围
net.core.rmem_default默认
net.core.rmem_max默认
net.core.wmem_default默认
net.core.wmem_max默认
vm.nr_hugepages大内存页,默认4K/页,数据库建议用2M/页,该参数一定要大于SGA。计算方式:sga_max_size/2M+100~500M。8G内存情况下SGA最大4.8G,(4.8x1024)/2=2457.6,加一点得2600

注意:

  1. kernel.sem这个参数 四个数字:第1个数字应约大于Oracle进程数,第2个数字建议是第1和第4个数字的乘积。这个参数能够满足大部分使用,但对于连接数较高(比如单节点8000个连接)可以设置为: 10000 1280000 512 1024
  2. kernel.shmall = physical RAM size / pagesize For most systems, this will be the value 2097152. See Note 301830.1 for more information.前为官方文档说明,但是有些教程是shmmax/pagesize
  3. kernel.shmmax = 1/2 of physical RAM. This would be the value 2147483648 for a system with 4GB of physical RAM. See Note:567506.1 for more information.
  4. kernel.shmmax定义了单个共享内存段的最大值,要放下整个数据库SGA内存的大小。要大于sga_mas_size
  5. limits文件里配置的memlock要大于或等于kernel.shmmax
  6. vm.nr_hugepages一定要计算正确,错误的设置会导致虚拟机启动失败(这里我没用该参数)

7. 配置grid、oracle用户的shell限制

  1. [root@rac11g_1 ~]# vi /etc/security/limits.conf
  2. grid soft nproc 2047
  3. grid hard nproc 16384
  4. grid soft nofile 1024
  5. grid hard nofile 65536
  6. oracle soft nproc 2047
  7. oracle hard nproc 16384
  8. oracle soft nofile 1024
  9. oracle hard nofile 65536
  10. oracle hard memlock unlimited
  11. oracle soft memlock unlimited

 说明:

  • soft代表软件限制,hard代表硬件限制

  • 软件限制到了会报警,硬件限制到了会报错

  • nproc参数:操作系统级别对每个用户创建的进程数的限制

  • nofile参数:文件描述符(句柄)一个进程能够打开文件的次数,也就是一个进程能打开多少文件,影响应用的并发度

  • stack参数:堆大小

  • memlock参数:限制锁定内存的大小,单位KB,略低于物理内存

8. 配置/etc/pam.d/login文件

  1. [root@rac11g_1 ~]# vi /etc/pam.d/login
  2. #加入
  3. session required pam_limits.so

9. 创建组和用户

  1. [root@rac11g_1 ~]# groupadd -g 1001 oinstall
  2. [root@rac11g_1 ~]# groupadd -g 1002 dba
  3. [root@rac11g_1 ~]# groupadd -g 1003 oper
  4. [root@rac11g_1 ~]# groupadd -g 1004 asmadmin
  5. [root@rac11g_1 ~]# groupadd -g 1005 asmdba
  6. [root@rac11g_1 ~]# groupadd -g 1006 asmoper
  7. [root@rac11g_1 ~]# useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
  8. [root@rac11g_1 ~]# useradd -u 1101 -g oinstall -G dba,asmdba,oper oracle
  9. #修改grid和oracle密码
  10. [root@rac11g_1 ~]# passwd grid
  11. [root@rac11g_1 ~]# passwd oracle

10. 创建目录并授权

  1. [root@rac11g_1 ~]# mkdir -p /home/u01/app/11.2.0/grid
  2. [root@rac11g_1 ~]# mkdir -p /home/u01/app/grid
  3. [root@rac11g_1 ~]# mkdir -p /home/u01/app/oracle
  4. [root@rac11g_1 ~]# chown -R grid:oinstall /home/u01
  5. [root@rac11g_1 ~]# chown oracle:oinstall /home/u01/app/oracle
  6. [root@rac11g_1 ~]# chmod -R 775 /home/u01/

11. 配置grid和oracle环境变量

grid:

  1. [grid@rac11g_1 ~]$ vi .bash_profile
  2. export ORACLE_BASE=/home/u01/app/grid
  3. export ORACLE_HOME=/home/u01/app/11.2.0/grid
  4. export ORACLE_SID=+ASM1
  5. export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  6. export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
  7. export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
  8. export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  9. umask 022
  10. [grid@rac11g_1 ~]$ source .bash_profile

oracle:

  1. [oracle@rac11g_1 ~]$ vi .bash_profile
  2. export ORACLE_BASE=/home/u01/app/oracle
  3. export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
  4. export ORACLE_SID=rac1
  5. export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  6. export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
  7. export TMP=/tmp
  8. export TMPDIR=$TMP
  9. export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
  10. export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
  11. umask 022
  12. [oracle@rac11g_1 ~]$ source .bash_profile

12. 挂载镜像

  1. ​[root@rac11g_1 ~]# cd /soft/
  2. [root@rac11g_1 soft]# mount CentOS-7-x86_64-DVD-2009.iso /media/

13. 配置yum源

  1. [root@rac11g_1 ~]# cd /etc/yum.repos.d/
  2. [root@rac11g_1 yum.repos.d]# mkdir bak
  3. [root@rac11g_1 yum.repos.d]# mv CentOS-* bak
  4. [root@rac11g_1 yum.repos.d]# cd bak
  5. [root@rac11g_1 bak]# cp CentOS-Media.repo ..
  6. [root@rac11g_1 bak]# cd ..
  7. [root@rac11g_1 yum.repos.d]# vi CentOS-Media.repo
  8. [c7-media]
  9. name=CentOS-$releasever - Media
  10. baseurl=file:///media/
  11. gpgcheck=0
  12. enabled=1
  13. [root@rac11g_1 yum.repos.d]# yum clean all
  14. [root@rac11g_1 yum.repos.d]# yum makecache

14. 安装依赖包

  1. [root@rac11g_1 yum.repos.d]# yum -y install binutils compat-libcap1 gcc gcc-c++ glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat elfutils-libelf-devel unixODBC unixODBC-devel
  2. [root@rac11g_1 soft]# rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
  3. [root@rac11g_1 soft]# rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

说明: 

  • compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm包需要单独上传安装
  • pdksh-5.2.14-37.el5_8.1.x86_64.rpm包需要单独上传安装
  • cvuqdisk-1.0.9-1.rpm包在解压后的grid安装包grid/rpm下
  • 如果安装pdksh包的时候有冲突,把冲突的那个包卸载了

四、配置共享存储

使用VM虚拟机本身添加共享存储,这种方式比较方便,平常自己搭建测试环境用这种就行

1. 配置虚拟机共享磁盘

  1. 关闭两台虚拟机
  2. 节点1:-【编辑虚拟机设置】-【添加】-【硬盘】-【SCSI】-【创建新的虚拟磁盘】-设置磁盘大小,立即分配所有磁盘空间,将虚拟磁盘存储为单个文件-下一步完成-创建完成-确定
  3. 再选中刚才创建的磁盘-【高级】-虚拟设备节点选择SCSI1:0(增加多块盘按顺序选择),勾选独立,永久
  4. 节点2:添加-硬盘-选择“使用现有虚拟磁盘”-下一步-选择节点1下的vmdk磁盘文件-完成-高级-选择SCSI1:0,勾选独立-确定;
  5. 两台编辑虚拟机vmx配置文件,加入下面配置
  1. disk.locking="false"
  2. scsi1.sharedBus="virtual"
  3. scsi1:0.deviceType = "disk"(多个磁盘的就加多条)
  4. scsi1:1.deviceType = "disk"(多个磁盘的就加多条)
  5. scsi1:2.deviceType = "disk"(多个磁盘的就加多条)
  6. scsi1:3.deviceType = "disk"(多个磁盘的就加多条)
  7. diskLib.dataCacheMaxSize="0"
  8. diskLib.dataCacheMaxReadAheadSize="0"
  9. diskLib.DataCacheMinReadAheadSize="0"
  10. diskLib.dataCachePageSize="4096"
  11. diskLib.maxUnsyncedWrites="0"
  • 如果【永久】选项是灰色的,再加入下面的参数,设为独立模式
  1. scsi1:0.mode = "independent-persistent"
  2. scsi1:1.mode = "independent-persistent"
  3. scsi1:2.mode = "independent-persistent"
  4. scsi1:3.mode = "independent-persistent"
  • 启用磁盘UUID,编辑虚拟机vmx文件,两个节点都增加下面配置
disk.EnableUUID = "TRUE"

注意:

  • 用UDEV方式需要用到UUID
  • 创建磁盘要用单个文件和立即分配所有空间,否则安装的时候共享盘会报错

完成上述操作以后,开启虚拟机,使用fdisk -l命令分别在节点1、2查看,注意查询到磁盘盘符一定要相同

2. 配置udev

以下脚本通过scsi_id获取设备的块设备的唯一标识名wwid

2.1 CentOS 6生成脚本

  1. for i in b c d e f;
  2. do
  3. echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\",NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
  4. done
  5. #或者
  6. for i in b c d e f;
  7. do
  8. echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d /dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`\",NAME=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
  9. done

注意未分区用 $name,分区用 $parent 

2.2 CentOS 7 生成脚本

  1. for i in b c d e f;
  2. do
  3. echo "KERNEL==\"sd*\",ENV{DEVTYPE}==\"disk\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\",RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`\",SYMLINK=\"asm-disk$i\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\""
  4. done

2.3 udev规则配置文件

  • 编辑/etc/udev/rules.d/99-oracle-asmdevices.rules规则文件,加入上面生成的脚本
  1. [root@rac11g_1 ~]# cd /etc/udev/rules.d
  2. [root@rac11g_1 rules.d]# vi 99-oracle-asmdevices.rules
  3. KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c29603092ba8de9e904d0bf7427d",SYMLINK="asm-ocr1",OWNER="grid",GROUP="asmadmin",MODE="0660"
  4. KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c294d210d9cef0f80370939947cb",SYMLINK="asm-ocr2",OWNER="grid",GROUP="asmadmin",MODE="0660"
  5. KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c294a6b42dcbe65b04f415586c39",SYMLINK="asm-ocr3",OWNER="grid",GROUP="asmadmin",MODE="0660"
  6. KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c2984687d8b88fd8a907c80d3232",SYMLINK="asm-data",OWNER="grid",GROUP="asmadmin",MODE="0660"
  7. KERNEL=="sd*",ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode",RESULT=="36000c296e3fe7883081a894d6b840138",SYMLINK="asm-arch",OWNER="grid",GROUP="asmadmin",MODE="0660"
  • 把该文件拷贝至节点2该目录下
[root@rac11g_1 rules.d]# scp 99-oracle-asmdevices.rules 192.168.23.102:/etc/udev/rules.d
  • 重新加载规则文件
  1. [root@rac11g_1 rules.d]# /sbin/udevadm trigger --type=devices --action=change
  2. [root@rac11g_1 rules.d]# /sbin/udevadm control --reload
  • 查看/dev/asm*
  1. [root@rac11g_1 rules.d]# ll /dev/asm*
  2. lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-arch -> sdf
  3. lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-data -> sde
  4. lrwxrwxrwx 1 root root 3 Jun 15 14:29 /dev/asm-ocr1 -> sdb
  5. lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-ocr2 -> sdc
  6. lrwxrwxrwx 1 root root 3 Jun 15 14:23 /dev/asm-ocr3 -> sdd
  7. [root@rac11g_1 rules.d]# ll /dev/sd*
  8. brw-rw---- 1 root disk 8, 0 Jun 15 14:19 /dev/sda
  9. brw-rw---- 1 root disk 8, 1 Jun 15 14:19 /dev/sda1
  10. brw-rw---- 1 root disk 8, 2 Jun 15 14:19 /dev/sda2
  11. brw-rw---- 1 grid asmadmin 8, 16 Jun 15 15:57 /dev/sdb
  12. brw-rw---- 1 grid asmadmin 8, 32 Jun 15 15:57 /dev/sdc
  13. brw-rw---- 1 grid asmadmin 8, 48 Jun 15 15:57 /dev/sdd
  14. brw-rw---- 1 grid asmadmin 8, 64 Jun 15 15:57 /dev/sde
  15. brw-rw---- 1 grid asmadmin 8, 80 Jun 15 15:57 /dev/sdf

五、grid安装

为解决grid安装BUG需要打两个补丁

1. 上传grid、oracle安装包和补丁包

  1. #oracle安装包
  2. p13390677_112040_Linux-x86-64_1of7.zip
  3. p13390677_112040_Linux-x86-64_2of7.zip
  4. #grid安装包
  5. p13390677_112040_Linux-x86-64_3of7.zip
  6. #第二个补丁包,第一个补丁在grid安装包rpm目录下
  7. p18370031_112040_Linux-x86-64.zip

2. 修改包权限

把/soft权限改为775,grid安装包权限改为grid:oinstall,oracle安装包权限改为oracle:oinstall 

  1. [root@rac11g_1 ~]# chmod 775 /soft
  2. [root@rac11g_1 soft]# chown oracle:oinstall p13390677_112040_Linux-x86-64_1of7.zip
  3. [root@rac11g_1 soft]# chown oracle:oinstall p13390677_112040_Linux-x86-64_2of7.zip
  4. [root@rac11g_1 soft]# chown grid:oinstall p13390677_112040_Linux-x86-64_3of7.zip

3. grid用户解压grid安装包

[grid@rac11g_1 soft]$ unzip p13390677_112040_Linux-x86-64_3of7.zip

4. 第一个补丁安装

进入解压后的安装包,安装cvuqdisk-1.0.9-1.rpm包

  1. [root@rac11g_1 grid]# cd /soft/grid/rpm
  2. [root@rac11g_1 rpm]# rpm -ivh cvuqdisk-1.0.9-1.rpm

5. 安装grid

  1. [grid@rac11g_1 soft]$ cd grid
  2. [grid@rac11g_1 grid]$ export DISPLAY=192.168.23.1:0.0
  3. [grid@rac11g_1 grid]$ ./runInstaller

5.1 跳过更新

5.2 安装配置GI集群

5.3 高级安装

5.4 语言选择

多选了一个简体中文

5.5 集群名和scan名

与hosts文件保持一致,scan名称开头不能以数字开头否则监测不到

5.6 添加第二个节点

5.7 配置ssh

5.8 确认网卡属性

5.9 使用ASM

5.10 选择OCR磁盘

修改ASM磁盘路径,配置ASM共享磁盘的时候磁盘名在/dev下

OCR把三块盘都选上,冗余选Normal

5.11 设置密码

密码设为一样的,会给你个弹窗,说你密码强度太低,yes就行

5.12 不选择智能平台管理 

5.13 ASM实例权限分组

5.14 安装目录

grid软件安装路径和base目录,grid用户环境变量配置好了的

5.15 grid安装清单

5.16 环境检测

5.17 检测结果

首先点击fix&Check Again

使用root运行修复脚本,两个节点都需执行,执行完脚本后,点击OK,会再次检测环境

修复后再安装缺少的包

pdksh-5.2.14-37.el5_8.1.x86_64.rpm包需手动下载安装,都安装好后再次检测如下图

Device checks for asm:没安装asmlib,使用的udev绑定,可以忽略

Task resolv.conf integrity:这个是因为无法访问设置的DNS ip,对安装没影响

勾选Ignore All 进行下一步

5.18 打补丁并执行脚本

注意此时需要打第二个补丁

  1. 第一个脚本先在两个节点分别执行
  2. 第二个脚本执行前需要先打补丁,因为在7下执行脚本会报错,官方说需要先打p18370031_112040_Linux-x86-64.zip这个补丁
  1. #grid用户
  2. [grid@rac11g_1 ~]$ cd /soft/
  3. [grid@rac11g_1 soft]$ unzip p18370031_112040_Linux-x86-64.zip
  4. #节点1,grid用户
  5. [grid@rac11g_1 ~]$ cd $ORACLE_HOME/OPatch
  6. [grid@rac11g_1 OPatch]$./opatch napply -local /soft/18370031
  7. #节点2,grid用户,解压安装同节点1
  8. [grid@rac11g_1 soft]$ scp /soft/p18370031_112040_Linux-x86-64.zip rac11g_2:/soft/
  9. #安装完成用./opatch lsinventory命令检查两节点是否打上

打补丁过程

  1. [grid@rac11gstd OPatch]$ ./opatch napply -local /soft/18370031
  2. Oracle Interim Patch Installer version 11.2.0.3.4
  3. Copyright (c) 2012, Oracle Corporation. All rights reserved.
  4. Oracle Home : /home/u01/app/11.2.0/grid
  5. Central Inventory : /home/u01/app/oraInventory
  6. from : /home/u01/app/11.2.0/grid/oraInst.loc
  7. OPatch version : 11.2.0.3.4
  8. OUI version : 11.2.0.4.0
  9. Log file location : /home/u01/app/11.2.0/grid/cfgtoollogs/opatch/opatch2024-06-17_02-58-51AM_1.log
  10. Verifying environment and performing prerequisite checks...
  11. OPatch continues with these patches: 18370031
  12. Do you want to proceed? [y|n]
  13. y
  14. User Responded with: Y
  15. All checks passed.
  16. Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
  17. (Oracle Home = '/home/u01/app/11.2.0/grid')
  18. Is the local system ready for patching? [y|n]
  19. y
  20. User Responded with: Y
  21. Backing up files...
  22. Applying interim patch '18370031' to OH '/home/u01/app/11.2.0/grid'
  23. Patching component oracle.crs, 11.2.0.4.0...
  24. Verifying the update...
  25. Patch 18370031 successfully applied.
  26. Log file location: /home/u01/app/11.2.0/grid/cfgtoollogs/opatch/opatch2024-06-17_02-58-51AM_1.log
  27. OPatch succeeded.

下面继续执行第二个脚本,节点1执行成功后再在第二个节点执行,两个节点都执行成功后点击OK

这里放一下节点1执行第二个脚本的内容

  1. [root@rac11g_1 ~]# /home/u01/app/11.2.0/grid/root.sh
  2. Performing root user operation for Oracle 11g
  3. The following environment variables are set as:
  4. ORACLE_OWNER= grid
  5. ORACLE_HOME= /home/u01/app/11.2.0/grid
  6. Enter the full pathname of the local bin directory: [/usr/local/bin]:
  7. Copying dbhome to /usr/local/bin ...
  8. Copying oraenv to /usr/local/bin ...
  9. Copying coraenv to /usr/local/bin ...
  10. Creating /etc/oratab file...
  11. Entries will be added to the /etc/oratab file as needed by
  12. Database Configuration Assistant when a database is created
  13. Finished running generic part of root script.
  14. Now product-specific root actions will be performed.
  15. Using configuration parameter file: /home/u01/app/11.2.0/grid/crs/install/crsconfig_params
  16. Creating trace directory
  17. User ignored Prerequisites during installation
  18. Installing Trace File Analyzer
  19. OLR initialization - successful
  20. root wallet
  21. root wallet cert
  22. root cert export
  23. peer wallet
  24. profile reader wallet
  25. pa wallet
  26. peer wallet keys
  27. pa wallet keys
  28. peer cert request
  29. pa cert request
  30. peer cert
  31. pa cert
  32. peer root cert TP
  33. profile reader root cert TP
  34. pa root cert TP
  35. peer pa cert TP
  36. pa peer cert TP
  37. profile reader pa cert TP
  38. profile reader peer cert TP
  39. peer user cert
  40. pa user cert
  41. Adding Clusterware entries to oracle-ohasd.service
  42. CRS-2672: Attempting to start 'ora.mdnsd' on 'rac11g_1'
  43. CRS-2676: Start of 'ora.mdnsd' on 'rac11g_1' succeeded
  44. CRS-2672: Attempting to start 'ora.gpnpd' on 'rac11g_1'
  45. CRS-2676: Start of 'ora.gpnpd' on 'rac11g_1' succeeded
  46. CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac11g_1'
  47. CRS-2672: Attempting to start 'ora.gipcd' on 'rac11g_1'
  48. CRS-2676: Start of 'ora.cssdmonitor' on 'rac11g_1' succeeded
  49. CRS-2676: Start of 'ora.gipcd' on 'rac11g_1' succeeded
  50. CRS-2672: Attempting to start 'ora.cssd' on 'rac11g_1'
  51. CRS-2672: Attempting to start 'ora.diskmon' on 'rac11g_1'
  52. CRS-2676: Start of 'ora.diskmon' on 'rac11g_1' succeeded
  53. CRS-2676: Start of 'ora.cssd' on 'rac11g_1' succeeded
  54. ASM created and started successfully.
  55. Disk Group OCR created successfully.
  56. clscfg: -install mode specified
  57. Successfully accumulated necessary OCR keys.
  58. Creating OCR keys for user 'root', privgrp 'root'..
  59. Operation successful.
  60. CRS-4256: Updating the profile
  61. Successful addition of voting disk 59619274ab3f4f96bfbfa86bc4c6286a.
  62. Successful addition of voting disk 2c6cbedca0a84fa6bf5800e580bc6994.
  63. Successful addition of voting disk 50ee34ae3e134f92bf225a1c3081dfee.
  64. Successfully replaced voting disk group with +OCR.
  65. CRS-4256: Updating the profile
  66. CRS-4266: Voting file(s) successfully replaced
  67. ## STATE File Universal Id File Name Disk group
  68. -- ----- ----------------- --------- ---------
  69. 1. ONLINE 59619274ab3f4f96bfbfa86bc4c6286a (/dev/asm-ocr1) [OCR]
  70. 2. ONLINE 2c6cbedca0a84fa6bf5800e580bc6994 (/dev/asm-ocr2) [OCR]
  71. 3. ONLINE 50ee34ae3e134f92bf225a1c3081dfee (/dev/asm-ocr3) [OCR]
  72. Located 3 voting disk(s).
  73. CRS-2672: Attempting to start 'ora.asm' on 'rac11g_1'
  74. CRS-2676: Start of 'ora.asm' on 'rac11g_1' succeeded
  75. CRS-2672: Attempting to start 'ora.OCR.dg' on 'rac11g_1'
  76. CRS-2676: Start of 'ora.OCR.dg' on 'rac11g_1' succeeded
  77. Configure Oracle Grid Infrastructure for a Cluster ... succeeded

5.19 最后100% bug报错

这个错误是官方要求DNS,属于bug,忽略,点击ok

点击skip

点击next,yes

5.20 完成grid安装

6. 多个报错

如果没有打p18370031_112040_Linux-x86-64.zip补丁

执行/home/u01/app/11.2.0/grid/root.sh时报错,卡很久,并报下面的错误

解决办法:

方法1

/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1

方法2

  1. [root@rac11g_1 init.d]# cd /var/tmp/.oracle
  2. [root@rac11g_1 .oracle]# rm -rf npohasd
  3. [root@rac11g_1 .oracle]# touch npohasd
  4. [root@rac11g_1 .oracle]# chmod 755 npohasd

方法3

  1. 1. 创建服务ohas.service的服务文件并赋予权限
  2. touch /usr/lib/systemd/system/ohas.service
  3. chmod 777 /usr/lib/systemd/system/ohas.service
  4. 2. 往ohas.service服务文件添加启动ohasd的相关信息
  5. vi /usr/lib/systemd/system/ohas.service
  6. 添加如下内容:
  7. [Unit]
  8. Description=Oracle High Availability Services
  9. After=syslog.target
  10. [Service]
  11. ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
  12. Restart=always
  13. [Install]
  14. WantedBy=multi-user.target
  15. 3. 加载,启动服务
  16. 重新加载守护进程
  17. systemctl daemon-reload
  18. 设置守护进程开机自动启动
  19. systemctl enable ohas.service
  20. 手工启动ohas服务
  21. systemctl start ohas.service

第一节点再次执行/home/u01/app/11.2.0/grid/root.sh脚本成功

 第二节点用同样的方法,报错如下

  1. [root@rac11g_2 tmp]# /home/u01/app/11.2.0/grid/root.sh
  2. Performing root user operation for Oracle 11g
  3. The following environment variables are set as:
  4. ORACLE_OWNER= grid
  5. ORACLE_HOME= /home/u01/app/11.2.0/grid
  6. Enter the full pathname of the local bin directory: [/usr/local/bin]:
  7. The contents of "dbhome" have not changed. No need to overwrite.
  8. The contents of "oraenv" have not changed. No need to overwrite.
  9. The contents of "coraenv" have not changed. No need to overwrite.
  10. Entries will be added to the /etc/oratab file as needed by
  11. Database Configuration Assistant when a database is created
  12. Finished running generic part of root script.
  13. Now product-specific root actions will be performed.
  14. Using configuration parameter file: /home/u01/app/11.2.0/grid/crs/install/crsconfig_params
  15. User ignored Prerequisites during installation
  16. Installing Trace File Analyzer
  17. CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac11g_2'
  18. CRS-2676: Start of 'ora.cssdmonitor' on 'rac11g_2' succeeded
  19. CRS-2672: Attempting to start 'ora.cssd' on 'rac11g_2'
  20. CRS-2672: Attempting to start 'ora.diskmon' on 'rac11g_2'
  21. CRS-2676: Start of 'ora.diskmon' on 'rac11g_2' succeeded
  22. CRS-2676: Start of 'ora.cssd' on 'rac11g_2' succeeded
  23. Mounting Disk Group OCR failed with the following message:
  24. ORA-15032: not all alterations performed
  25. ORA-15017: diskgroup "OCR" cannot be mounted
  26. ORA-15003: diskgroup "OCR" already mounted in another lock name space
  27. Configuration of ASM ... failed
  28. see asmca logs at /home/u01/app/grid/cfgtoollogs/asmca for details
  29. Did not succssfully configure and start ASM at /home/u01/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 6912.
  30. /home/u01/app/11.2.0/grid/perl/bin/perl -I/home/u01/app/11.2.0/grid/perl/lib -I/home/u01/app/11.2.0/grid/crs/install /home/u01/app/11.2.0/grid/crs/install/rootcrs.pl execution failed

原因两个节点执行/home/u01/app/11.2.0/grid/root.sh脚本,其实是没有同时执行的,可能是节点一执行成功后没释放,还有就是配置共享存储时,没有设置为独立和立即分配所有空间

解决办法

用root用户进入GI_HOME/install执行./rootcrs.pl -deconfig -force 

然后又报错

  1. [root@rac11g_1 install]# /home/u01/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -verbose
  2. Can't locate Env.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /home/u01/app/11.2.0/grid/crs/install) at crsconfig_lib.pm line 703.
  3. BEGIN failed--compilation aborted at crsconfig_lib.pm line 703.
  4. Compilation failed in require at /home/u01/app/11.2.0/grid/crs/install/rootcrs.pl line 305.
  5. BEGIN failed--compilation aborted at /home/u01/app/11.2.0/grid/crs/install/rootcrs.pl line 305.

解决上述错误,复制Env.pm

cp -p /home/u01/app/11.2.0/grid/perl/lib/5.10.0/Env.pm /usr/lib64/perl5/vendor_perl/

再次执行./rootcrs.pl -deconfig -force

  1. [root@rac11g_1 5.10.0]# /home/u01/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -verbose
  2. Using configuration parameter file: /home/u01/app/11.2.0/grid/crs/install/crsconfig_params
  3. Network exists: 1/192.168.23.0/255.255.255.0/ens33, type static
  4. VIP exists: /rac11g_1-vip/192.168.23.103/192.168.23.0/255.255.255.0/ens33, hosting node rac11g_1
  5. GSD exists
  6. ONS exists: Local port 6100, remote port 6200, EM port 2016
  7. CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'rac11g_1'
  8. CRS-2673: Attempting to stop 'ora.crsd' on 'rac11g_1'
  9. CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'rac11g_1'
  10. CRS-2673: Attempting to stop 'ora.OCR.dg' on 'rac11g_1'
  11. CRS-2673: Attempting to stop 'ora.oc4j' on 'rac11g_1'
  12. CRS-2677: Stop of 'ora.oc4j' on 'rac11g_1' succeeded
  13. CRS-2677: Stop of 'ora.OCR.dg' on 'rac11g_1' succeeded
  14. CRS-2673: Attempting to stop 'ora.asm' on 'rac11g_1'
  15. CRS-2677: Stop of 'ora.asm' on 'rac11g_1' succeeded
  16. CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'rac11g_1' has completed
  17. CRS-2677: Stop of 'ora.crsd' on 'rac11g_1' succeeded
  18. CRS-2673: Attempting to stop 'ora.ctssd' on 'rac11g_1'
  19. CRS-2673: Attempting to stop 'ora.evmd' on 'rac11g_1'
  20. CRS-2673: Attempting to stop 'ora.asm' on 'rac11g_1'
  21. CRS-2673: Attempting to stop 'ora.mdnsd' on 'rac11g_1'
  22. CRS-2677: Stop of 'ora.evmd' on 'rac11g_1' succeeded
  23. CRS-2677: Stop of 'ora.mdnsd' on 'rac11g_1' succeeded
  24. CRS-2677: Stop of 'ora.ctssd' on 'rac11g_1' succeeded
  25. CRS-2677: Stop of 'ora.asm' on 'rac11g_1' succeeded
  26. CRS-2673: Attempting to stop 'ora.cluster_interconnect.haip' on 'rac11g_1'
  27. CRS-2677: Stop of 'ora.cluster_interconnect.haip' on 'rac11g_1' succeeded
  28. CRS-2673: Attempting to stop 'ora.cssd' on 'rac11g_1'
  29. CRS-2677: Stop of 'ora.cssd' on 'rac11g_1' succeeded
  30. CRS-2673: Attempting to stop 'ora.crf' on 'rac11g_1'
  31. CRS-2677: Stop of 'ora.crf' on 'rac11g_1' succeeded
  32. CRS-2673: Attempting to stop 'ora.gipcd' on 'rac11g_1'
  33. CRS-2677: Stop of 'ora.gipcd' on 'rac11g_1' succeeded
  34. CRS-2673: Attempting to stop 'ora.gpnpd' on 'rac11g_1'
  35. CRS-2677: Stop of 'ora.gpnpd' on 'rac11g_1' succeeded
  36. CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'rac11g_1' has completed
  37. CRS-4133: Oracle High Availability Services has been stopped.
  38. Successfully deconfigured Oracle clusterware stack on this node

 没有打补丁报一系列错误,有点麻烦

7. 安装失败卸载GI

7.1 执行./deinstall命令

  1. [root@rac11g_1 ~]# su - grid
  2. [grid@rac11g_1 ~]$ cd /home/u01/app/11.2.0/grid/deinstall
  3. [grid@rac11g_1 deinstall]$ ./deinstall
  4. Checking for required files and bootstrapping ...
  5. Please wait ...
  6. Location of logs /tmp/deinstall2024-06-13_03-33-37PM/logs/
  7. ############ ORACLE DEINSTALL & DECONFIG TOOL START ############
  8. ######################### CHECK OPERATION START #########################
  9. ## [START] Install check configuration ##
  10. Checking for existence of the Oracle home location /home/u01/app/11.2.0/grid
  11. Oracle Home type selected for deinstall is: Oracle Grid Infrastructure for a Cluster
  12. Oracle Base selected for deinstall is: /home/u01/app/grid
  13. Checking for existence of central inventory location /home/u01/app/oraInventory
  14. Checking for existence of the Oracle Grid Infrastructure home
  15. The following nodes are part of this cluster: rac11g_1,rac11g_2
  16. Checking for sufficient temp space availability on node(s) : 'rac11g_1,rac11g_2'
  17. ## [END] Install check configuration ##
  18. Traces log file: /tmp/deinstall2024-06-13_03-33-37PM/logs//crsdc.log
  19. Enter an address or the name of the virtual IP used on node "rac11g_1"[rac11g_1-vip]
  20. >
  21. The following information can be collected by running "/sbin/ifconfig -a" on node "rac11g_1"
  22. Enter the IP netmask of Virtual IP "192.168.23.103" on node "rac11g_1"[255.255.255.0]
  23. >
  24. Enter the network interface name on which the virtual IP address "192.168.23.103" is active
  25. >
  26. Enter an address or the name of the virtual IP used on node "rac11g_2"[rac11g_2-vip]
  27. >
  28. The following information can be collected by running "/sbin/ifconfig -a" on node "rac11g_2"
  29. Enter the IP netmask of Virtual IP "192.168.23.104" on node "rac11g_2"[255.255.255.0]
  30. >
  31. Enter the network interface name on which the virtual IP address "192.168.23.104" is active
  32. >
  33. Enter an address or the name of the virtual IP[]
  34. >
  35. Network Configuration check config START
  36. Network de-configuration trace file location: /tmp/deinstall2024-06-13_03-33-37PM/logs/netdc_check2024-06-13_03-34-36-PM.log
  37. Specify all RAC listeners (do not include SCAN listener) that are to be de-configured [LISTENER,LISTENER_SCAN1]:
  38. Network Configuration check config END
  39. Asm Check Configuration START
  40. ASM de-configuration trace file location: /tmp/deinstall2024-06-13_03-33-37PM/logs/asmcadc_check2024-06-13_03-34-48-PM.log
  41. ASM configuration was not detected in this Oracle home. Was ASM configured in this Oracle home (y|n) [n]: y
  42. Is OCR/Voting Disk placed in ASM y|n [n]: y
  43. Enter the OCR/Voting Disk diskgroup name []:
  44. Specify the ASM Diagnostic Destination [ ]:
  45. Specify the diskstring []:
  46. Specify the diskgroups that are managed by this ASM instance []:
  47. ######################### CHECK OPERATION END #########################
  48. ####################### CHECK OPERATION SUMMARY #######################
  49. Oracle Grid Infrastructure Home is:
  50. The cluster node(s) on which the Oracle home deinstallation will be performed are:rac11g_1,rac11g_2
  51. Oracle Home selected for deinstall is: /home/u01/app/11.2.0/grid
  52. Inventory Location where the Oracle home registered is: /home/u01/app/oraInventory
  53. Following RAC listener(s) will be de-configured: LISTENER,LISTENER_SCAN1
  54. ASM instance will be de-configured from this Oracle home
  55. Do you want to continue (y - yes, n - no)? [n]: y
  56. A log of this session will be written to: '/tmp/deinstall2024-06-13_03-33-37PM/logs/deinstall_deconfig2024-06-13_03-33-42-PM.out'
  57. Any error messages from this session will be written to: '/tmp/deinstall2024-06-13_03-33-37PM/logs/deinstall_deconfig2024-06-13_03-33-42-PM.err'
  58. ######################## CLEAN OPERATION START ########################
  59. ASM de-configuration trace file location: /tmp/deinstall2024-06-13_03-33-37PM/logs/asmcadc_clean2024-06-13_03-36-40-PM.log
  60. ASM Clean Configuration START
  61. ASM Clean Configuration END
  62. Network Configuration clean config START
  63. Network de-configuration trace file location: /tmp/deinstall2024-06-13_03-33-37PM/logs/netdc_clean2024-06-13_03-36-44-PM.log
  64. De-configuring RAC listener(s): LISTENER,LISTENER_SCAN1
  65. De-configuring listener: LISTENER
  66. Stopping listener: LISTENER
  67. Warning: Failed to stop listener. Listener may not be running.
  68. Listener de-configured successfully.
  69. De-configuring listener: LISTENER_SCAN1
  70. Stopping listener: LISTENER_SCAN1
  71. Warning: Failed to stop listener. Listener may not be running.
  72. Listener de-configured successfully.
  73. De-configuring Naming Methods configuration file on all nodes...
  74. Naming Methods configuration file de-configured successfully.
  75. De-configuring Local Net Service Names configuration file on all nodes...
  76. Local Net Service Names configuration file de-configured successfully.
  77. De-configuring Directory Usage configuration file on all nodes...
  78. Directory Usage configuration file de-configured successfully.
  79. De-configuring backup files on all nodes...
  80. Backup files de-configured successfully.
  81. The network configuration has been cleaned up successfully.
  82. Network Configuration clean config END
  83. ---------------------------------------->
  84. The deconfig command below can be executed in parallel on all the remote nodes. Execute the command on the local node after the execution completes on all the remote nodes.
  85. Run the following command as the root user or the administrator on node "rac11g_2".
  86. /tmp/deinstall2024-06-13_03-33-37PM/perl/bin/perl -I/tmp/deinstall2024-06-13_03-33-37PM/perl/lib -I/tmp/deinstall2024-06-13_03-33-37PM/crs/install /tmp/deinstall2024-06-13_03-33-37PM/crs/install/rootcrs.pl -force -deconfig -paramfile "/tmp/deinstall2024-06-13_03-33-37PM/response/deinstall_Ora11g_gridinfrahome1.rsp"
  87. Run the following command as the root user or the administrator on node "rac11g_1".
  88. /tmp/deinstall2024-06-13_03-33-37PM/perl/bin/perl -I/tmp/deinstall2024-06-13_03-33-37PM/perl/lib -I/tmp/deinstall2024-06-13_03-33-37PM/crs/install /tmp/deinstall2024-06-13_03-33-37PM/crs/install/rootcrs.pl -force -deconfig -paramfile "/tmp/deinstall2024-06-13_03-33-37PM/response/deinstall_Ora11g_gridinfrahome1.rsp" -lastnode
  89. Press Enter after you finish running the above commands
  90. <----------------------------------------

7.2 节点2root执行脚本

  1. [root@rac11g_2 install]# /tmp/deinstall2024-06-13_03-33-37PM/perl/bin/perl -I/tmp/deinstall2024-06-13_03-33-37PM/perl/lib -I/tmp/deinstall2024-06-13_03-33-37PM/crs/install /tmp/deinstall2024-06-13_03-33-37PM/crs/install/rootcrs.pl -force -deconfig -paramfile "/tmp/deinstall2024-06-13_03-33-37PM/response/deinstall_Ora11g_gridinfrahome1.rsp"
  2. Using configuration parameter file: /tmp/deinstall2024-06-13_03-33-37PM/response/deinstall_Ora11g_gridinfrahome1.rsp
  3. ****Unable to retrieve Oracle Clusterware home.
  4. Start Oracle Clusterware stack and try again.
  5. CRS-4047: No Oracle Clusterware components configured.
  6. CRS-4000: Command Stop failed, or completed with errors.
  7. ################################################################
  8. # You must kill processes or reboot the system to properly #
  9. # cleanup the processes started by Oracle clusterware #
  10. ################################################################
  11. Either /etc/oracle/olr.loc does not exist or is not readable
  12. Make sure the file exists and it has read and execute access
  13. Either /etc/oracle/olr.loc does not exist or is not readable
  14. Make sure the file exists and it has read and execute access
  15. Failure in execution (rc=-1, 256, No such file or directory) for command /etc/init.d/ohasd deinstall
  16. Successfully deconfigured Oracle clusterware stack on this node

7.3 节点1root执行脚本

  1. _03-33-37PM/crs/install/rootcrs.pl -force -deconfig -paramfile "/tmp/deinstall2024-06-13_03-33-37PM/response/deinstall_Ora11g_gridinfrahome1.rsp" -lastnode
  2. Using configuration parameter file: /tmp/deinstall2024-06-13_03-33-37PM/response/deinstall_Ora11g_gridinfrahome1.rsp
  3. Adding Clusterware entries to inittab
  4. /crs/install/inittab does not exist.
  5. ****Unable to retrieve Oracle Clusterware home.
  6. Start Oracle Clusterware stack and try again.
  7. ****Unable to retrieve Oracle Clusterware home.
  8. Start Oracle Clusterware stack and try again.
  9. ****Unable to retrieve Oracle Clusterware home.
  10. Start Oracle Clusterware stack and try again.
  11. ****Unable to retrieve Oracle Clusterware home.
  12. Start Oracle Clusterware stack and try again.
  13. ****Unable to retrieve Oracle Clusterware home.
  14. Start Oracle Clusterware stack and try again.
  15. Either /etc/oracle/ocr.loc does not exist or is not readable
  16. Make sure the file exists and it has read and execute access
  17. Either /etc/oracle/ocr.loc does not exist or is not readable
  18. Make sure the file exists and it has read and execute access
  19. CRS-4047: No Oracle Clusterware components configured.
  20. CRS-4000: Command Stop failed, or completed with errors.
  21. Either /etc/oracle/ocr.loc does not exist or is not readable
  22. Make sure the file exists and it has read and execute access
  23. Either /etc/oracle/ocr.loc does not exist or is not readable
  24. Make sure the file exists and it has read and execute access
  25. ################################################################
  26. # You must kill processes or reboot the system to properly #
  27. # cleanup the processes started by Oracle clusterware #
  28. ################################################################
  29. Either /etc/oracle/ocr.loc does not exist or is not readable
  30. Make sure the file exists and it has read and execute access
  31. Either /etc/oracle/ocr.loc does not exist or is not readable
  32. Make sure the file exists and it has read and execute access
  33. Either /etc/oracle/olr.loc does not exist or is not readable
  34. Make sure the file exists and it has read and execute access
  35. Either /etc/oracle/olr.loc does not exist or is not readable
  36. Make sure the file exists and it has read and execute access
  37. Failure in execution (rc=-1, 256, No such file or directory) for command /etc/init.d/ohasd deinstall
  38. error: package cvuqdisk is not installed
  39. Successfully deconfigured Oracle clusterware stack on this node

7.4 继续执行脚本

两个节点执行完成后,原窗口按回车继续

  1. Setting the force flag to false
  2. Setting the force flag to cleanup the Oracle Base
  3. Oracle Universal Installer clean START
  4. Detach Oracle home '/home/u01/app/11.2.0/grid' from the central inventory on the local node : Done
  5. Delete directory '/home/u01/app/11.2.0/grid' on the local node : Done
  6. Delete directory '/home/u01/app/oraInventory' on the local node : Done
  7. Delete directory '/home/u01/app/grid' on the local node : Done
  8. Detach Oracle home '/home/u01/app/11.2.0/grid' from the central inventory on the remote nodes 'rac11g_2' : Done
  9. Delete directory '/home/u01/app/11.2.0/grid' on the remote nodes 'rac11g_2' : Done
  10. Delete directory '/home/u01/app/oraInventory' on the remote nodes 'rac11g_2' : Done
  11. Delete directory '/home/u01/app/grid' on the remote nodes 'rac11g_2' : Done
  12. Oracle Universal Installer cleanup was successful.
  13. Oracle Universal Installer clean END
  14. ## [START] Oracle install clean ##
  15. Clean install operation removing temporary directory '/tmp/deinstall2024-06-13_03-33-37PM' on node 'rac11g_1'
  16. Clean install operation removing temporary directory '/tmp/deinstall2024-06-13_03-33-37PM' on node 'rac11g_2'
  17. ## [END] Oracle install clean ##
  18. ######################### CLEAN OPERATION END #########################
  19. ####################### CLEAN OPERATION SUMMARY #######################
  20. ASM instance was de-configured successfully from the Oracle home
  21. Following RAC listener(s) were de-configured successfully: LISTENER,LISTENER_SCAN1
  22. Oracle Clusterware is stopped and successfully de-configured on node "rac11g_2"
  23. Oracle Clusterware is stopped and successfully de-configured on node "rac11g_1"
  24. Oracle Clusterware is stopped and de-configured successfully.
  25. Successfully detached Oracle home '/home/u01/app/11.2.0/grid' from the central inventory on the local node.
  26. Successfully deleted directory '/home/u01/app/11.2.0/grid' on the local node.
  27. Successfully deleted directory '/home/u01/app/oraInventory' on the local node.
  28. Successfully deleted directory '/home/u01/app/grid' on the local node.
  29. Successfully detached Oracle home '/home/u01/app/11.2.0/grid' from the central inventory on the remote nodes 'rac11g_2'.
  30. Successfully deleted directory '/home/u01/app/11.2.0/grid' on the remote nodes 'rac11g_2'.
  31. Successfully deleted directory '/home/u01/app/oraInventory' on the remote nodes 'rac11g_2'.
  32. Successfully deleted directory '/home/u01/app/grid' on the remote nodes 'rac11g_2'.
  33. Oracle Universal Installer cleanup was successful.
  34. Run 'rm -rf /etc/oraInst.loc' as root on node(s) 'rac11g_1,rac11g_2' at the end of the session.
  35. Run 'rm -rf /opt/ORCLfmap' as root on node(s) 'rac11g_1,rac11g_2' at the end of the session.
  36. Run 'rm -rf /etc/oratab' as root on node(s) 'rac11g_1' at the end of the session.
  37. Oracle deinstall tool successfully cleaned up temporary directories.
  38. #######################################################################
  39. ############# ORACLE DEINSTALL & DECONFIG TOOL END #############

7.5 清理asm磁盘

如果使用了asm磁盘,需要先清理asm磁盘,因为尝试了一次安装,你的ASM磁盘就被标记为used,不能再作为候选磁盘,要想再次使用,需要执行下面的操作,两个节点都操作下。

  1. [root@rac11g_1 ~]# dd if=/dev/zero of=/dev/asm-ocr1 bs=1024 count=100
  2. [root@rac11g_1 ~]# dd if=/dev/zero of=/dev/asm-ocr2 bs=1024 count=100
  3. [root@rac11g_1 ~]# dd if=/dev/zero of=/dev/asm-ocr3 bs=1024 count=100

7.6 清理残留文件

删除残留文件,两个节点都清理下

  1. [root@rac11g_1 app]# rm -rf /etc/ora*
  2. [root@rac11g_1 app]# rm -rf /u01/app/grid/11.2.0/*
  3. [root@rac11g_1 app]# rm -rf /u01/app/oraInventory
  4. [root@rac11g_1 app]# rm -rf /etc/oraInst.loc
  5. [root@rac11g_1 app]# rm -rf /etc/oracle/ocr.loc

六、创建ASM磁盘组

grid用户执行asmca

[grid@rac11g_1 grid]$ asmca

1. 显示ASM实例情况

2. OCR磁盘组

安装grid时,创建的OCR及votdisk磁盘组OCR

3. 创建磁盘组

 点击Create创建DATA和FRA磁盘组

注意:共享磁盘一定要设置为独立和立即分配所有空间

4. 查看磁盘组状态

  1. [grid@rac11g_1 ~]$ sqlplus / as sysasm
  2. SQL> select name,state from v$asm_diskgroup;
  3. NAME STATE
  4. ------------------------------ ---------------------------------
  5. DATA MOUNTED
  6. FRA MOUNTED
  7. OCR MOUNTED

5. 创建磁盘组报错

如果共享磁盘没有设置为独立和立即分配空间,则节点2无法挂载磁盘组,需要先删除磁盘组,再删除磁盘组资源,然后去虚拟机重新删除磁盘,再新建磁盘重新加入udev规则文件        

5.1 删除磁盘组

  1. 磁盘组为mount时:
  2. SQL> drop diskgroup diskgroup_name;
  3. 如果磁盘组中有任何的数据,需要加入including contents,
  4. SQL> drop diskgroup diskgroup_name including contents;
  5. 如果磁盘组无法mount, 就需要加上force,该操作会清楚磁盘头及磁盘组所有数据:
  6. SQL> drop diskgroup diskgroup_name force including contents;
  7. SQL> drop diskgroup DATA force including contents;
  8. Diskgroup dropped.
  9. 另一个选项excluding contents 是默认选项,该操作仅在磁盘组为空的情况下进行,如果不是,会报错。
  10. 另外建议,创建磁盘组或者其他测试时,避免直接使用test, 可以使用testdg ,test_tb等,避免关键字相关问题

5.2 root用户删除磁盘组资源

[root@rac11g_1 ~]# /home/u01/app/11.2.0/grid/bin/crsctl delete resource ora.DATA.dg

七、database软件安装

1. 解压安装包

  1. [root@rac11g_1 ~]# su - oracle
  2. [oracle@rac11g_1 ~]$ cd /soft
  3. [oracle@rac11g_1 soft]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
  4. [oracle@rac11g_1 soft]$ unzip p13390677_112040_Linux-x86-64_2of7.zip

2. 执行安装

  1. [oracle@rac11g_1 soft]$ export DISPLAY=192.168.23.1:0.0
  2. [oracle@rac11g_1 soft]$ cd database/
  3. [oracle@rac11g_1 database]$ ./runInstaller

3. 不勾选安全更新

4. 跳过更新

5. 只安装数据库软件

6. 配置ssh

7. 选择语言

选上简体中文

8. 选企业版

9. 安装目录

10. 属组

11. 自动检测环境

忽略所有

12. 开始安装

13. bug报错

 56%的时候会报这个错,这是CentOS7下安装11gR2的bug

处理方法:

只在节点1做处理,备份一下这个文件ins_emagent.mk,然后在文件中搜索NMECTL,在括号后面加上 -lnnz11,保存

  1. [root@rac11g_1 ~]# cd /home/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib
  2. [root@rac11g_1 lib]# cp ins_emagent.mk ins_emagent.mk_bak20240614
  3. [root@rac11g_1 lib]# vi ins_emagent.mk

然后点击retry

14. 两个节点用root执行脚本

15.完成安装

执行完脚本后

八、dbca建库

[oracle@rac11g_1 database]$ dbca

1. 创建rac集群

  • rac集群(选这个)
  • rac单节点
  • 单实例

2. 创建数据库

3. 选择数据库类型

  • 事务性
  • 自定义(选这个)
  • 数据仓库

4. 数据库名和实例名前缀

5. 不配置EM

 

6. 用相同的密码

7. 多路复用

8. 不使用快速恢复区,暂不开启归档

9.安装的组件

10. 使用ASMM

SGA+PGA要小于物理内存的80%,推荐范围在40-60%

本环境物理内存8G,留给grid集群1G,余7G用于分配SGA+PGA

7Gx80%=5.6G

SGA=5.6x80%=4587M 我给的3584M

PGA=5.6x20%=1146M 我给的980M

最后4564/1024/8=55%,在推荐范围内

11. 自定义连接数

12. 字符集和初始化参数

选择UTF8

修改open_cursor为500

默认专用模式

可以修改最大数据文件数量,其他参数可以根据自己生产情况来设置

13. 开始创建

需要一些时间完成创建

14. 完成安装

九、备库清单

备库是RAC单节点

节点1
hostnamerac11gstd
CPU2*2
内存8G
SWAP8G
本地盘100G

共享存储

磁盘组大小冗余方式用途
OCR1G*3NormalOCR、Votedisk表决磁盘
DATA25GExternal控制文件、数据文件、redo等
FRA10GExternal归档、闪回文件等

 IP地址

节点1
Public IP192.168.23.110
VIP192.168.23.112
Private IP13.13.13.13
Scan IP192.168.23.114

虚拟机

  • 虚拟机两块网卡
  • 业务public ip网卡用NAT模式,私有网络Private IP网卡用HostOnly模式
  • 本地硬盘可以不立即分配空间
  • 主机名不要使用大写字母
  • 系统为CentOS 7.9(CentOS-7-x86_64-DVD-2009.iso)

十、备库配置

同主库相同的方法配置

共享存储配置、grid安装、oracle软件安装和主库相同

十一、ADG搭建

1. 主库

1.1 开启归档

  1. shutdown immediate;
  2. startup mount;
  3. alter database archivelog;
  4. alter database open;
  5. archive log list;

1.2 修改归档路径

alter system set log_archive_dest_1='location=+FRA';

1.3 开启强制日志

alter database force logging;

1.4 添加standby日志

创建主库standby日志文件,每个实例的组数要比logfile多一组
standby logfile=(1+logfile组数)*thread=(1+2)*2=6

  1. SQL> select * from v$log
  2. GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
  3. ---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ -------------------
  4. 1 1 79 52428800 512 2 NO INACTIVE 892360 2024-06-14 15:32:50 917066 2024-06-16 18:37:44
  5. 2 1 80 52428800 512 2 NO CURRENT 917066 2024-06-16 18:37:44 2.8147E+14
  6. 3 2 1 52428800 512 2 NO CURRENT 896190 2024-06-14 15:33:02 2.8147E+14 2024-06-14 15:33:02
  7. 4 2 0 52428800 512 2 YES UNUSED 0 0

添加standby日志

  1. alter database add standby logfile thread 1 group 5 size 200m;
  2. alter database add standby logfile thread 1 group 6 size 200m;
  3. alter database add standby logfile thread 1 group 7 size 200m;
  4. alter database add standby logfile thread 2 group 8 size 200m;
  5. alter database add standby logfile thread 2 group 9 size 200m;
  6. alter database add standby logfile thread 2 group 10 size 200m;

由于添加standby log和redo log大小不一样,修改主库redo log的大小

  1. 添加日志组
  2. alter database add logfile thread 1 group 11 size 200m;
  3. alter database add logfile thread 1 group 12 size 200m;
  4. alter database add logfile thread 2 group 13 size 200m;
  5. alter database add logfile thread 2 group 14 size 200m;
  6. 切换日志组,另一个实例也执行
  7. alter system switch logfile;
  8. 删除日志组,等状态为INACTIVE的时候可删除
  9. alter database drop logfile group 1;
  10. alter database drop logfile group 2;
  11. alter database drop logfile group 3;
  12. alter database drop logfile group 4;
  13. 添加日志组
  14. alter database add logfile thread 1 group 1 size 200m;
  15. alter database add logfile thread 1 group 2 size 200m;
  16. alter database add logfile thread 2 group 3 size 200m;
  17. alter database add logfile thread 2 group 4 size 200m;
  18. 切换日志组,另一个实例也执行
  19. alter system switch logfile;
  20. 删除日志组,等状态为INACTIVE的时候可删除
  21. alter database drop logfile group 11;
  22. alter database drop logfile group 12;
  23. alter database drop logfile group 13;
  24. alter database drop logfile group 14;

1.5 配置静态监听

用grid用户,在$ORACLE_HOME/network/admin/listener.ora文件中添加,GLOBAL_DBNAME配置为db_unique_name,SID_NAME配置为该节点ORACLE_SID

节点1

  1. SID_LIST_LISTENER =
  2. (SID_LIST =
  3. (SID_DESC =
  4. (GLOBAL_DBNAME = zsorcl)
  5. (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/dbhome_1)
  6. (SID_NAME = zsorcl1)
  7. )
  8. )

节点2

  1. SID_LIST_LISTENER =
  2. (SID_LIST =
  3. (SID_DESC =
  4. (GLOBAL_DBNAME = zsorcl)
  5. (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/dbhome_1)
  6. (SID_NAME = zsorcl2)
  7. )
  8. )

重启监听

  1. lsnrctl stop
  2. lsnrctl start

1.6 配置TNSNAMES

oracle用户,在$ORACLE_HOME/network/admin/tnsnames.ora文件中添加,其中zsorcl_p的host配置为public ip、VIP,service_name配置为listener.ora文件中的GLOBAL_DBNAME也就是主库的db_unique_name,两个节点相同,zsorcl_s的service_name为备库db_unique_name

  1. zsorcl_p =
  2. (DESCRIPTION =
  3. (ADDRESS_LIST =
  4. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.101)(PORT = 1521))
  5. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.103)(PORT = 1521))
  6. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.102)(PORT = 1521))
  7. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.104)(PORT = 1521))
  8. )
  9. (CONNECT_DATA =
  10. (server=dedicated)
  11. (SERVICE_NAME = zsorcl)
  12. )
  13. )
  14. zsorcl_s =
  15. (DESCRIPTION =
  16. (ADDRESS_LIST =
  17. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.110)(PORT = 1521))
  18. (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.112)(PORT = 1521))
  19. )
  20. (CONNECT_DATA =
  21. (server=dedicated)
  22. (SERVICE_NAME = zsorcldg)
  23. )
  24. )

测试连接

  1. tnsping zsorcl_p
  2. tnsping zsorcl_s

1.7 配置参数

  1. 修改db_unique_name需要重启,如果不修改主库的这个参数,可以不用重启,ASM情况下最好不要修改,默认会减到OMF指定DG下的db_unique_name路径下,如果修改了那么convert参数需要注意设置全至少两个转换路径。
  2. #zsorcl是主库db_unique_name,zsorcldg是备库db_unique_name
  3. alter system set log_archive_config='dg_config=(zsorcl,zsorcldg)' scope=both sid='*';
  4. #配置本地归档
  5. alter system set log_archive_dest_1='location=+fra valid_for=(all_logfiles,all_roles) db_unique_name=zsorcl' scope=both sid='*';
  6. alter system set log_archive_dest_state_1=enable;
  7. #service是tnsnames.ora中备库的tns名
  8. alter system set log_archive_dest_2='service=zsorcl_s lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=zsorcldg' scope=both sid='*';
  9. alter system set log_archive_dest_state_2=enable;
  10. alter system set fal_server=‘zsorcl_s’ scope=both sid='*';
  11. #只用于物理备库。该参数设置成AUTO的时候,主库中添加和删除数据文件的同时,备库中也会自动的进行相应的更改,默认情况值为MANUAL
  12. alter system set standby_file_management='AUTO' scope=both sid='*';
  13. alter system set fal_server='zsorcl_s' scope=both sid='*';
  14. #前面是备库的数据文件路径,后面是主库的数据文件路径,需要重启生效
  15. alter system set db_file_name_convert='+DATA','+DATA' scope=spfile sid='*';
  16. #前面是备库的日志文件路径,后面是主库的日子文件路径,需要重启生效
  17. alter system set log_file_name_convert='+DATA','+DATA' scope=spfile sid='*';
  18. #归档命名格式
  19. alter system set log_archive_format='%t_%s_%r.arch' scope=spfile sid='*';

保护模式

最大保护最大可用最大性能
Redo archival processLGWRLGWRLGWR or ARCH
Network transmission modeSYNCSYNCSYNC or ASYNC when using LGWR process. SYNC if using ARCH process
Disk write optionAFFIRMAFFIRMAFFIRM or NOAFFIRM
Standby redo log required?YESYESNo, but it is recommended
  • AFFIRM:表示主数据库上的REDO LOG只有被写入到从数据库的standby log才算有效。
  • ASYNC(异步):在事务提交之前,由事务生成的重做数据不需要在具有该属性的目的地接收到。默认则为 ASYNC
  • SYNC(同步):事务生成的重做数据必须在事务提交之前被每个启用了该属性的目的地接收。

用LGWR传输大致如下:
1)主库:只要有新的重做日志产生,LGWR进程将触发LNSn进程把新生成的日志传输到备库(注意:这里不能由LGWR直接传输,因为整个数据库实例只有一个LGWR,为了保证它的主要业务性能不受影响,不能由它直接传输);
2)备库:RFS进程接收到日志后,将其写入Standby重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等Standby重做日志归档后再应用。
3)其中,ASYNC和SYNC的区别在于:SYNC是在redo还在内存时,LNSn进程就开始传输,而ASYNC是在redo缓冲到online redo log后,LNSn才开始传输。

ARCH方式
arch方式是指,主库在被操作过程中,操作记录不断写入联机重做日志文件中(redo日志中)直到该组日志容量被写满,触发归档进程生成归档日志,然后再将归档日志通过网络发送给备库。
从同步的实时性来看,LGWR(SYNC) > LGWR(ASYNC)> ARCH

1.8 密码文件

复制主库密码文件至备库,备库修改密码文件名为orapwzsorcl1,备库的实例名叫zsorcl1

[oracle@rac11g_1 dbs]$ scp orapwzsorcl1 oracle@192.168.23.110:/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs

2. 备库

2.1 配置静态监听

  1. [grid@rac11gstd admin]$ vi listener.ora
  2. #加入以下参数
  3. SID_LIST_LISTENER =
  4. (SID_LIST =
  5. (SID_DESC =
  6. (GLOBAL_DBNAME = zsorcldg)
  7. (ORACLE_HOME = /home/u01/app/oracle/product/11.2.0/dbhome_1)
  8. (SID_NAME = zsorcl1)
  9. )
  10. )
  11. #重启监听
  12. [grid@rac11gstd admin]$ lsnrctl reload

2.2 配置tnsnames

把主库的tnsnames.ora文件复制到备库

[oracle@rac11g_1 admin]$ scp tnsnames.ora oracle@192.168.23.110:/home/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/

2.3 备库创建pfile文件

主库创建pfile文件复制至备库/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs下修改

  1. [oracle@rac11g_1 ~]$sqlplus / as sysdba
  2. SQL> create pfile='/home/oracle/pfile_std.ora' from spfile;
  3. [oracle@rac11g_1 ~]$ scp pfile_std.ora oracle@192.168.23.110:/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs

备库pfile文件

  1. [oracle@rac11gstd dbs]$ cat pfile_std.ora
  2. *.cluster_database=true
  3. *.compatible='11.2.0.4.0'
  4. *.db_create_file_dest='+DATA'
  5. *.db_create_online_log_dest_1='+DATA'
  6. *.db_create_online_log_dest_2='+FRA'
  7. *.db_domain=''
  8. *.db_file_name_convert='+DATA','+DATA'
  9. *.db_name='zsorcl'
  10. *.db_unique_name='zsorcldg'
  11. *.diagnostic_dest='/home/u01/app/oracle'
  12. *.dispatchers='(PROTOCOL=TCP) (SERVICE=zsorclXDB)'
  13. *.fal_server='zsorcl_p'
  14. zsorcl1.instance_number=1
  15. *.log_archive_config='dg_config=(zsorcl,zsorcldg)'
  16. *.log_archive_dest_1='location=+fra valid_for=(all_logfiles,all_roles) db_unique_name=zsorcldg'
  17. *.log_archive_dest_2='service=zsorcl_p lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=zsorcl'
  18. *.log_archive_format='%t_%s_%r.arch'
  19. *.log_file_name_convert='+DATA','+DATA'
  20. *.open_cursors=500
  21. *.processes=500
  22. *.remote_listener='rac11gstd-scan:1521'
  23. *.remote_login_passwordfile='exclusive'
  24. *.sessions=555
  25. *.standby_file_management='AUTO'
  26. zsorcl1.thread=1
  27. zsorcl1.undo_tablespace='UNDOTBS1'

2.4 启动备库

启动至nomount状态

  1. [oracle@rac11gstd dbs]$ sqlplus / as sysdba
  2. SQL> startup nomount pfile='/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs/pfile_std.ora';

3. 开始复制

主库节点1 oracle用户执行

[oracle@rac11g_1 ~]$ rman target sys/oracle@zsorcl_p auxiliary sys/oracle@zsorcl_s

执行复制命令,这个命令可以直接恢复数据文件、standby日志文件和控制文件。

  1. RMAN> run {
  2. allocate channel ch1 type disk;
  3. allocate channel ch2 type disk;
  4. allocate channel ch3 type disk;
  5. allocate channel ch4 type disk;
  6. allocate auxiliary channel ch5 type disk;
  7. allocate auxiliary channel ch6 type disk;
  8. duplicate target database for standby from active database nofilenamecheck;
  9. release channel ch1;
  10. release channel ch2;
  11. release channel ch3;
  12. release channel ch4;
  13. release channel ch5;
  14. release channel ch6;
  15. }

  1. contents of Memory Script:
  2. {
  3. sql clone 'alter database mount standby database';
  4. }
  5. executing Memory Script
  6. sql statement: alter database mount standby database
  7. released channel: ch1
  8. released channel: ch2
  9. released channel: ch3
  10. released channel: ch4
  11. released channel: ch5
  12. released channel: ch6
  13. RMAN-00571: ===========================================================
  14. RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  15. RMAN-00571: ===========================================================
  16. RMAN-03002: failure of Duplicate Db command at 06/19/2024 11:44:46
  17. RMAN-05501: aborting duplication of target database
  18. RMAN-03015: error occurred in stored script Memory Script
  19. RMAN-03009: failure of sql command on clone_default channel at 06/19/2024 11:44:46
  20. RMAN-11003: failure during parse/execution of SQL statement: alter database mount standby database
  21. ORA-00201: control file version 11.2.0.4.0 incompatible with ORACLE version 11.2.0.0.0
  22. ORA-00202: control file: '+DATA/zsorcldg/controlfile/current.256.1172087029'
  23. RMAN>

备库pfile里面一定要加版本,否则报版本不一致错误

注意:

由于备库是没有通过dbca建库,备库oracle用户的$ORACLE_HOME/bin/oracle权限不正确,复制过程会报错。如果可执行文件$ORACLE_HOME/bin/oracle的属主或权限设定出了问题,那么可能会造成很多问题。例如:无法登陆到数据库、ora-600错误、“TNS-12518: TNS:listener could not hand off client connection”、“Linux Error: 32: Broken pipe”、“ORA-12537: TNS:connection closed”、访问ASM磁盘出错等。解决办法很简单,可以在grid用户下运行setasmgidwrap命令重新配置oracle用户的$ORACLE_HOME/bin/oracle可执行文件的权限和属主或者直接将oracle文件的权限修改为6751。$ORACLE_HOME/bin/oracle可执行文件正确属主应该是oracle:asmadmin,并且权限必须有s才可以。我修改过后重启了备库服务器才复制成功,没重启的时候方法对了还是不行。

  1. #grid用户
  2. [grid@rac11gstd ~]$ setasmgidwrap -o /home/u01/app/oracle/product/11.2.0/dbhome_1/bin/oracle
  3. #root用户
  4. [root@rac11gstd ~]# cd /home/u01/app/oracle/product/11.2.0/dbhome_1/bin
  5. [root@rac11gstd bin]# chmod 6751 oracle
  6. [root@rac11gstd bin]# ll oracle
  7. -rwsr-s--x 1 oracle asmadmin 239501536 Jun 14 14:10 oracle

备库完成上面文件属组和权限修改后,完整的复制过程

  1. [oracle@rac11g_1 ~]$ rman target sys/oracle@zsorcl_p auxiliary sys/oracle@zsorcl_s
  2. Recovery Manager: Release 11.2.0.4.0 - Production on Wed Jun 19 11:48:52 2024
  3. Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
  4. connected to target database: ZSORCL (DBID=3108552649)
  5. connected to auxiliary database: ZSORCL (not mounted)
  6. RMAN> run {
  7. allocate channel ch1 type disk;
  8. allocate channel ch2 type disk;
  9. allocate channel ch3 type disk;
  10. allocate channel ch4 type disk;
  11. allocate auxiliary channel ch5 type disk;
  12. allocate auxiliary channel ch6 type disk;
  13. duplicate target database for standby from active database nofilenamecheck;
  14. release channel ch1;
  15. release channel ch2;
  16. release channel ch3;
  17. release channel ch4;
  18. release channel ch5;
  19. release channel ch6;
  20. }
  21. using target database control file instead of recovery catalog
  22. allocated channel: ch1
  23. channel ch1: SID=402 instance=zsorcl1 device type=DISK
  24. allocated channel: ch2
  25. channel ch2: SID=594 instance=zsorcl1 device type=DISK
  26. allocated channel: ch3
  27. channel ch3: SID=202 instance=zsorcl1 device type=DISK
  28. allocated channel: ch4
  29. channel ch4: SID=403 instance=zsorcl1 device type=DISK
  30. allocated channel: ch5
  31. channel ch5: SID=10 instance=zsorcl1 device type=DISK
  32. allocated channel: ch6
  33. channel ch6: SID=203 instance=zsorcl1 device type=DISK
  34. Starting Duplicate Db at 2024-06-19 11:48:57
  35. contents of Memory Script:
  36. {
  37. backup as copy reuse
  38. targetfile '/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwzsorcl1' auxiliary format
  39. '/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwzsorcl1' ;
  40. }
  41. executing Memory Script
  42. Starting backup at 2024-06-19 11:48:57
  43. Finished backup at 2024-06-19 11:48:58
  44. contents of Memory Script:
  45. {
  46. backup as copy current controlfile for standby auxiliary format '+DATA/zsorcldg/controlfile/current.257.1172087339';
  47. restore clone controlfile to '+FRA/zsorcldg/controlfile/current.257.1172087339' from
  48. '+DATA/zsorcldg/controlfile/current.257.1172087339';
  49. sql clone "create spfile from memory";
  50. shutdown clone immediate;
  51. startup clone nomount;
  52. sql clone "alter system set control_files =
  53. ''+DATA/zsorcldg/controlfile/current.257.1172087339'', ''+FRA/zsorcldg/controlfile/current.257.1172087339'' comment=
  54. ''Set by RMAN'' scope=spfile";
  55. shutdown clone immediate;
  56. startup clone nomount;
  57. }
  58. executing Memory Script
  59. Starting backup at 2024-06-19 11:48:58
  60. channel ch1: starting datafile copy
  61. copying standby control file
  62. output file name=/home/u01/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_zsorcl1.f tag=TAG20240619T114858 RECID=2 STAMP=1172058539
  63. channel ch1: datafile copy complete, elapsed time: 00:00:01
  64. Finished backup at 2024-06-19 11:49:00
  65. Starting restore at 2024-06-19 11:49:00
  66. channel ch6: skipped, AUTOBACKUP already found
  67. channel ch5: copied control file copy
  68. Finished restore at 2024-06-19 11:49:09
  69. sql statement: create spfile from memory
  70. Oracle instance shut down
  71. connected to auxiliary database (not started)
  72. Oracle instance started
  73. Total System Global Area 342425600 bytes
  74. Fixed Size 2253024 bytes
  75. Variable Size 285216544 bytes
  76. Database Buffers 50331648 bytes
  77. Redo Buffers 4624384 bytes
  78. allocated channel: ch5
  79. channel ch5: SID=580 instance=zsorcl1 device type=DISK
  80. allocated channel: ch6
  81. channel ch6: SID=10 instance=zsorcl1 device type=DISK
  82. sql statement: alter system set control_files = ''+DATA/zsorcldg/controlfile/current.257.1172087339'', ''+FRA/zsorcldg/controlfile/current.257.1172087339'' comment= ''Set by RMAN'' scope=spfile
  83. Oracle instance shut down
  84. connected to auxiliary database (not started)
  85. Oracle instance started
  86. Total System Global Area 342425600 bytes
  87. Fixed Size 2253024 bytes
  88. Variable Size 285216544 bytes
  89. Database Buffers 50331648 bytes
  90. Redo Buffers 4624384 bytes
  91. allocated channel: ch5
  92. channel ch5: SID=580 instance=zsorcl1 device type=DISK
  93. allocated channel: ch6
  94. channel ch6: SID=10 instance=zsorcl1 device type=DISK
  95. contents of Memory Script:
  96. {
  97. sql clone 'alter database mount standby database';
  98. }
  99. executing Memory Script
  100. sql statement: alter database mount standby database
  101. RMAN-05529: WARNING: DB_FILE_NAME_CONVERT resulted in invalid ASM names; names changed to disk group only.
  102. contents of Memory Script:
  103. {
  104. set newname for tempfile 1 to
  105. "+data";
  106. switch clone tempfile all;
  107. set newname for datafile 1 to
  108. "+data";
  109. set newname for datafile 2 to
  110. "+data";
  111. set newname for datafile 3 to
  112. "+data";
  113. set newname for datafile 4 to
  114. "+data";
  115. set newname for datafile 5 to
  116. "+data";
  117. backup as copy reuse
  118. datafile 1 auxiliary format
  119. "+data" datafile
  120. 2 auxiliary format
  121. "+data" datafile
  122. 3 auxiliary format
  123. "+data" datafile
  124. 4 auxiliary format
  125. "+data" datafile
  126. 5 auxiliary format
  127. "+data" ;
  128. sql 'alter system archive log current';
  129. }
  130. executing Memory Script
  131. executing command: SET NEWNAME
  132. renamed tempfile 1 to +data in control file
  133. executing command: SET NEWNAME
  134. executing command: SET NEWNAME
  135. executing command: SET NEWNAME
  136. executing command: SET NEWNAME
  137. executing command: SET NEWNAME
  138. Starting backup at 2024-06-19 11:50:02
  139. channel ch1: starting datafile copy
  140. input datafile file number=00003 name=+DATA/zsorcl/datafile/undotbs1.261.1171638355
  141. channel ch2: starting datafile copy
  142. input datafile file number=00001 name=+DATA/zsorcl/datafile/system.259.1171638351
  143. channel ch3: starting datafile copy
  144. input datafile file number=00002 name=+DATA/zsorcl/datafile/sysaux.260.1171638353
  145. channel ch4: starting datafile copy
  146. input datafile file number=00004 name=+DATA/zsorcl/datafile/undotbs2.263.1171638361
  147. output file name=+DATA/zsorcldg/datafile/undotbs2.261.1172087403 tag=TAG20240619T115002
  148. channel ch4: datafile copy complete, elapsed time: 00:00:15
  149. channel ch4: starting datafile copy
  150. input datafile file number=00005 name=+DATA/zsorcl/datafile/users.264.1171638361
  151. output file name=+DATA/zsorcldg/datafile/system.259.1172087403 tag=TAG20240619T115002
  152. channel ch2: datafile copy complete, elapsed time: 00:00:16
  153. output file name=+DATA/zsorcldg/datafile/users.262.1172087419 tag=TAG20240619T115002
  154. channel ch4: datafile copy complete, elapsed time: 00:00:01
  155. output file name=+DATA/zsorcldg/datafile/undotbs1.258.1172087403 tag=TAG20240619T115002
  156. channel ch1: datafile copy complete, elapsed time: 00:00:19
  157. output file name=+DATA/zsorcldg/datafile/sysaux.260.1172087403 tag=TAG20240619T115002
  158. channel ch3: datafile copy complete, elapsed time: 00:00:18
  159. Finished backup at 2024-06-19 11:50:21
  160. sql statement: alter system archive log current
  161. contents of Memory Script:
  162. {
  163. switch clone datafile all;
  164. }
  165. executing Memory Script
  166. datafile 1 switched to datafile copy
  167. input datafile copy RECID=2 STAMP=1172087428 file name=+DATA/zsorcldg/datafile/system.259.1172087403
  168. datafile 2 switched to datafile copy
  169. input datafile copy RECID=3 STAMP=1172087428 file name=+DATA/zsorcldg/datafile/sysaux.260.1172087403
  170. datafile 3 switched to datafile copy
  171. input datafile copy RECID=4 STAMP=1172087428 file name=+DATA/zsorcldg/datafile/undotbs1.258.1172087403
  172. datafile 4 switched to datafile copy
  173. input datafile copy RECID=5 STAMP=1172087428 file name=+DATA/zsorcldg/datafile/undotbs2.261.1172087403
  174. datafile 5 switched to datafile copy
  175. input datafile copy RECID=6 STAMP=1172087429 file name=+DATA/zsorcldg/datafile/users.262.1172087419
  176. Finished Duplicate Db at 2024-06-19 11:50:37
  177. released channel: ch1
  178. released channel: ch2
  179. released channel: ch3
  180. released channel: ch4
  181. released channel: ch5
  182. released channel: ch6
  183. RMAN>

4. 复制完成打开备库

打开备库并且开启实时日志应用

  1. #关闭数据库
  2. shutdown immediate
  3. #启动数据库
  4. startup
  5. #查看当前open_mode,备库是read only状态
  6. select database_role,protection_mode,protection_level,open_mode from v$database;
  7. #查看归档日志进程
  8. select process,client_process,sequence#,status from v$managed_standby;
  9. #备库开启日志实时应用
  10. recover managed standby database using current logfile disconnect from session;
  11. #查看归档日志进程,此时多了一个进程MRP0
  12. select process,client_process,sequence#,status from v$managed_standby;

备库应用主库日志时有无using current logfile选项的区别

  • 无using current logfile,主库切换日志后,备库才从归档文件挖掘出变化,然后应用到库文件中。
  • 有using current logfile,备库根据接收到的redo信息,实时应用到备库上,即便是最大性能。

5. 验证数据是否同步

主库操作

  1. create user zs identified by oracle;
  2. grant dba to zs;
  3. conn zs/oracle
  4. create table test_sync(id number);
  5. select count(*) from test_sync;
  6. COUNT(*)
  7. ----------
  8. 0
  9. begin
  10. for i in 1..10000 loop
  11. insert into test_sync values (520);
  12. end loop;
  13. end;
  14. /
  15. commit;
  16. select count(*) from test_sync;
  17. COUNT(*)
  18. ----------
  19. 10000

备库查看数据是否过来

  1. select count(*) from test_sync;
  2. COUNT(*)
  3. ----------
  4. 10000

ADG验证完毕

6. ADG开关步骤

6.1 关闭ADG

主库shutdown >> 备库取消应用归档日志 >> 关闭备库 >> 关闭主库和备库的监听

  1. 1:主库上:SQL> shutdown immediate
  2. 2:备库上:SQL> alter database recover managed standby database cancel;
  3. 3:备库上:SQL> shutdown immediate
  4. 4:停止监听
  5. 主库:
  6. [grid@rac11g_1 ~]$ lsnrctl stop
  7. [grid@rac11g_2 ~]$ lsnrctl stop
  8. 备库:
  9. [grid@rac11gstd ~]$ lsnrctl stop

6.2 启动ADG

启动主库和备库监听 >> 启动备库 >> 启动主库 >> 切换主库日志

  1. 1:主库和备库:
  2. [grid@rac11g_1 ~]$ lsnrctl start
  3. [grid@rac11g_2 ~]$ lsnrctl start
  4. [grid@rac11gstd ~]$ lsnrctl start
  5. 2:启动备库:
  6. SQL> startup nomount
  7. SQL> alter database mount standby database;
  8. SQL> alter database open;
  9. SQL> alter database recover managed standby database using current logfile disconnect from session;
  10. 3:启动主库:
  11. SQL> startup

至此oracle 11g rac + rac 单节点 ADG搭建完毕

十二、相关视图

查看保护模式

select database_role,protection_mode,protection_level,open_mode from v$database;

查看归档日志进程

select process,client_process,sequence#,status from v$managed_standby;

查看备库已经归档的redo

SELECT REGISTRAR, CREATOR, THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE# FROM V$ARCHIVED_LOG; 

查看备库已经应用的 redo

 SELECT THREAD#, SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE# FROM V$LOG_HISTORY;

查看备库接收 , 应用redo数据过程

SELECT MESSAGE FROM V$DATAGUARD_STATUS;

查看备库上的日志接收情况

select status,target,archiver,error,process from v$archive_dest;

查看当前序列号

archive log list;

在备库查看延迟情况

select * from v$dataguard_stats;

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

闽ICP备14008679号