OracleRAC原理、架构、安装部署学习记录

Linux7下部署OracleRAC+Grid+ASM

Oracle RAC架构和原理

Oracle Real Application Cluster 实时应用集群,用来在集群环境下实现多机共享数据库,以保证应用的高可用性;同时可以自动实现并行处理及负载均衡,并能实现数据库在故障时的容错和无断点恢复。它是oracle数据库支持网络计算环境的核心技术。它是oracle数据库支持网络计算环境的核心技术。

从11g开始,Oracle把Cluster和ASM全部归到一个发布包中,统称Grid。

一个Oracle Rac数据库由多个服务器节点组成,每个节点上面都有自己独立的OS,ClusterWare,Oracle RAC数据库程序等,每个节点都有自己的网络监听器。ClusterWare是一个集群软件,主要用于集群系统管理,Oracle RAC数据库程序用于提供Oracle实例进程,以提供客户端访问集群系统,监听服务主要用于监控自己网络端口的信息,所有的服务和程序提供操作系统都去访问一个共享存储,最终完成数据的读写。共享存储的方式有很多种,可以通过自动存储管理(ASM),Oracle集群文件系统(OCFS),裸设备(RAW),网络共享区域存储(NAS)等来保证整个集群系统的数据一致性。
用户访问集群数据库,在节点层有许多节点,每一个节点相当于一个主机,或者一个操作系统。每一个操作系统是安装在一台服务器上独立完成的。最底层是OS,在操作系统上层安装的是clusterware,这是一个高可用的集群软件。再上面一层是oracle rac数据库,这个数据库还启动了rac监听,每一个节点都是有os,clusterware,oracle rac listener三部分组成的。
运行在两个节点上面的数据库访问同一个RAC数据库,并且两个节点的本地磁盘仅用存放Oracle安装程序和ClusterWare软件,而在共享存储上,存放着Oracle的控制文件,数据文件,联机日志文件,归档日志文件等,这是安装Oracle Rac时的一种数据存储方式,其实,RAC提供了多种数据存储方式。

在RAC里面,最重要的就是实例和实例之间的交互,即使是分离的实例,但是读取的数据是相同的,RAC不是分布式的系统,因为它只有一个存储,分布式系统是指数据发布在不同的数据库上面,然后通过中间件来协调做查询。RAC还是一台数据库,多个实例。
对于RAC来说至少有两套物理上不同的网络,私有网络是专门用来实例之间的数据交互。
存储和服务器完全分离的。
当节点1坏了,不仅仅只是将业务切换到节点2,这个时候还要处理节点1坏了遗留下来的问题。主要是一些提交和未提交的事务。比如实例1坏了,实例2就要从实例1的redo里面读最后一次checkpoint之后的信息

RAC的服务进程
CRS 集群资源服务
CSS(Cluster Synchronization Services )集群同步服务
EVM 事件管理服务
ONS 事件的发布及订阅服务
用来协调两个实例之间来访问存储,这个架构就是CRS。在RAC下面因为要对全局资源进行控制,所以实例不能直接访问存储,必须通过CRS层来访问。(RAC指的是架构,具体是由CRS这套服务来实现的,这套服务里面有上面的四个服务组成)。

GPnP profile
当集群启动的时,CSS将扫描所有的ASM disks,它利用的是GPnP profile文件中的ASM discovery string
集群的另外一个节点被发现, gpnpd 确认是否有必要在两个节点之间同步gpnp profile

Oracle 11gR2用gpnp profile存放ASM的spfile路径
https://www.cnblogs.com/hllnj2008/p/5190145.html
oracle Grid 是如何找到voteidks和asm spfile.
https://blog.csdn.net/weixin_34038652/article/details/89592766
Oracle11gR2集群守护进程gpnp介绍
https://blog.csdn.net/a743044559/article/details/78234750

OCR
OCR就好比Windows的一个注册表,存储了所有与集群,RAC数据库相关的配置信息。而且是公用的配置,也就是说多个节点共享相同的配置信息。因此该配置应当存储于共享磁盘。

clusterware文件
OCR 配置文件 类似Windows注册表
VOTING DISK 磁盘心跳 解决脑裂
CONTROL FILE 控制重要进程的启停
ORACLE 11.2 CRS拆分了CRSD和OHASD ,OCR拆分 OLR和OCR

RAC的容错

实例1坏了,实例2从实例1的redo里面读最后一次checkpoint之后的信息,就是实例1最后将所有的数据写到磁盘之后产生的所有的redo应用,该回滚的回滚,该恢复的恢复。即现将以提交和未提交的事务产生的redo应用,因为是最后一次checkpoint之后的信息,之前的信息是已经写到磁盘上面了,所谓的恢复是将未写到磁盘上面的信息进行恢复。(虽然实例坏了,但是实例的redo并没有坏,放置在共享存储上面,它的redo还是允许其他实例访问的)实例2读取实例1的redo,然后全部应用一遍,之后再回滚未提交的事务修改的数据块,这个有点像实例的恢复。

ASM(Automatic Storage Management) 自动存储管理

简化和自动化存储管理
提高存储利用率和敏捷性
提供可预测的性能、可用性和可扩展性
服务器崩溃时支持进行数据库故障切换
集成存储管理与 ACFS

Oracle自动存储管理 (ASM) 官网
https://www.oracle.com/technetwork/cn/database/database-technologies/cloud-storage/index.html
深入了解Oracle ASM(一):基础概念
http://blog.itpub.net/31444259/viewspace-2151584/

深入理解数据库磁盘存储

深入理解数据库磁盘存储(Disk Storage)
https://www.cnblogs.com/linjierd/p/10791048.html
数据库中的数据都存储在表空间中。表空间即是管理将逻辑数据库设计映射到操作系统物理存储中的一个数据库对象,用于指明数据的物理位置。

Oracle数据库磁盘存储的逻辑结构为:一个数据库(Database)对应多个表空间(Tablespace),一个表空间对应多个段(Segment),一个段对应多个区(Extent),一个区对应多个数据块(Data Block),真正的数据就保存在数据块中。
Oracle中一个数据块的大小默认是2KB。Oracle中的数据块称为Oracle Block。
在这里插入图片描述

要注意:这里的表空间,段,区,数据块(页)全部都是数据库中的逻辑概念,并不是物理存在的,那么数据库磁盘存储的逻辑结构如何映射到操作系统磁盘存储的物理结构中呢?
先来看看表空间的物理映射。表空间在操作系统上是由容器(Container)承载的,对于系统管理表空间(SMS)【注意:Oracle不存在系统管理表空间,其表空间全部都是数据库管理的】,其唯一的容器是文件目录;而对于数据库管理表空间,其容器则是文件或者裸设备(比如磁带、磁盘)。这里我们不讨论系统管理表空间,只关注数据库管理表空间下的数据库磁盘存储。由于数据库对于文件和裸设备这两种容器操作上是同等对待的,所以以文件容器为例进行讨论。文件容器本身是一个由DMS表空间使用的预分配大小的文件,一个表空间可以有多个文件容器,即有多个数据文件。也就是说:一个逻辑上的表空间映射为多个物理上的数据文件。

数据库中的数据块(页)和操作系统的块是什么关系呢?

再来讨论数据块(页)的物理映射。我们知道,物理结构上,操作系统中的文件是由多个操作系统的块(Block)组成的(Linux,Unix系统的块大小为512B),事实上,若干个操作系统块组成一个数据库的数据块(页)。对应区(extent)和段(segment)的映射并没有物理单位与之对应,而是在一个数据文件中会包含多个段,每个段里又包含多个区(每个段中的区的个数不一定是一样的),每个区包含若干数据块(每个区中数据块的数量也不一定一样)。另外,和表空间一样,段也是可以跨文件的,即一个段可以由不同文件中的区所组成。

Oracle数据库组件

Database 数据库存取、计算、事物处理
RAC 高可用性集群
ASM 集群卷管理、只用由数据库使用的简单文件系统
ACFS 可挂载的集群文件系统
RMAN 备份恢复
DATAGuard 远程复制

RAC集群安装步骤

Grid目录下集成了Cluster Ware和ASM
oraInventory目录:在使用安装Oracle软件或者使用dbca创建数据库时,所有的日志都会放在oraInventory这个目录下。

1.安装配置操作系统

linux redhat 7.0

cat /proc/cpuinfo  #  Intel(R) Xeon(R) CPU E3-1220 v6 @ 3.00GHz 4核
cat /proc/meminfo  #内存 16G
硬盘2T两个(500G练手测试)

1.1 配置网络:主机名、hosts文件、网卡IP

硬件架构、软件架构

1.1.1 修改主机名hostname

在Redhat7版本的/etc/hostname中设置,不用重启立即生效

[root@node1 ~]# vi /etc/hostname
node1

1.1.2 Hosts文件

[root@node1 ~]# vi /etc/hosts 添加

#publicip
192.168.4.3 node1
192.168.4.4 node2
#privateip
10.0.0.3 node1-priv
10.0.0.4 node2-priv
#vip
192.168.4.13 node1-vip
192.168.4.14 node2-vip
#scanip
192.168.4.15 node-scan


参数说明:
Public IP:业务网段能访问的IP
Private IP:心跳网络、用来保证两台服务器同步数据用的私网IP;必须是专用ip,必须在安装前配置好,必须在一个专用私有网络中,只能被另外的rac节点解析,不能被其它网络解析。
Virtual IP:用于负载均衡和故障转移的IP,当一个节点发生故障时,其vip会“浮动”到另外一个正常的节点,客户端没有任何感觉。
Scan IP:(Single Client Access Name 单一客户端访问名称)虚拟IP,是对外提供的IP,oracle推荐使用scan ip,通过配置scan ip可以将客户端来的请求,负载均衡的分配到集群的各个节点上。它类似于虚拟ip名,但不同的是,虚拟ip是一个节点一个ip地址一个域名,scanip是针对整个cluster的,一个域名对应着多个节点,多个ip地址。 scan ip其实是oracle在客户端与数据库之间,新加的一个连接层,当有客户端访问时,连接到 SCAN IP LISTENER, 而SCAN IP LISTENER接收到连接请求时,会根据 LBA 算法将该客户端的连接请求,转发给对应的instance上的VIP LISTENER,从而完成了整个客户端与服务器的连接过程。简化如下: client -> scan listener -> local listener -> local instance 也可以把scan理解为一个虚拟主机名,它对应的是整个RAC集群。客户端主机只需通过这个scan name即可访问数据库集群的任意节点。当然访问的节点是随机的,oracle强烈建议通过DNS Server的round robin模式配置解析SCAN,实现负载均衡(即轮换连接SCAN对应的IP地址)。

public ip,vip,scan ip必须在同一个网络网段内,Public IP和Private IP为两个不同网段。
除了Public IP和Private IP需要手工配置,其余IP都是Oracle RAC自动生成的。


ORACLE 11GR2 RAC的网络规划解析
https://www.cnblogs.com/zwl715/p/3621142.html

1.1.3 网卡及IP设置

RAC网络层由各个节点的网络组件组成,包括2个物理网卡和3个IP地址

节点1节点2
node1:192.168.4.3node2:192.168.4.4
node1-priv:10.0.0.3node2-priv:v10.0.0.4

[root@node1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno1

HWADDR=D0:50:99:CD:00:6B
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
DEVICE=eno1  
NAME=eno1
UUID=0de31c52-ecaa-4472-bbd4-778ae86d872a
ONBOOT=yes
IPADDR=192.168.4.3
PREFIX=24
GATEWAY=192.168.4.1
DNS1=192.168.2.1

[root@node2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno1:1

HWADDR=D0:50:99:CD:00:6B
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
DEVICE=eno1:1	#应为eno2
NAME=eno1:1	#应为eno2
ONBOOT=yes
IPADDR=10.0.0.3
PREFIX=24
GATEWAY=10.0.0.1
DNS1=192.168.2.1

由于网卡名称问题私有网卡可以ping通但Grid安装失败,我最后给两台机器的私有网卡也用了虚拟网卡(NAME、DEVICE=eno1:1),实际应该是物理网卡eno2

虚拟IP的使用
https://blog.csdn.net/nawenqiang/article/details/81741235

关于privateIP内网连接不通
一台服务器两个物理网卡,需要既能上外网,也需要能上内网,如果两个网卡都都配置了网关,那么就会出现双网关的情况,这样就会导致有时候eno1上不了网,因为有两个网关,不知道该往哪个网关出去。
解决方法:先保证外网正常,内网网卡设置好固定地址,不设置网关(不能设置网关,网关在后面的命令中体现)
处理结果:私有网卡也设置虚拟IP

1.3 修改内核参数

[root@node1 etc]# vi /etc/sysctl.conf

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967296     ## 该值为内存的 75%, 单位为字节
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
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
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304

参数说明:
kernel.shmmni:整个系统共享内存段的最大数目
fs.file-max:系统中所允许的文件句柄最大数目
net.core.rmem_default:套接字接收缓冲区大小的缺省值
net.core.rmem_max:套接字接收缓冲区大小的最大值
net.core.wmem_default:套接字发送缓冲区大小的缺省值
net.core.wmem_max:套接字发送缓冲区大小的最大值
net.ipv4.ip_local_port_range:应用程序可使用的IPv4端口范围

1.4 关闭防火墙

systemctl stop iptables.service
systemctl disable iptables.service

1.7 yum网源、挂载ISO文件、安装依赖包

1.7.1 引入epel网源

[root@localhost yum]# vi /etc/yum.repos.d/epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
# metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
# metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
# metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

给node2传一份
[root@node1 yum.repos.d]# scp /etc/yum.repos.d/epel.repo node2:/etc/yum.repos.d/

更新后目录下内容
[root@node2 yum.repos.d]# cd /etc/yum.repos.d && ls
epel.repo epel-testing.repo packagekit-media.repo

1.7.2 安装依赖包

RPM包查询下载
Linux RPM Resource
http://rpmfind.net/linux/rpm2html/search.php?query=oracleasm&submit=Search+…&system=&arch=

1.7.3 手动挂载本地iso镜像文件

[root@node1 mnt]# mount /dev/cdrom /mnt/cdrom

2.创建用户、组、文件目录、环境变量

2.1 创建用户和组

[root@node1 ~]# cat /etc/group

groupadd -g 1000 oinstall
groupadd -g 1020 asmadmin
groupadd -g 1021 asmdba
groupadd -g 1022 asmoper
groupadd -g 1023 dba
groupadd -g 1024 oper
useradd -u 1000 -d /home/oracle -g oinstall -G dba,asmdba,oper oracle
useradd -u 1001 -d /home/grid -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid

2.2 创建oracle文件目录及权限

mkdir -p /oracle/app/11.2.0/grid
mkdir -p /oracle/app/grid
chown -R grid:oinstall  /oracle
mkdir -p /oracle/app/oracle/
mkdir -p /oracle/app/oraInventory
chown -R oracle:oinstall  /oracle/app/oracle
chmod -R 775 /oracle

2.3 设置oracle、grid用户的环境变量

oracle用户( node1 node2 )
[oracle@node1 ~]$ vi /home/oracle/.bash_profile

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl1    #节点2:orcl2
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin:/home/oracle/run
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export Grid_HOME=/oracle/app/11.2.0/grid
export PATH=${PATH}:$Grid_HOME/bin
export ORA_NLS10=$Grid_HOME/nls/data
umask 022
export TMOUT=0

grid用户( node1 node2 )
[grid@node1 ~]$ vi /home/grid/.bash_profile

export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/11.2.0/grid
export ORACLE_SID=+ASM1    #节点2:+ASM2
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin:/home/oracle/run
export ORACLE_TERM=xterm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
export TMOUT=0

2.3 设置oracle、grid用户限制

[root@node1 ~]# vi /etc/security/limits.conf

grid soft nproc 2047 
grid hard nproc 16384 
grid soft nofile 1024 
grid hard nofile 65536

oracle soft nproc 2047 
oracle hard nproc 16384 
oracle soft nofile 1024 
oracle hard nofile 65536

配置含义
soft 指的是当前系统生效的设置值。
hard 表明系统中所能设定的最大值。soft 的限制不能比hard 限制高
nofile 打开文件的最大数目
nproc 单个用户可用的最大进程数量

2.4 配置节点互信

su - oracle
mkdir ~/.ssh
chmod 755  .ssh 
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa

在节点1上执行:将所有的key文件汇总到一个总的认证文件中,
su - oracle
cd .ssh
ssh node1 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh node2 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh node1 cat ~/.ssh/id_dsa.pub >> authorized_keys
ssh node2 cat ~/.ssh/id_dsa.pub >> authorized_keys

将生成的key拷贝到node2
[oracle@node1 .ssh]$ scp authorized_keys node2:~/.ssh/
[oracle@node2 .ssh]chmod 600 authorized_keys

设置节点时间同步
[oracle@node1 .ssh]$ ssh node1 date
 [oracle@node1 .ssh]$ ssh node2 date
 [oracle@node1 .ssh]$ ssh node1-priv date
 [oracle@node1 .ssh]$ ssh node2-priv date

3.创建共享存储ASM

安装RAC 时需要配置UDEV 进行持久化
方法:对/dev/sdb通过设置udev rules(/etc/udev/rules.d/99-oracle-asmdevices.rules)来创建用户定义的设备名称

udev详解
https://blog.csdn.net/lqrensn/article/details/8097288

udev的规则文件:一般存放在/lib/udev/rules.d/和/etc/udev/rules.d/,前者存放默认的规则,后者存放自定义的规则。

udev相关包
system-config-printer-udev-1.4.1-16.el7.x86_64.rpm
libgudev1-208-11.el7.x86_64.rpm

udevadm命令
用udevadm进行测试,注意udevadm命令不接受/dev/sdc这样的挂载设备名,必须是使用/sys/block/sdb这样的原始设备名。
udevadm test /sys/block/sdb
udevadm info --query=all --path=/sys/block/sdb
udevadm info --query=all --name=asm-diskb

3.1格式化磁盘

Linux单个磁盘最多有15个分区(3个主分区 + 1个扩展分区 + 11个逻辑分区),逻辑分区必须建立在扩展分区之上。
分区方法是:先分3个主分区,第四个分区为扩展分区,然后在扩展分区中再分成3个逻辑分区。

[root@node2 dev]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
    命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-976773167,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-33167,默认为 33167):+2G
将使用默认值 33167
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

[root@node2 dev]# lsblk
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdb             8:16   0   465.8G  0 disk 
├─sdb1          8:17   0     2G  0 part 
├─sdb2          8:18   0     2G  0 part 
├─sdb3          8:19   0     2G  0 part 
├─sdb4          8:20   0     1K  0 part 
├─sdb5          8:21   0   100G  0 part 
├─sdb6          8:22   0   100G  0 part 
└─sdb7          8:23   0   100G  0 part

3.2 添加映射(rule文件)、创建UDEV策略,绑定设备编号

3.2.1 查看磁盘UUID

[root@node1 ~]# /usr/lib/udev/scsi_id -g -u -d /dev/sdb
35000039fd4f6d1e2

3.2.2 编辑绑定文件,使用如下规则:

[root@node1 rules.d]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sdb1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="35000039fd4f6d1e2", SYMLINK+="asm-data1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdb2", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="35000039fd4f6d1e2", SYMLINK+="asm-data2", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdb3", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="35000039fd4f6d1e2", SYMLINK+="asm-data3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdb5", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="35000039fd4f6d1e2", SYMLINK+="asm-data5", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdb6", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="35000039fd4f6d1e2", SYMLINK+="asm-data6", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdb7", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="35000039fd4f6d1e2", SYMLINK+="asm-data7", OWNER="grid", GROUP="asmadmin", MODE="0660"

手动加载分区,进行测试
[root@node1 rules.d]# /sbin/partprobe /dev/sdb1
[root@node1 rules.d]# /sbin/udevadm test /block/sdb/sdb1

3.2.3 执行绑定命令,让配置生效

[root@node1 rules.d]# /sbin/udevadm trigger --type=devices --action=change 或者
[root@node1 rules.d]# /sbin/udevadm control --reload-rules

【udevadm 命令】
[root@node1 sdb1]# udevadm
Usage: udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]
  info         query sysfs or the udev database
  trigger      request events from the kernel
  settle       wait for the event queue to finish
  control      control the udev daemon
  monitor      listen to kernel and udev events
  hwdb         maintain the hardware database index
  test         test an event run
  test-builtin test a built-in command

查询绑定结果
[root@node1 rules.d]# ls -l /dev/asm*

4.安装Grid

4.1 解压grid安装包,执行安装

解压缩安装包,以可视化界面登录,执行runInstall开始安装
[grid@node1 database]# su - grid
[grid@node1 database]# export DISPLAY=:0.0
[grid@node1 database]# xshot +
[grid@node1 database]# ./runInstall

4.2 安装选项1:Install and Configure Grid Infrastructure for a Cluster
4.3 安装类型:Advanced Installation 高级安装
5.安装Oracle数据库实例
4.4 GPNP信息:
Cluster Name:node1(根据客户命名规则设置)
SCAN Name:node-scan(与/etc/hosts内的SCAN名称对应)
SCAN Port:1521(oracle默认监听端口)
4.5 确定集群网络端口
4.6 存储选项:Automatic Storage Manager(ASM)
4.7 创建ASM磁盘组
更改discovery path为:/dev/asm-*(udev设备路径)
Redundancy设置为External(由存储系统提供冗余策略)
(?)OCR、VOTE、DATA、ARCH
4.8 设置ASM统一密码:oracle
4.9 故障隔离服务:根据需要选择是否使用(选择否)
4.10 选择用户和组(默认)
4.11 选择安装目录
Oracle Base(grid用户下ORACLE_BASE环境变量)
SoftwareLocation(grid用户下ORACLE_HOME环境变量)

4.12 选择Inventory目录:
4.13 执行安装前检查、安装,执行集群配置的root脚本
4.14 完成Grid安装
5.安装Oracle数据库

6.创建ASM磁盘组、创建数据库实例

ASM使用一个名叫“+ASM的数据库实例来管理ASM磁盘,因此在配置ASM磁盘之前,需要先启动ASM实例。另外还需要注意,ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。

6.1 ASMCA创建磁盘组,添加磁盘

【ASMCMD工具】
ASMCMD工具提供了类似于操作系统的常用命令,如ls , du ,find,cd ,rm ,mkdir等等。借助这些工具可以更轻松的完成ASM实例的相关管理工作。
使用 ASMCMD 工具管理ASM目录及文件
https://blog.csdn.net/leshami/article/details/6134163

6.2 DBCA安装数据库实例

ASM实例的创建和删除可以用DBCA工具来操作。在DBCA的第一个界面选择配置自动存储管理就可以进入ASM配置的界面。

ASM擦除磁盘头命令
dd if=/dev/zero of=/dev/sdb1 bs=1M count=512

7.导入数据库

expdp ehr/ehr@172.16.10.4:1521/orcl grants=y directory=BACKDIR dumpfile=ehr_2019_07_19.dmp logfile=ehr_2019_07_19.log tables=EHR_Arch_Basicinfo

传到Windows
pscp -pw 123456 root@172.16.10.4:/oracle/backuptest/ehr_2019_*.tar.gz E:/lyd

impdp ehr/ehr@orcl directory=BACKDIR file=’/oracle/backup/ehr/ehr_2019_07_19.dmp’ ignore=y full=y

参考资料

Oracle RAC架构和原理
http://blog.sina.com.cn/s/blog_ebdf94a30102xijr.html
Oracle RAC原理
https://blog.csdn.net/qq_34556414/article/details/79001267
RAC简介
https://wenku.baidu.com/view/bae4471ab7360b4c2e3f6412.html
Oracle 11gR2用gpnp profile存放ASM的spfile路径
https://www.cnblogs.com/hllnj2008/p/5190145.html
Oracle11gR2集群守护进程gpnp介绍
https://blog.csdn.net/a743044559/article/details/78234750
oracle Grid 是如何找到voteidks和asm spfile.
https://blog.csdn.net/weixin_34038652/article/details/89592766
ORACLE 11GR2 RAC的网络规划解析
https://www.cnblogs.com/zwl715/p/3621142.html
虚拟IP使用
https://blog.csdn.net/nawenqiang/article/details/81741235

udev详解
https://blog.csdn.net/lqrensn/article/details/8097288
linux 7中使用udev
http://www.xifenfei.com/2016/08/linux-7-udev.html
RedHat 7.3+ORACLE 12c RAC 使用udev绑定磁盘
https://www.cnblogs.com/zx3212/p/6757394.html
redhat linux 7 创建udev
https://blog.csdn.net/xqzhang8/article/details/72956535
Oracle自动存储管理 (ASM) 官网
https://www.oracle.com/technetwork/cn/database/database-technologies/cloud-storage/index.html
深入了解Oracle ASM(一):基础概念
http://blog.itpub.net/31444259/viewspace-2151584/
使用 ASMCMD 工具管理ASM目录及文件
https://blog.csdn.net/leshami/article/details/6134163

Linux RPM Resource
http://rpmfind.net/linux/rpm2html/search.php?query=oracleasm&submit=Search+…&system=&arch=

加速Oracle RAC性能 软件定义存储的数据库云化实践
https://cloud.tencent.com/developer/article/1054027

一张图
在这里插入图片描述

服务命令

crs_stat -t   #使用crs_stat 命令查询RAC节点的服务状态是否正常
srvctl status database -d orcl  #查看DB启动情况
srvctl stop database -d orcl -o immediate  #启动和停止DB
srvctl start database -d orcl

[grid@node1 ~]$ crsctl check css 
[grid@node1 ~]$ srvctl status asm -a

ps -elf|grep d.bin/has/crs/css/evm
crsctl check crs X
crsctl query css votedisk

crsctl

[grid@node1 bin]$ crs_stat -t
[grid@node1 bin]$ crsctl check css

crsctl start crs
crsctl start crs -excl -nocrs  1.启动CRS到独占模式。
crsctl start cluster -all
crsctl start res ora.crsd -init

crsctl stop has -f
crsctl delete resource ora.node2.vip -f
crsctl delete node -n node2 #在任一保留的节点(node1)上删除node2节点

[root@node1 bin]# ./srvctl status
[root@node1 bin]# ./srvctl status listener

crsctl disable/enable crs 禁用/启用crs的自启动
[root@node1 ~]# more /etc/oracle/scls_scr/node1/root/ohasdstr  #enable
[root@node1 ~]# more /etc/oracle/scls_scr/node1/root/crsstart    #enable

srvctl

#查看数据库信息
#SQL> select status from v$instance;
srvctl config database -d orcl -a

[grid@node1 ~]$ srvctl status diskgroup -g DATA2
[grid@node1 ~]$ srvctl start diskgroup -g DATA2

srvctl status asm -a
srvctl start asm
srvctl start asm -n oradb2
srvctl stop asm -n oradb2
srvctl add asm -l LISTENER -d data

srvctl stop nodeapps -n node2 -f 

[grid@node1 bin]$ srvctl status listener
[grid@node1 bin]$ srvctl add listener #监听的节点

srvctl remove vip -i ora.node2.vip -f #删除node2节点的VIP
srvctl disable listener -l listener -n node2 #停止节点上的监听
#srvctl status vip -n node1 vip各个节点的状态

3、实例和DB开启和关闭
–使用srv停止和启动实例
srvctl stop instance -d orcl -i orcl1 -o immediate
srvctl start instance -d orcl -i orcl1
–启动和停止DB
srvctl status database -d orcl
srvctl stop database -d orcl -o immediate
srvctl start database -d orcl

crsctl 和 srvctl 命令的区别理解
https://www.cnblogs.com/andy6/p/5759309.html

停机顺序为,先停监听->实例->服务->Cluster软件
http://blog.itpub.net/31562969/viewspace-2286281/
Oracle 11g RAC Votedisk、OCR以及各种资源的管理
https://www.linuxidc.com/Linux/2013-07/88038.htm
srvctl常用命令
https://blog.csdn.net/juliaputao/article/details/8683185
RAC维护手记08-ASM磁盘组信息查看常用命令
https://blog.csdn.net/weixin_34259159/article/details/89827600

2.使用srvctl (service control)命令依次关闭集群服务
关闭顺序:关闭数据库(实例)-->关闭ASM实例-->关闭节点服务
1)关闭数据库
2)关闭各节点的ASM实例
3)关闭各节点的服务包括:listener、gsd、ons、vip
3.使用srvctl (service control)命令依次关闭集群服务
启动顺序:启动节点服务-->启动ASM实例-->启动数据库实例
1)启动各节点的服务
2)启动ASM实例
3)启动数据库及实例

https://blog.csdn.net/ddlys1412/article/details/79210384
https://www.2cto.com/database/201802/716683.html
https://blog.csdn.net/zhang123456456/article/details/53875085

在保留节点使用oracle用户更新集群列表-----node1集群在node2上执行相关语句。没用过
$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME “CLUSTER_NODES={node1}” CRS=true
$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$oracle_home "CLUSTER_NODES={node1}" -local

一键删除Grid

停掉相关进程
/oracle/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -verbose
crsctl stop resource -all
ps -ef |grep d.bin

rm -rf /home/oracle/base
rm -rf /home/oracle/product
rm -rf /home/oracle/oradiag_oracle
rm -rf /home/grid/app
rm -rf /home/grid/oradiag_grid/*
rm -rf /home/grid/.oracle
rm -rf /usr/local/bin/dbhome
rm -rf /usr/local/bin/oraenv
rm -rf /usr/local/bin/coraenv
rm -rf /etc/oracle/*
rm -rf /etc/oraInst.loc
rm -rf /etc/oratab
rm -rf /opt/oracle
rm -rf /opt/ORCLfmap

rm -rf /tmp/*oracle*
rm -rf /tmp/Oracle*
rm -rf /tmp/.oracle
rm -rf /tmp/CVU*
rm -rf /tmp/OraInst*

rm -rf /oracle/app/oracle/*
rm -rf /oracle/app/11.2.0/grid/*
rm -rf /oracle/app/grid/*
rm -rf /oracle/app/oraInventory/*

chown grid:oinstall /oracle
chown -R grid:oinstall /oracle/app
chown -R oracle:oinstall /oracle/app/oracle
chmod -R 775 /oracle/app

export DISPLAY=:0.0
xhost +
cd /oracle/grid
ls

# 擦除ASM磁盘头信息
dd if=/dev/zero of=/dev/sdb1 bs=1M count=512 
dd if=/dev/zero of=/dev/sdb2 bs=1M count=512 
dd if=/dev/zero of=/dev/sdb3 bs=1M count=512 
dd if=/dev/zero of=/dev/sdb5 bs=1M count=512 
dd if=/dev/zero of=/dev/sdb6 bs=1M count=512 
dd if=/dev/zero of=/dev/sdb7 bs=1M count=512 
  
# 删除oracl数据库database
rm -rf /oracle/app/oracle/oradata/oracl
rm -rf /oracle/app/oracle/product/11.2.0/dbhome_1/dbs/orapworacl1
rm -rf /oracle/app/oracle/admin/oracl

其他笔记


free -h
source /home/grid/.bash_profile
rpm --all --query --queryformat "%{NAME}-%{VERSION}-%{RELEASE}-(%{ARCH})\n" | grep glibc
rpm -ivh /oracle/grid/rpm/cvuqdisk-1.0.7-1.rpm

/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload

------------------------------------------------------------------------------------------------
# /oracle/grid/runInstaller
# ./runInstaller -J-DTRACING.ENABLED=true -J-DTRACING.LEVEL=2

/oracle/app/oraInventory/orainstRoot.sh

/oracle/app/11.2.0/grid/root.sh  ------------------------


 #尝试更改权限
chown root:oinstall /var/tmp/.oracle/npohasd
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1

取消配置失败的集群件堆栈配置(停止节点上的集群crs)
# /oracle/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose
/oracle/app/11.2.0/grid/crs/install/rootcrs.pl -deconfig -force -verbose

------------------------------------------------------------------------------------------------
日志很重要

cat /oracle/app/oraInventory/logs/installActions2019-07-14_12-25-55PM.log
cat /tmp/OraInstall2019-07-18_05-34-47PM/installActions2019-07-18_05-34-47PM.log
node1下面的日志
cat /oracle/app/11.2.0/grid/cfgtoollogs/crsconfig/rootcrs_node1.log

cat /oracle/app/11.2.0/grid/log/node1/alertnode1.log

tail -f /oracle/app/11.2.0/grid/log/node1/client/crsctl.log  #不用


11.2.0/grid/log

cd /oracle/app/11.2.0/grid/log/node1/cssd/ocssd.log   #无
The OCR location in an ASM disk group is inaccessible. Details in 

--------------------------------------------------------------------------------------------------------------------
【udev】
[root@node1 sdb1]# udevadm
Usage: udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]
  info         query sysfs or the udev database
  trigger      request events from the kernel
  settle       wait for the event queue to finish
  control      control the udev daemon
  monitor      listen to kernel and udev events
  hwdb         maintain the hardware database index
  test         test an event run
  test-builtin test a built-in command


/sbin/udevadm control --reload-rules
/sbin/udevadm control --reload
/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm info --query=all --path=/block/sdb/sdb1
/bin/rm /dev/asm-data5 #删除


udevadm命令详解
https://www.cnblogs.com/carriezhangyan/p/9564900.html
https://blog.csdn.net/gaobudong1234/article/details/78491231


/usr/lib/udev/scsi_id -g -u -d /dev/sdb #磁盘UUID
https://blog.csdn.net/sunraty/article/details/18018045

oracle升级之使用udev固化存储供ASM使用
https://jingyan.baidu.com/article/d621e8da2f1a642865913fba.html

--------------------------------------------------------------------------------------------------------------------
【ASM磁盘组】
ASM磁盘组
https://blog.csdn.net/yusiyuuestc/article/details/17163643

ASM使用一个名叫“+ASM的数据库实例来管理ASM磁盘,因此在配置ASM磁盘之前,需要先启动ASM实例。另外还需要注意,ASM 实例必须要先于数据库实例启动,和数据库实例同步运行,迟于数据库实例关闭。
ASM实例的创建和删除可以用DBCA工具来操作。在DBCA的第一个界面选择配置自动存储管理就可以进入ASM配置的界面。 

ASM擦除磁盘头
dd if=/dev/zero of=/dev/sdb1 bs=1M count=512

ASM磁盘日志
cd /oracle/app/grid/diag/asm/user_root/host_*/trace/*.log 
cd /oracle/app/grid/cfgtoollogs/asmca/

磁盘检查命令 asmcmd ->lsdg

1. 检查磁盘是否存在,权限是否正确
# ls -lrt /dev/sdb* 

$ ./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose
$ ./runcluvfy.sh comp ssa -n all -verbose

【lsblk】rpm -qa |grep asm
Oracle自带的一些ASM维护工具 (kfod/kfed/amdu) 

使用kfod来查看扫描对应的磁盘
kfod asm_diskstring='/dev/asm-*' disks=all

https://www.linuxidc.com/Linux/2015-02/113610.htm

使用dd命令从开始偏移量处读取asm spfile文件内容
 dd if=/dev/sdb1 of=/home/grid/asmspfile_copy2.ora skip=59 bs=1M count=1
 
 

11gR2中,OCR/VOTEDISK存放在ASM磁盘组,这也就意味着在GI能够启动的前提是能够顺利启动ASM实例并且能够将相应磁盘组MOUNT起来;而ASM的spfile却放在ASM磁盘组里,这也同样意味着要先启动ASM实例并且能读到参数文件。

Oracle 11gR2用gpnp profile存放ASM的spfile路径
https://www.cnblogs.com/hllnj2008/p/5190145.html
Oracle11gR2集群守护进程gpnp介绍
https://blog.csdn.net/a743044559/article/details/78234750
集群的另外一个节点被发现, gpnpd 确认是否有必要在两个节点之间同步gpnp profile



--------------------------------------------------------------------------------------------------------------------
【oracleasm】旧的
[root@node1 ~]# oracleasm scandisks 
[root@node1 ~]# oracleasm configure -i
[root@node1 ~]# oracleasm init # ASMlib加载到内核
[root@node1 ~]# oracleasm listdisks # 从系统层面上查看ASM磁盘组
[root@node1 ~]# oracleasm update-driver  # DATA  FLA  OCR  VOTE

3.添加ASM磁盘(root用户)
[root@hxl ~]# oracleasm createdisk VOL3 /dev/sdd1
Writing disk header: done
Instantiating disk: done
[root@hxl ~]# oracleasm createdisk VOL4 /dev/sde1
Writing disk header: done
Instantiating disk: done
[root@hxl ~]# oracleasm listdisks;
VOL1  VOL2

【错误】
[root@node1 grid]# oracleasm init
Loading module "oracleasm": failed
Unable to load module "oracleasm"
Mounting ASMlib driver filesystem: failed
Unable to mount ASMlib driver filesystem




--------------------------------------------------------------------------------------------------------------------
----------------------------------------------报错日志--------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------

CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: 对设备不适当的 ioctl 操作

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

--------------------------------------------------------------------------------------------------------------------

[root@node1 .oracle]# /oracle/app/oraInventory/orainstRoot.sh
shell-init: 获取当前目录时出错: getcwd: 无法访问父目录: 没有那个文件或目录
Changing permissions of /oracle/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /oracle/app/oraInventory to oinstall.
The execution of the script is complete.
或者
[root@node1 .oracle]# /oracle/app/oraInventory/orainstRoot.sh
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Changing permissions of /oracle/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /oracle/app/oraInventory to oinstall.
The execution of the script is complete.

处理方法  source /home/grid/.bash_profile 

------------------------------------------------------------------------------------------------
Configuration of ASM failed, see logs for details 
Did not succssfully configure and start ASM
CRS-2500: Cannot stop resource 'ora.crsd' as it is not running


处理方法1 不合理
[grid@node2 dev]$ df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   50G   14G   37G   28% /
devtmpfs               1.9G     0  1.9G    0% /dev
tmpfs                  1.9G  152K  1.9G    1% /dev/shm
/dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。(shm == shared memory)
https://blog.csdn.net/weixin_38239856/article/details/80731729

------------------------------------------------------------------------------------------------


SEVERE: oracle.sysman.oii.oiip.oiipg.OiipgRemoteOpsException: Error in checking status of file '/tmp/OraInstall2019-07-14_10-08-55PM' on node 'node2' . []
	at oracle.sysman.oii.oiip.oiipg.OiipgClusterOps.throwRemoteOpsException(OiipgClusterOps.java:2491)



------------------------------------------------------------------------------------------------

错误 ADVM/ACFS is not supported on redhat-release-server-7.0-1.el7.x86_64
ADVM/ACFS is not supported on epel-release-7-11.noarch
ACFS-9201: Not Supported
Linux node1 3.10.0-123.el7.x86_64.debug #1 SMP Mon May 5 11:24:18 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

不处理
cd /oracle/app/11.2.0/grid/lib/
[root@rac01 lib]# cp -p osds_acfslib.pm osds_acfslib.pm.bak
添加  ($release =~ /^centos-release/) ||        # CentOS hack 
[root@rac01 lib]# vi osds_acfslib.pm

  # Testing for "oraclelinux_release", etc prevents us from dropping
  # into the code below from other RH based distros like CentOS, for example.
  if ((defined($release)) &&                     # Redhat or OEL if defined
      (($release =~ /^redhat-release/) ||        # straight RH
       ($release =~ /^enterprise-release/) ||    # Oracle Enterprise Linux
        ($release =~ /^centos-release/) ||        # CentOS hack 
       ($release =~ /^oraclelinux-release/)))    # Oracle Linux

[root@rac01 lib]#  /u01/app/11.2.0/grid/bin/acfsload start -s
ACFS-9129: ADVM/ACFS not installed
[root@rac01 lib]# /u01/app/11.2.0/grid/bin/acfsroot install
[root@rac01 lib]# /u01/app/11.2.0/grid/bin/acfsload start -s
原文:https://blog.csdn.net/weiwangsisoftstone/article/details/78813518 

------------------------------------------------------------------------------------------------------
 
第一次
[grid@node1 ~]$ srvctl stop asm
PRCR-1065 : Failed to stop resource ora.asm
CRS-2529: Unable to act on 'ora.asm' because that would require stopping or relocating 'ora.OCR.dg', but the force option was not specified

[grid@node1 ~]$ srvctl stop diskgroup -g OCR

第二次
PRCR-1065 : Failed to stop resource ora.asm
CRS-2673: Attempting to stop 'ora.asm' on 'node1'
ORA-15097: cannot SHUTDOWN ASM instance with connected client
CRS-2675: Stop of 'ora.asm' on 'node1' failed

解决方案:停止磁盘组 https://www.bbsmax.com/A/D854KBe3JE/
从11.2 Grid Infrastructure开始, ASM diskgroups也注册为CRS资源。而diskgroup资源是依赖于ASM的,所以不能首先要停止'ora.ASM.dg'这个服务,或者直接使用-f选项强制停止ASM。
asm不能单独关闭了,因为有 ocr_vote 在

[grid@node1 ~]$ crsctl stat res -t
[grid@node1 ~]# crsctl status res -t

[grid@node1 ~]$ srvctl stop diskgroup -g asm

srvctl stop asm -n node2 -i +ASM2

ASMCA detected pre 11gR2 ASM, but it does not have a local instance configured on this node. If you want to upgrade ASM to 11gR2, you need to run ASMCA on a node where pre 11gR2 ASM instance is configured.


添加额外ASM磁盘
在节点1中,使用grid用户运行asmca:

quorum字段,意味着盘组仅存放vote disk 的信息,不存放任何的用户数据

--------------------------------------------------------------------------------------------------------------------

11G RAC安装时,GI已经安装完成,各服务状态正常,运行ASMCA时出错(ASM实例状态都是正常的)。

提示是:ASMCA detected pre 11gR2 ASM, but it does not have a local instance configure on this node;具体信息看下图。

解决办法是:重新注册资源,重启CRS,重启后查看各服务状态正常
原文:https://blog.csdn.net/haibusuanyun/article/details/39119955 


Configuration of ASM failed, see logs for details 
Did not succssfully configure and start ASM
CRS-2500: Cannot stop resource 'ora.crsd' as it is not running

处理方法(不合理)
[grid@node2 dev]$ df -h
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/rhel-root   50G   14G   37G   28% /
devtmpfs               1.9G     0  1.9G    0% /dev
tmpfs                  1.9G  152K  1.9G    1% /dev/shm
/dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。(shm == shared memory)
https://blog.csdn.net/weixin_38239856/article/details/80731729

------------------------------------------------------------------------------------------------

SEVERE: oracle.sysman.oii.oiip.oiipg.OiipgRemoteOpsException: Error in checking status of file '/tmp/OraInstall2019-07-14_10-08-55PM' on node 'node2' . []
	at oracle.sysman.oii.oiip.oiipg.OiipgClusterOps.throwRemoteOpsException(OiipgClusterOps.java:2491)

------------------------------------------------------------------------------------------------

Failed to rmtcopy "/tmp/file9jJQYY" to "/oracle/app/11.2.0/grid/gpnp/manifest.txt" for nodes {node1,node2}, rc=256
Error while copying directory /oracle/app/11.2.0/grid with exclude file list '/tmp/OraInstall2019-07-16_12-33-50PM/installExcludeFile.lst' to nodes 'node1'. [PRKC-PRCF-2015 : One or more commands were not executed successfully on one or more nodes : <null>]

处理方式:如果节点1给节点2同步安装失败,安装65%文件复制失败,办法是从node2安装同步给node1,发送成功。

安装RAC 时找不到节点
https://blog.csdn.net/tan88881111/article/details/80756936

------------------------------------------------------------------------------------------------

/oracle/app/11.2.0/grid/bin/asmca -silent -diskGroupName asmadmin -diskList /dev/asm-data1,/dev/asm-data2,/dev/asm-data3,/dev/asm-data5,/dev/asm-data6,/dev/asm-data7 -redundancy NORMAL -diskString '/dev/asm-*' -configureLocalASM

/oracle/app/11.2.0/grid/bin/asmca -silent -diskGroupName asmadmin -diskList /dev/asm-data1,/dev/asm-data2,/dev/asm-data3,/dev/asm-data5,/dev/asm-data6,/dev/asm-data7 -redundancy NORMAL -diskString '/dev/asm-*' -configureLocalASM

如果 CSS 在独占模式下运行, 则 ASMCA 无法进行检查: 
PRKH-1010 : 无法与 CRS 服务通信。

------------------------------------------------------------------------------------------------

node1:
    PRCF-2023 : The following contents are not transferred as they are non-readable. 
Directories:
   - 
Files:
   1) /oracle/app/11.2.0/grid/log/node2/client/ocrconfig_12986.log
   2) /oracle/app/11.2.0/grid/cdata/node2.olr
    
----------------------------------------------------------------------------------

Refer to '/oracle/app/oraInventory/logs/installActions2019-07-16_12-33-50PM.log' for details. You may fix the errors on the required remote nodes. Refer to the install guide for error recovery. Click 'Yes' if you want to proceed. Click 'No' to exit the install. Do you want to continue?

笔记本node2安装报错信息弹出,不处理直接yes

-----------------------------------------------------------------------------------------

[INS-20802] Oracle Net Configuration Assistant failed.
Cause - The plug-in failed in its perform method  Action - Refer to the logs or contact Oracle Support Services.  Log File Location
/oracle/app/oraInventory/logs/installActions2019-07-16_07-19-05PM.log

www.linuxidc.com
------------------------------------------------------------------------------------------------------------------

运行root脚本报错

ohasd failed to start
Failed to start the Clusterware. Last 20 lines of the alert log follow:
2015-05-23 23:37:45.460:
[client(13782)]CRS-2101:The OLR was formatted using version 3.
网上解释:因为RHEL 7使用systemd而不是initd运行进程和重启进程,而root.sh通过传统的initd运行ohasd进程。

取消root.sh重新运行
/u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force –verbose
--------------------------------------------------------------------------------------------------------------------------------------------
sqlplus登录报错
[grid@node1 ~]$ sqlplus / as sysasm
ERROR:
ORA-12705: Cannot access NLS data files or invalid environment specified

正确的应该是
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
# SIMPLIFIED CHINESE_CHINA.ZHS16GBK
更正之后,就能连接ASM实例了


dbca创建DATABASE提示ORA-01031:insufficient privileges

dbca创建DATABASE看不到磁盘组
https://jingyan.baidu.com/article/455a99509facd9a167277850.html

 安装和配置GRID、DBCA时会自动在两个节点上创建ASM、DB实例,这时在哪个节点上安装就把该节点当初第一个节点,该节点的ASM实例名称默认就是+ASM1、DBNAME1。所以安装和配置GRID、DBCA时要慎重选择在哪个节点上进行,顺序很重要。

例如我们安装grid的时候如果有这样的情况,节点1是testdb01,节点2是testdb02,在testdb01的bash_profile上配置grid的ORACLE_SID=+ASM1,oracle的ORACLE_SID=TESTDB1,在testdb02的bash_profile上配置grid的ORACLE_SID=+ASM2,oracle的ORACLE_SID=TESTDB2,但是又在testdb02上进行了GRID的安装和配置和DBCA,则和配置的bash_profile就矛盾,安装完成后重启服务器可能会出现ASM无法启动,因为bash_profile的ASM、DB实例名称和VOTE_OCR中的ASM不一致。实际情况是节点1 testdb01上是+ASM2、TESTDB2;节点2  testdb02上是+ASM1、TESTDB1。

----------------------------------------------------------------------------------------------
安装Oracle报错信息

Error in invoking target 'install' of makefile '/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/oracle/app/oraInventory/logs/installActions2019-07-18_06-58-50PM.log' for details.

处理方式
https://www.linuxidc.com/Linux/2015-01/112247.htm

该软件包包含一个静态链接库:/usr/lib64/libc.a
修改/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk,将
ctxhx: $(CTXHXOBJ)
      $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
修改为:
ctxhx: $(CTXHXOBJ)
      -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
点击Retry继续安装。

接着又提示
Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk.' ,

解决方法:在makefile中添加链接libnnz11库的参数
修改/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk,将
$(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11
点击Retry继续安装。

----------------------------------------------------------------------------------------------

linux如何在日志中查找关键字、前几行、结尾几行
https://www.cnblogs.com/hcy-fly/p/7880336.html


  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle RAC(Real Application Clusters)是Oracle数据库的高可用性和可扩展性解决方案。在Oracle RAC中,多个服务器(节点)通过网络共享同一块磁盘阵列,形成一个集群,这些节点可以同时访问同一份数据,提供高可用性和可扩展性。 以下是Oracle RAC安装部署的步骤: 1. 准备硬件和网络环境:Oracle RAC需要至少两台服务器,并且这些服务器需要连接到同一个网络和存储设备。在安装之前,需要确保所有服务器都符合Oracle RAC的硬件和网络要求。 2. 安装Oracle Grid Infrastructure:Oracle Grid Infrastructure是Oracle RAC的组成部分,它提供了集群管理、节点间通信、存储管理等功能。在安装Oracle Grid Infrastructure之前,需要确保所有节点上都已经安装Oracle Linux或Red Hat Enterprise Linux,并且已经配置好了网络和存储设备。在安装过程中,需要指定Oracle Grid Infrastructure的安装目录和网络配置等参数。 3. 创建Oracle RAC数据库:在安装Oracle Grid Infrastructure之后,需要使用Oracle Database Configuration Assistant(DBCA)创建Oracle RAC数据库。在创建过程中,需要指定数据库名称、实例数、节点数、存储设备等参数。 4. 安装和配置Oracle RAC客户端:在完成Oracle RAC数据库的创建之后,需要在客户端安装和配置Oracle RAC客户端,以便连接到集群中的数据库。在安装过程中,需要指定Oracle RAC客户端的安装目录、网络配置等参数。 5. 测试Oracle RAC集群:在完成所有安装和配置之后,需要进行Oracle RAC集群的测试,以确保集群的高可用性和可扩展性。在测试过程中,可以模拟节点故障、网络故障等情况,测试集群的自动恢复和负载均衡功能。 以上是Oracle RAC安装部署的基本步骤,具体操作可以参考Oracle官方文档或相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值