在64位RHEL4 U6上安装Oracle 10g RAC
概述 5
第一部分 Oracle10g RAC数据库简介 6
oracle10g RAC结构 6
硬件 6
共享磁盘存储 7
专用网络 7
公共网络 7
Oracle 集群就绪服务(CRS) 7
Oracle RAC 软件 8
Oracle 自动存储管理 (ASM) 8
第二部分 安装Redhat AS 4.0 (Update6) 8
第三部分 针对Oracle配置redhat 11
3.1 验证系统要求 11
3.2 内核参数 12
3.3 添加oracle用户和组 12
3.4 网络设置 13
3.5 为用户等效性设置SSH 14
第四部分 ASM配置共享磁盘 16
4.1安装ASM软件 17
4.2用ASM Library Driver配置ASM的共享磁盘 18
4.2.1磁盘分区(fdisk) 18
4.2.2创建ASM磁盘 20
第五部分 安装配置Oracle RAC 20
5.1 配置环境变量 20
5.1.1 编辑.bashrc设置 ORACLE_BASE 和 ORACLE_HOME 等环境变量 20
5.1.2创建CRS安装路径 21
5.1.3创建oracle安装路径 22
5.2安装和卸载CRS 23
5.2.1安装CRS 23
5.2.2卸载CRS 24
5.3安装 Oracle 数据库软件RAC 26
5.3.1 图形界面配置 26
5.4 卸载 Oracle 数据库软件RAC 27
第六部分 创建和删除数据库 27
6.1 创建数据库 27
6.2 删除数据库 29
6.3 验证数据库安装正确 29
6.4 数据库troubleshooting 29
第七部分 附录 31
7.1 CRS进程介绍 31
概述
本手册在以下环境中试验安装成功:
1、HP DL380 G6服务器安装esx4.0(AMD 64位 4网卡)配置虚拟机2台,硬盘已做好raid 0
2、虚拟共享磁盘
3、服务器安装 redhat as4 update 6,内核版本2.6.9-67.ELsmp
本次安装需要的软件:
1、10201_database_linux_x86_64.cpio.gz
2、10201_clusterware_linux_x86_64.cpio.gz
3、oracleasm-support-2.0.3-1.x86_64.rpm
4、oracleasmlib-2.0.2-1.x86_64.rpm
5、oracleasm-2.6.9-22.ELsmp-2.0.3-1.x86_64.rpm
6、binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
下载地址:
1、2 http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linx8664soft.html
3、4、5 http://www.oracle.com/technology/software/tech/linux/asmlib/rhel4.html
6、 http://oss.oracle.com/projects/compat-oracle/files/RedHat/
本手册的根本目标是安装并实现Asm+RAC,安装过程中以安装实际情况为准,并参考网上很多实施方案、OTN网站等大量文档,力争把安装中遇到的问题及解决方法完整的表达出来。
本文档由 Oracle10g RAC数据库简介、安装Redhat as4.0、针对Oracle配置redhat、ASM配置共享磁盘、安装配置Oracle RAC、创建和删除数据库六部分组成。
!以下部分如果没有特别说明,则要求在每个节点分别执行
第一部分 Oracle10g RAC数据库简介
oracle10g RAC结构
下图显示了 Oracle RAC 10g 配置的主要组件。 集群中的节点通常是单独的服务器(主机), 本文中,两个节点即是两台s4800服务器。根据集群规模的大小,可以扩展到更多节点。
硬件
在硬件级别上,RAC 集群中的各节点共享三种功能:
1.对共享磁盘存储的访问
2.与专用网络的连接
3.对公共网络的访问。
共享磁盘存储
Oracle RAC 依赖于一个共享磁盘体系结构。 数据库文件、联机重做日志和数据库的控制文件必须都能为集群中的每个节点所访问。 共享磁盘还存储 Oracle Cluster Registry 和 Voting Disk(稍后讨论)。 配置共享存储有多种方法,包括直接连接磁盘(通常是使用铜缆或光纤的 SCSI)、存储区域网 (SAN) 和网络连接存储 (NAS)。
专用网络
每 个集群节点通过专用高速网络连接到所有其他节点,这种专用高速网络也称为集群互联或高速互联 (HSI)。 Oracle 的 Cache Fusion 技术使用这种网络将每个主机的物理内存 (RAM) 有效地组合成一个高速缓存。 Oracle Cache Fusion 通过在专用网络上传输某个 Oracle 实例高速缓存中存储的数据允许其他任何实例访问这些数据。 它还通过在集群节点中传输锁定和其他同步信息保持数据完整性和高速缓存一致性。
专用网络通常是用千兆以太网构建的,但是对于高容量的环境,很多厂商提供了专门为 Oracle RAC 设计的低延迟、高带宽的专有解决方案。 Linux 还提供一种将多个物理 NIC 绑定为一个虚拟 NIC 的方法(此处不涉及)来增加带宽和提高可用性。
公共网络
为维持高可用性,为每个集群节点分配了一个虚拟 IP 地址 (VIP)。 如果主机发生故障,则可以将故障节点的 IP 地址重新分配给一个可用节点,从而允许应用程序通过相同的 IP 地址继续访问数据库。
Oracle 集群就绪服务(CRS)
Oracle RAC 10g 引进了 Oracle 集群就绪服务 (CRS) — 一组用于集群环境的与平台无关的系统服务。 在 RAC 和 Oracle 并行服务器先前版本中,Oracle 依靠厂商提供的集群管理软件来提供这些服务。 虽然 CRS 与厂商供应的集群件协同工作,但 Oracle RAC 10g 所需组件只是 CRS。 实际上,必须在安装 RAC 之前安装 CRS。
Oracle RAC 软件
Oracle RAC 10g 软件是 RAC 数据库的核心,每个集群节点上都必须安装。 幸运的是,Oracle Universal Installer (OUI) 可以完成在每个节点上安装 RAC 软件的大部分工作。 您只需在一个节点上安装 RAC — OUI 会完成其余的工作。
Oracle 自动存储管理 (ASM)
ASM 是 Oracle 数据库 10g 中的一个新特性,它以一种与平台无关的方式提供文件系统服务、逻辑容量管理器和软件 RAID。Oracle ASM 可以条带化和镜像磁盘,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。它还支持直接和异步的 I/O,并使用 Oracle9i 中引入的 Oracle 数据管理器 API(简化的 I/O 系统调用接口)。
Oracle ASM 不是通用的文件系统,只能用于 Oracle 数据文件、重做日志、控制文件和 RMAN 快速恢复区。ASM 中的文件既可以由数据库自动创建和命名(使用 Oracle 管理文件特性),也可以由 DBA 手动创建和命名。由于操作系统无法访问 ASM 中存储的文件,因此对使用 ASM 文件的数据库执行备份和恢复操作的唯一途径就是使用恢复管理器 (RMAN)。
ASM 作为单独的 Oracle 实例实施,只有它在运行时其他数据库才能访问它。ASM 需要的内存不多: 对大部分系统来说只需 64MB。 在 Oracle RAC 环境中,ASM 实例必须运行在每个集群节点上。
第二部分 安装Redhat AS 4.0 (Update6)
本文档实例安装在HP DL380 G6服务器上,4网卡、基于ESX4.0虚拟服务器上配置2个虚拟节点,每个节点连接4个共享磁盘。
假设服务器全新安装redhat,并且服务器为oracle专用。
Oracle 10g 经认证可以在不需要更新的情况下运行 Redhat AS 4.0的基本版本。
1.使用第一张 CD 启动服务器。
您可能需要更改 BIOS 设置,以允许从 CD 启动。
2.启动屏幕上出现时在底部显示 boot:。
选择 Enter,从控制台上执行图形安装。(对于其他安装方法和选项,请参阅 Red Hat 安装指南。)
安装程序扫描硬件,短暂显示 Red Hat 闪屏,然后开始显示一系列屏幕提示。
3.选择语言
选择简体中文。
4.配置键盘
接受默认值。
5.欢迎屏幕
单击 下一步。
6.配置鼠标
接受默认值。
7.安装类型
选择 Custom。
8.设置磁盘分区
本文不介绍磁盘分区的详细方法,而是假设您熟悉磁盘分区方法。
(警告:对磁盘进行错误分区是删除硬盘上所有内容的最可靠、最快捷的方法之一。如果不确定如何分区,请先停下来,找人帮帮您,否则您将冒丢失数据的危险!)
本文使用默认分区方案(文件系统均为 ext3),须注意如下一点:
-交换分区 — 将此分区大小至少设置为系统 RAM 的两倍,但32位系统不要超过 2GB。如果需要大于 2GB 的交换空间,则创建多个交换分区。
9.配置启动加载程序
接受默认值。
10.配置网络
此时配置两个网卡,用规划好的两个地址,一个公网地址,一个私有地址。
使用静态 IP 地址配置数据库服务器。单击 Edit。
出现一个弹出窗口。取消选中 Configure using DHCP 复选框,并输入服务器的 IP 地址和网络掩码。确保选中 Activate on boot,然后单击 OK。
在 Hostname 框中,选择 manually 并输入主机名dbrac1……集群依次类推。
在 Miscellaneous Settings 框中,输入其他网络设置。
11.配置防火墙
本次将不配置防火墙。选择 No firewall。
12.其他语言支持
接受默认值。
13.选择时区
选择适合您区域的时间设置。将系统时钟设置为 UTC 对服务器而言通常是一个很好的做法。为此,单击 System clock uses UTC。
14.设置 Root 口令
输入 root 的口令,并再次输入以进行确认。
15.选择程序包组
最下面选择全选。
单击 下一步 继续操作。
16.准备安装
单击 下一步。
17.安装程序包
软件将被复制到硬盘并被安装。根据提示更改光盘,然后在安装完成时单击 下一步。
18.配置图形界面 (X)
接受默认值,除非安装程序无法识别您的视频卡。如果您的视频卡无法被识别,则将无法继续操作。
19.配置监视器
如果安装程序正确识别了您的监视器,则接受默认值。否则,从列表中选择一个兼容的监视器。
20.定制图形配置
接受默认值。
21.恭喜
从系统中取出安装介质,然后单击 下一步。
22.系统自动重新启动并显示一个新的欢迎屏幕。
单击下一步。
23.许可协议
阅读许可协议。如果同意其中的条款,则选择 Yes, I agree to the License Agreement 并单击下一步。
24.日期和时间
设置日期和时间。
如果要使用 NTP 服务器(推荐),则选择 Enable Network Time Protocol 并输入 NTP 服务器的名称。
25.用户帐户
此时不要为 oracle 创建帐户。本部分稍后将介绍如何创建 oracle 帐户。
26.Red Hat Network
如果要立即使用或激活 Red Hat Network 帐户,则接受默认值,单击 Next 并遵循 Red Hat 产品附带的产品激活说明。
如果不能连到网络,此时可不必激活,随便填上,检测网络不通,跳过即可
27.其他 CD
单击下一步。
28.完成设置
单击下一步。
29.出现一个图形登录屏幕。
30.恭喜!您的 Linux 软件现已安装完毕。
验证安装
验证内核版本:
# uname -r
2.6.9-67.ELsmp
验证已安装的程序包:
# rpm -q make gcc gcc-c++ libaio libaio-devel
make-3.80-6.EL4
gcc-3.4.6-9
gcc-c++-3.4.6-9
libaio-0.3.105-2
libaio-devel-0.3.105-2
注:应显示更高版本
第三部分 针对Oracle配置redhat
Linux 软件现已安装完毕,现在需要针对 Oracle 对其进行配置。
3.1 验证系统要求
要验证系统是否满足 Oracle 10g 数据库的最低要求,以 root 用户身份登录并运行以下命令。
要查看可用 RAM 和交换空间大小,运行以下命令:
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
例如:
# grep MemTotal /proc/meminfo
MemTotal:512236 kB
# grep SwapTotal /proc/meminfo
SwapTotal:1574360 kB
所需最小 RAM 为 512MB,而所需最小交换空间为 1GB。对于 RAM 小于或等于 2GB 的系统,交换空间应为 RAM 数量的两倍;对于 RAM 大于 2GB 的系统,交换空间应为 RAM 数量的一到两倍。
Oracle 10g 软件还需要 2.5GB 的可用磁盘空间,而数据库则另需 1.2GB 的可用磁盘空间。/tmp 目录至少需要 400MB 的可用空间。
3.2 内核参数
1.内核参数
在/etc/sysctl.conf中编辑:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
然后用执行/sbin/sysctl –p
2.hangcheck-timer设置
RAC节点间通过CSS来判断通信状态,因此需要设定定时器来触发判断。该定时器就是linux内核自带的hangcheck-timer。
具体操作:
在/etc/rc.local中加入(数值以具体情况而定,以下是默认值)
insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
表示,每隔30秒检查一下节点状态,如果180秒内仍没有反应,则重启该节点。这也就是说,检查的间隔最长为30+180秒,如果超过这个时间,则系统重启。
Tip:如果系统尚不稳定,可将数值设置的大一些,这样可以有充分的时间来修复系统,否则系统会进入循环重启状态。
3.3 添加oracle用户和组
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=1000(oracle) gid=1000(oinstall) groups=1000(oinstall),6(disk),1001(dba)
设置 oracle 帐户的口令:
# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd:all authentication tokens updated successfully.
设置oracle的shell限制:
在/etc/security/limits.conf文件中加入:oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
3.4 网络设置
注:此处使用的公共地址为规划好后的地址,不能为临时地址(除非试验安装)
RAC要求机群内的每个节点至少有两块网卡,一个设置为公用(公网),对外提供服务;一个设置为私用(专用),提供节点内的告诉传输。此外还需要为公用网卡配置一个虚拟地址,oracle需要借此为用户提供透明的高可用服务。具体介绍如下:
专用网络
每
个集群节点通过专用高速网络连接到所有其他节点,这种专用高速网络也称为集群互联或高速互联 (HSI)。 Oracle 的 Cache Fusion
技术使用这种网络将每个主机的物理内存 (RAM) 有效地组合成一个高速缓存。 Oracle Cache Fusion 通过在专用网络上传输某个
Oracle 实例高速缓存中存储的数据允许其他任何实例访问这些数据。
它还通过在集群节点中传输锁定和其他同步信息保持数据完整性和高速缓存一致性。
专用网络通常是用千兆以太网构建的,但是对于高容量的环境,很多厂商提供了专门为 Oracle RAC 设计的低延迟、高带宽的专有解决方案。 Linux 还提供一种将多个物理 NIC 绑定为一个虚拟 NIC 的方法(此处不涉及)来增加带宽和提高可用性。
公共网络
为维持高可用性,为每个集群节点分配了一个虚拟 IP 地址 (VIP)。 如果主机发生故障,则可以将故障节点的 IP 地址重新分配给一个可用节点,从而允许应用程序通过相同的 IP 地址继续访问数据库。
修改/etc/hosts加入下面内容,:
127.0.0.1 localhost.localdomain localhost
# public address
10.45.170.17 dbrac1
10.45.170.18 dbrac2
# private address
172.168.0.17 dbrac1-eth0
172.168.0.18 dbrac2-eth0
# virtual address
10.45.170.117 dbrac1-vip
10.45.170.118 dbrac2-vip
虚拟地址可以随便起一个(保证同一个网段),在安装RAC的时候,vipca会自动将虚拟地址绑定在公共网卡上的。
3.5 为用户等效性设置SSH
在
安装 Oracle RAC 10g 期间,OUI 需要把文件复制到集群中的其他主机上并在其上执行程序。 为了允许 OUI 完成此任务,必须配置
SSH 以启用用户等效性。 用 SSH 建立用户等效性就提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。
第一
步是生成 SSH 的公共密钥和专用密钥。 SSH 协议有两个版本;版本 1 使用 RSA,版本 2 使用
DSA,因此我们将创建这两种类型的密钥,以确保 SSH 能够使用任一版本。 ssh-keygen
程序将根据传递给它的参数生成任一类型的公共密钥和专用密钥。
当您运行 ssh-keygen 时,将提示您输入一个用于保存密钥的位置。
当提示时只需按 Enter 接受默认值。 随后将提示您输入一个口令短语。 输入您能记住的口令,然后再次输入该口令进行确认。
当您完成以下步骤后,在 ~/.ssh 目录中将会有四个文件: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。
id_rsa 和 id_dsa 文件是您的专用密钥,千万不要告诉任何人。 id_rsa.pub 和 id_dsa.pub
文件是您的公共密钥,必须将其复制到集群中其他每个主机上。
在每个主机上,以 oracle 用户身份登录:
$ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 oracle@ds1.orademo.org
注意:本例中此处一路按回车选择默认
$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a oracle@ds1.orademo.org
注意:本例中此处一路按回车选择默认
现
在,必须将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的
~/.ssh/authorized_keys 文件中。 使用 ssh 将每个文件的内容复制到 ~/.ssh/authorized_keys
文件。 请注意,当您使用 ssh 第一次访问远程主机时,其 RSA 密钥将是未知的,从而将提示您确认是否希望连接该主机。 SSH
将记录该远程主机的 RSA 密钥,并在以后连接该主机时不再做出相关提示。
只需在第一个主机上,以 oracle 用户身份登录(复制本地帐户的密钥,以便连接本地主机的 ssh 能够起作用):
(如果您要剪切和粘贴这些命令,则分别运行它们。 SSH 每次会提示输入 oracle 的口令,如果同时粘贴这些命令,则第一个命令在提示输入口令之前刷新输入缓冲区,从而导致其他命令将会丢失。)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh oracle@dbrac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dbrac2,10.49.9.100' (RSA) to the list of known hosts.
oracle@dbrac2's password:
$ ssh oracle@dbrac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
oracle@dbrac2's password:
$ chmod 644 ~/.ssh/authorized_keys
要对第二个主机做同样的处理。请注意,这次有的SSH不会提示您输入oracle的口令。这是因为第一个主机(dbrac1)现在知道了第二个主机的公共密钥,而SSH现在使用的是一种不同的认证协议。
建立用户等效性
如果一切均设置正确,则您现在就可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 date 等简单命令来验证用户等效性:
$ ssh dbrac2 date
Sun Jun 27 19:07:19 CDT 2004
测
试每个方向上所有服务器的连通性是非常重要的。这样会确保当 OUI 在 CRS 和数据库软件安装期间试图复制文件时不会出现类似以下的消息。
该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。
The authenticity of host 'dbrac2 (10.49.9.100)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85.
Are you sure you want to continue connecting (yes/no)? yes
注意: 以上步骤执行完以后,需要执行和本机建立等效性,否则安装CRS时也会出错,在每个节点上分别执行:
$ ssh hostname
(此处hostname分别为dbrac1、dbrac2)
第四部分 ASM配置共享磁盘
配置共享磁盘的方法有三种:
1. Oracle 集群文件系统 (OCFS)
2. 自动存储管理器 (ASM)
3. 原始设备
从可扩展性和可管理性方面考虑,我们使用的是用ASM Library Driver配置ASM的共享磁盘。其他两种配置共享磁盘的方法将在最后面的附录部分介绍。
4.1安装ASM软件
从http://www.oracle.com/technology/software/tech/linux/asmlib/rhel4.html找到要下载的三个RPM 软件包,注意,一定要与内核版本和系统平台相符。
用root权限执行:
# rpm -Uvh oracleasm-support-version.arch.rpm
oracleasm-kernel-version.arch.rpm
oracleasmlib-version.arch.rpm
在我们系统中,为:
#rpm –Uvh oracleasm-support-2.0.3-1.x86_64.rpm
oracleasm-2.6.9-22.ELsmp-2.0.3-1.x86_64.rpm
oracleasmlib-2.0.2-1.x86_64.rpm
1.Preparing... #################################### [100%]
2:oracleasm-support ############################## [ 33%]
3:oracleasm-2.6.9-22.ELsmp ########################## [ 66%]
Linking module oracleasm.o into the module path [ OK ]
3:oracleasmlib #################################### [100%]
对ASM进行配置:
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
这将配置 Oracle ASM 库驱动程序的启动时属性。以下问题将确定在启动时是否加载驱动程序以及它将拥有的权限。当前值将显示在方括号(“[]”)中。按 <ENTER> 而不键入回应将保留该当前值。按 Ctrl-C 将终止。
Default user to own the driver interface []:oracle
Default group to own the driver interface []:dba
Start Oracle ASM library driver on boot (y/n) [n]:y
Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
Writing Oracle ASM library driver configuration done
Creating /dev/oracleasm mount point done
Loading module "oracleasm" done
Mounting ASMlib driver filesystem done
Scanning system for ASM disks done
AMS的命令如下所示:
oracle@DBRAC1:~> /etc/init.d/oracleasm
Usage: /etc/init.d/oracleasm
{start|stop|restart|enable|disable|configure|createdisk|deletedisk|querydisk|listdisks|scandisks|status}
现在,如下所示启用 ASMLib 驱动程序。
# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration [ OK ]
Scanning system for ASM disks [ OK ]
ASM的安装和配置是要在集群中的每个节点上执行的
4.2用ASM Library Driver配置ASM的共享磁盘
注意:4.2.1和4.2.2部分只需在一个节点上完成
4.2.1磁盘分区(fdisk)
按本次存储的分法,提供了一个15TB的RAID光纤盘阵并只划了一个卷给数据库用(当然以后空间不够可以再加),对操作系统来说就是认到一个设备。本次安装中它认成/dev/sdb,进行fdisk操作,
划3个分区,sdb1和sdb2都为1个G,剩下空间全部给sdb3。
sdb1和sdb2是用来做Oracle Cluster Registry (OCR) 和 Voting Disk。
sdb3是给ASM用的
(下面例子中数值可能不同,命令是相同的)
#fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel.Changes will remain in memory only,
until you decide to write them.After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 4427.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):p
Disk /dev/sdb:255 heads, 63 sectors, 4427 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4427, default 1):1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):1000
Using value 1000
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1-4427, default 1001):1001
Using value 1001
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):2000
Using value 2000
Command (m for help):n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1-4427, default 1001):3001
Using value 3001
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):4427
Using default value 4427
Command (m for help):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING:If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
4.2.2创建ASM磁盘
通过以 root 用户身份运行以下命令来标记由 ASMLib 使用的磁盘。 仅从一个集群主机节点上执行此操作。提示: 以大写字母输入 DISK_NAME。当前版本中有一个错误,即如果使用小写字母,ASM 实例将无法识别磁盘。
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb3
Marking disk "/dev/sdb" as an ASM disk [ OK ]
……
TIP:根据我们的安装经验,创建ASM disk时只能绑定一个分区(/dev/sdb3),而不能是一个设备(/dev/sdb)
以下示例演示了如何列出标记为由 ASMLib 使用的所有磁盘。
# /etc/init.d/oracleasm listdisks
VOL1
……
4.2.2在各个节点重新扫描ASM磁盘
一定在集群的其他节点上,以 root 用户身份运行以下命令,扫描所配置的ASMLib磁盘:
# /etc/init.d/oracleasm scandisks
这样其他节点上的ASM Disk才有效。
第五部分 安装配置Oracle RAC
5.1 配置环境变量
5.1.1 编辑.bashrc设置 ORACLE_BASE 和 ORACLE_HOME 等环境变量
基本路径:
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
据
oracle的安装文档要求,CRS的目录最好不是ORACLE_BASE的子目录,因为安装过程中会改变CRS的父目录的权限,这会影响ORACLE的
安装。在按以上要求生成对应目录之前,需检查所在磁盘的空间是否满足安装要求,确定之后生成目录,并将相关环境变量设置在oracle用户的
profile中。用oracle帐号编辑 /home/oracle/.bashrc
oracle用户的profile文件.bashrc内容:
# .bashrc
# User specific aliases and functions
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/crs/oracle/product/10.2.0/crs_1
export ORACLE_SID=dbrac1
export ORACLE_TERM=xterm
export LD_ASSUME_KERNEL=2.4.1
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/sbin
export PATH
然后执行
$ source .bash_profile
使环境变量生效
注意:ORACLE_SID每台机器不一样,如dbrac1的SID为dbrac1,dbrac2的SID为dbrac2,以此类推。
对LD_ASSUME_KERNEL环境变量的说明:
这
个参数实际上是为了避免Linux上的 NPTL (Native POSIX Thread Library) 和Oracle应用不兼容的问题.
设定 LD_ASSUME_KERNEL为2.4.1表示使用旧有的 "Linuxthreads with floating stacks"
5.1.2创建CRS安装路径
注:With
Oracle Database 10g Release 2 (10.2), Cluster Ready Services, or CRS,
is now called Oracle Clusterware . 见ORACLE 10.2 安装文档之New Features for
Oracle Clusterware and RAC Installation
1.CRS安装路径的创建及授权
如下所示:
# mkdir -p /u01/crs/oracle/product/10.2.0/crs_1
# chown -R oracle:oinstall /u01/crs/oracle
# chmod -R 775 /u01/crs/oracle
2.OCR及voting disk安装路径
先解释一下ocr(sdb1)和vote(sdb2)文件的用途,
OCR(Oracle Cluster Registry):它记录了机群配置和机群数据库的基本配置,默认大概需要100M的空间,这里我们给了它1000M的空间;
Vote:它是CSS(Cluster Synchronization Services)需要的文件,用来判断机群内各个节点的状态,默认大概也需要100M的空间,这里我们也给了它1000M的空间。
# mkdir -p /u02/oracrs/
# chown -R oracle:oinstall /u02/oracrs/
# chmod -R 775 /u02/oracrs/
绑定裸设备:
#raw /dev/raw/raw1 /dev/sdb1
#raw /dev/raw/raw2 /dev/sdb2
然后在/etc/sysconfig/rawdevices文件里加如下内容:
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2
权限:
# chown root:oinstall /dev/raw/raw1
# chmod 640 /dev/raw/raw1
# chown oracle:dba /dev/raw/raw2
# chmod 660 /dev/raw/raw2
在/etc/rc.local里加如下内容(如果安装软件时出问题,则把root改为oracle)
chown root:oinstall /dev/raw/raw1
chmod 640 /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chmod 660 /dev/raw/raw2
以上操作在所有节点上执行
在安装CRS的过程中,安装程序会提示用户输入存放OCR和Vote文件的位置。因此,通常我们会使用以下方法设置文件位置(在所有节点上执行),以oracle用户执行:
$ ln -s /dev/raw/raw1 /u02/oracrs/ocr.crs
$ ln -s /dev/raw/raw2 /u02/oracrs/vote.crs
5.1.3创建oracle安装路径
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
5.2安装和卸载CRS
5.2.1安装CRS
需要注意的问题:
1、每一步都要看清楚安装路径是否正确
2、分清虚拟地址和专用地址
3、脚本要一个节点一个节点的执行,切不可同时执行
4、如果安装过程中出现in future。。。之类错误,应为两台主机时间不一致导致,解决方法:
1〉用root执行net time –I TARGETIP命令同步
2〉如果net time同步仍然不成功,最好配置一台服务器(节点中的一台为ntp服务器),具体配置方法见后面附录
在安装CRS之前,确认显示没有问题:
# xhost +
解压CRS软件:
# cp 10201_clusterware_linux_x86_64.cpio.gz /home/oracle
# gzip –d 10201_clusterware_linux_x86_64.cpio.gz
# cpio –idmv < 10201_clusterware_linux_x86_64.cpio
# chown –R oracle:oinstall /home/oracle
# su oracle
切换到oracle用户,建立安装目录(该命令需要在各个节点上执行)
$ mkdir –p /u01/app/oracle/oraInventory
进入解压路径/home/oracle/cluterware执行(在集群的一个节点上执行):
$ ./runInstall
进入图形配置界面:
1.Welcome;单击 Next
2.Specify
Inventory Directory and Credentials — 默认值应该就是正确的;确保 inventory 目录位于
ORACLE_BASE 目录中(例如: /u01/app/oracle/oraInventory)并且操作系统组是“oinstall”(确保在
/etc/hosts 中而不仅仅是在 DNS 中配置了您的主机)
3.Specify File Locations — 修改安装路径/u01/app/oracle/product/10.2.0/db_1为/u01/crs/oracle/product/10.2.0/crs_1
4.Language Selection — 确认默认值后继续
5.Cluster
Configuration —
输入集群名(或接受默认的“crs”);配置public和private地址时,public地址即为主机名(与hostname命令所示相同即可),
注意大小写;private地址即为ip,与/etc/hosts中所列相同,virtual 地址填写/etc/hosts中virtual
address对应的主机名
6.Private Interconnect Enforcement — 为每个接口指定接口类型(公共、专用或“不使用”)
7.Oracle Cluster Registry — 选择外部冗余 在 clusterSpecify OCR Location 中输入ocr disk名:/u02/oracrs/ocr.crs
8.Voting Disk — 输入 voting disk 名: /u02/oracrs/vote.crs
9.Summary —单击 Install,开始安装。在安装到最后的时候又会弹出对话框,提示分别在各节点上以root执行orainstRoot.sh和root.sh。注意不要同时运行这些脚本,等一个脚本结束后再运行另一个。
我在执行第一个root.sh的时候报错:Failed to upgrade Oracle Cluster Registry configuration,查看client目录下的ocrconfig_22625.log,有“INVALID FORMAT”字样,这是一个编号为p4679769的BUG,可以执行下面命令来确认:
# ./clsfmt.bin ocr /dev/raw/raw1
clsfmt: Failure trying to resize OCR file from 205567488 bytes to 205570048 bytes
clsfmt: Received unexpected error 4 from skgfifi
skgfifi: Additional information: -2
Additional information: 205567488
这里没有成功,确认是BUG,去metalink上下载补丁文件(clsfmt.bin)打上,清空ocr与voting disk(dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=300),再次运行root.sh成功!另外,执行最后一个root.sh的时候,可能会报""eth0" is not public.Public interfaces should be
used to configure virtual
IPs."这样的错误.这时候需要以root用户去执行$ORA_CRS_HOME/bin/vipca。起来图形界面——next——Network
Interfaces
(只选择用于公共网络的接口,本示例中为eth0,集群中所有主机上的这个接口必须相同,即如果在安装主机上该接口是eth0,则在集群中所有其他主机上
都必须是eth0)。——Virtual IPs for cluster nodes
在vipca的提示框中输入/etc/hosts中事先定义的虚拟ip地址,vipca会自动将虚拟ip对应的hostname显示出来。VIP
配置助手创建并启动 VIP、GSD 和 ONS 应用程序资源。配置完毕后,oracle会自动为public网卡绑定虚拟地址。
在vipca配置完毕后,最好做一下关于vip地址的用户等效性。如执行
# ssh dbrac2-vip
提示后,输入yes。
CRS 安装结束
从 $ORACLE_BASE/product/10.2.0/crs_1/bin 目录中运行 olsnodes 验证安装已成功;例如:
$ cd $ORACLE_BASE/product/10.2.0/crs_1/bin
$ olsnodes
dbrac1
dbrac2
Once CRS 已安装并运行;现在可以安装 Oracle RAC 软件的其余部分了。
5.2.2卸载CRS
如
果我们安装CRS出现了问题,就必须要卸载CRS了。而CRS是一个很令人头疼的服务,卸载CRS也是一个非常繁琐的工作。在目前的release1中,
如果机群中的一个节点重启(无论什么原因,即使crs服务是正常的),机群中的所有节点都会随之重启。因为CSS服务会定期检查机群中所有节点的服务可用
性,当有一个节点出现问题,系统为了保证数据一致性,就会令其他节点重启,重新检查服务,直到所有节点服务都正常。但是就我们现在遇到的情况而言,这种重
启后自动回复正常的情况极少(目前还没有自动恢复过),经常会导致loopreboot。因此,在metalink上有很多关于这方面的介绍。这里,作者
将实战经验与网上经验相结合,总结如下(目前的方法就是卸载所有oracle服务和CRS,然后重装)。
1.阻止循环重启的方法
方法一:将CRS服务禁止
在机器重启之间的那几秒中检测时间内,执行
# /etc/init.d/init.crs disable
禁止crs服务,在下一此重启后,系统将停止循环,但是要把握操作时机。
方法二:拔掉与共享设备的连线
ocr和voting disk文件是存放在共享设备中的,而CSS进程每次都要从这些文件中读取机群的配置信息,因此,在机器重启时断掉与共享设备的连接,机器也将停止循环重启。该方法操作简单,但是由于读取数据不完整,对于接下来的修复可能会带来一些不便。
方法三:改写启动脚本
将/etc/inittab中的最后三行注释掉,如:
#h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null
#h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null
#h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null
令机器在下一次重启时,不在启动服务。该方法的操作时机要把握好,否则没等文件修改完毕,机器就又要重启。
2.在机群中的所有节点上执行$ORA_CRS_HOME/install/rootdelete.sh;
3.在机群中的任意一个节点上执行$ORA_CRS_HOME/install/rootdeinstall.sh;
4.用图形界面OUI卸载crs;
a)执行./runInstall
b)在界面中选择Installed;
c)选择home1,一般要先安装CRS,所以CRS的home一般都是home。
5.在机群所有节点上执行
/bin/rm -f /etc/init.d/init.cssd
/bin/rm -f /etc/init.d/init.crs
/bin/rm -f /etc/init.d/init.crsd
/bin/rm -f /etc/init.d/init.evmd
/bin/rm -f /etc/rc2.d/K96init.crs
/bin/rm -f /etc/rc2.d/S96init.crs
/bin/rm -f /etc/rc3.d/K96init.crs
/bin/rm -f /etc/rc3.d/S96init.crs
/bin/rm -f /etc/rc5.d/K96init.crs
/bin/rm -f /etc/rc5.d/S96init.crs
/bin/rm -rf /etc/oracle
/bin/rm -f /etc/inittab.crs
/bin/rm -f /etc/oratab
/bin/rm -f /etc/oraInst.loc
/bin/cp /etc/inittab.orig /etc/inittab
/bin/rm -rf /var/tmp/.oracle
/bin/rm -rf /u01/crs/oracle/product/10.1.0/crs_1
6.清掉共享磁盘上的内容。
如果ocr和voting disk所在分区不大,可以直接用下面命令清除:
# dd if=/dev/zero of=/dev/sdb1
# dd if=/dev/zero of=/dev/sdb2
7.如果可以,重启机群内所有节点。
8.清理干净后,按照5.2.1的介绍,重新安装CRS。
5.3安装 Oracle 数据库软件RAC
5.3.1 图形界面配置
执行以下命令(在集群的一个节点上):
# cp 10201_database_linux_x86_64.cpio.gz /home/oracle
# cd /home/oracle
# gzip –d 10201_database_linux_x86_64.cpio.gz
# cpio –idmv < 10201_database_linux_x86_64.cpio.gz
# cd /home/oracle/database
# su oracle
$ ./runInstall
启动图形界面
1.Welcome — 单击 Next
2.Specify File Locations — 确认默认值后继续
3.Specify Hardware Cluster Installation Mode — 选择 Cluster Installation 并选择集群中的其他节点
4.Select Installation Type — Enterprise Edition
5.
选择数据库配置 — 选择“Do not create a starter database”。 (我们将在一个单独的步骤中使用数据库配置助手
(DBCA) 来创建数据库。)在安装到最后的时候又会弹出对话框,提示执行root.sh,这时从安装节点开始,每次在一个节点上运行
Oracle主目录中的 root.sh(例如: /u01/app/oracle/product/10.2.0/db_1/root.sh)。
不要同时运行这些脚本。 等一个脚本结束后再启动另一个.
6.Configuration Results — 检查结果并单击 Exit。 在其他节点上依次运行 root.sh。
7.安装结束
注意:在 安装 到 65%时,有一个错误:
信息: 终止从衍生进程输出。
信息: ----------------------------------
信息: 操作中出现异常错误: make
异常错误名: MakefileException
异
常错误字符串: 调用 makefile '/oracle/product/10.2.0/db_1/rdbms/lib/ins_rdbms.mk'
的目标 'all_no_orcl' 时出错。请参阅
'/oracle/oraInventory/logs/installActions2005-12-29_10-44-31AM.log'
以了解详细信息。
异常错误严重级: 1
需要binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm补丁
并用root用户 按以下语法安装:
# rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm
安装完给补丁后,点重试,oracle顺利的安装完成
5.4 卸载 Oracle 数据库软件RAC
如果我们安装RAC出现了问题,就必须要卸载RAC了。
1.停止database的一些活动;
2.通过oui卸载RAC
3.如果想卸载的再干净一点,可以清空db_1下的所有内容。
4.由于$ORACLE_BASE/Orainventory记录了所有oracle软件的安装信息,所以一般不建议删除,否则包括CRS等信息也会被删掉。
第六部分 创建和删除数据库
6.1 创建数据库
在以 oracle 用户身份登录时,设置环境并运行 dbca。
$ dbca
图形界面起来以后:
1.Welcome — 选择“Oracle Real Application Clusters database”
2.Operations — 创建数据库
3.Node Selection — 单击 Select All
4.Database Templates — 选择general
5.Database Identification — 全局数据库名:dbrac.orademo.org;SID: dbrac
6.Management Options — 利用 Enterprise Manager 配置数据库;使用数据库控制进行数据库管理
7.Database Credentials — 为所有帐户使用相同的口令;输入口令并再次确认
8.Storage Options — 自动存储管理 (ASM)
9.Create ASM Instance — 设置 SYS 口令并确认;创建初始化参数文件 (IFILE)
10.ASM
Disk Groups — Create New>Create Disk Group>Disk Group Name
(DATA);冗余(external);更改磁盘发现路径(ORCL:* —
即使磁盘显示为已供应状态,仍然必须输入此项,否则会出错);选择磁盘;输入故障组名;选择新创建的磁盘组
11.Database File Locations — 使用 Oracle 管理的文件
12.Recovery Configuration — 单击 Next
13.Database Content — 示例模式
14.Initialization Parameters — 内存:把默认的40%改为60%;字符集的设定:要选择ZHSGBK16和UTF8。
15.Database Storage — 单击 Next
16.Create Options — 选择“Create Database”
17.Summary — 检查总结信息并单击 OK
根据经验,需要注意的有几下几点:
1.使用ASM管理共享磁盘的方法,将为数据库中的每个节点创建自己的ASM实例。如果系统中已存在ASM实例,可以继续使用,但需要输入ASM的管理密码;
2.使用ASM需要创建ASM DiskGroup,如果磁盘组存在,则可以选用现有的组;如果不存在,要创建一个。
a)点击“create new”,输入磁盘组的名称;
b)冗余程度。如果你的盘阵本身有raid保护,则可以选择external,这样的空间利用率最大;否则,normal的利用率是一半,因为是两个failure group做镜像;high的利用率是三分之一,因为是三个failure group做镜像;
c)
磁盘候选。分为“show member”和“show
all”两种,第一种显示尚未分配的磁盘,第二种显示所有磁盘。有时虽然已经删掉了以前的数据库,但是没有删掉磁盘组,所以磁盘仍会显示为已用,这是就需
要show
all。切记,一定要修改磁盘路径为ORCL:*,否则即使选中也会被视为无效。如果想选择那些已经被其他组用过的盘,则需要选择force,强制执行。
3.创建DB过程中会报错,点击确定即可。随后dbca会自动启动各个节点的instance,但是除了安装节点的正常,其他的都会报错。这是因为创建的ASM DiskGroup的时候,其他节点的ASM实例没有mount磁盘组。因此需要在其他节点上执行一下命令:
# srvctl stop asm –n hostname
# srvctl start asm –n hostname
# srvctl start instance –I instance_name on hostname–d database_name
最后用命令
# srvctl status database –d database_name
检查,是否所有节点的instance都已经running。
6.2 删除数据库
删除数据库最好也用dbca,虽然srvctl也可以。
1.运行dbca,选择”delete a database”。然后就next..,直到finish。
2.数据的删除并不影响asm实例,如果想删除与asm有关的内容,可以按如下做法:
# export ORACLE_SID=ASM_instance_name
# sqlplus / as sysdba
SQL> drop diskgroup diskgroup_name including contents;
SQL> quit
然后在各个节点上执行
# srvctl stop asm –n hostname
# srvctl remove asm –n hostname
这样,应该就可以删除的比较干净了。
Lsnrctl start
6.3 验证数据库安装正确
$su oracle
$sqlplus /nolog
>connect / as sysdba
Connected
>startup
ORA-01081:cannot start already-running ORACLE –shut it down first ---说明数据库已经运行
>connect system/oracle@dbrac1
Connected
>connect system/oracle@dbrac2
Connected
两个节点提示connected说明数据库在两个节点上正常运行。
6.4 数据库troubleshooting
重起后出现问题:
#su - oracle
$ srvctl status nodeapps –n dbrac1
VIP is running on node: dbrac1
GSD is not running on node: dbrac1
Listener is not running on node: dbrac1
ONS daemon is not running on node: dbrac1
$ srvctl status nodeapps –n dbrac2
VIP is running on node: dbrac2
GSD is not running on node: dbrac2
Listener is not running on node: dbrac2
ONS daemon is not running on node: dbrac2
暂时解决办法:
在各节点上分别:
# /etc/init.d/oracleasm enable
#/etc/init.d/oracleasm scandisks
然后在主节点上运行:
#su - oracle
$crs_stop -all
$srvctl stop nodeapps -n dbrac1
$srvctl stop nodeapps -n dbrac2
$srvctl start nodeapps -n dbrac1
$srvctl start nodeapps -n dbrac2
$crs_start -all
$srvctl start database -d dbrac
为什么呢……….
第七部分 附录
7.1 CRS进程介绍
CRS 维护着两个文件: Oracle Cluster Registry (OCR) 和 Voting Disk。 OCR 和 Voting Disk 必须以原始分区或集群文件系统文件的形式存在于共享磁盘上。
在以前的版本中,Oracle RAC必须借助第三方Cluster软件,但是从Oracle10g开始,我们有了新的选择。CRS就是这样一个替代产品,用以提供RAC环境中的群集服务。
CRS是一个单独的产品,在构建RAC环境中,需要单独安装。
系统启动以后,CRS会自动启动,启动主要由/etc/init.d中的几个脚本完成:
[eygle@raclinux1 init.d]$ ll init*
-r-xr-xr-x 1 root root 1951 Jun 27 13:27 init.crs
-r-xr-xr-x 1 root root 4735 Jun 27 20:32 init.crsd
-r-xr-xr-x 1 root root 35401 Jun 27 13:27 init.cssd
-r-xr-xr-x 1 root root 3197 Jun 27 13:27 init.evmd
CRS启动的三个主要的后台进程为:
[oracle@raclinux1 bin]$ ps -ef|grep d.bin
root 3140 1 0 23:13 00:00:00 /u01/app/oracle/product/10.2.0/crs/bin/crsd.bin
oracle 3884 3062 0 23:14 00:00:00 /u01/app/oracle/product/10.2.0/crs/bin/evmd.bin
oracle 4017 3983 0 23:14 00:00:00 /u01/app/oracle/product/10.2.0/crs/bin/ocssd.bin
oracle 21117 13799 0 23:29 pts/1 00:00:00 grep d.bin
这几个进程的主要作用如下:
CRSD:
- Engine for HA operation
- Manages 'application resources'
- Starts, stops, and fails 'application resources' over
- Spawns separate 'actions' to start/stop/check application resources
- Maintains configuration profiles in the OCR (Oracle Configuration Repository)
- Stores current known state in the OCR.
- Runs as root
- Is restarted automatically on failure
OCSSD:
- OCSSD is part of RAC and Single Instance with ASM
- Provides access to node membership
- Provides group services
- Provides basic cluster locking
- Integrates with existing vendor clusteware, when present
- Can also runs without integration to vendor clustware
- Runs as Oracle.
- Failure exit causes machine reboot.
--- This is a feature to prevent data corruption in event of a split brain.
注意,ocssd进程在单实例ASM系统中也可以见到,以下是我的一个单实例ASM系统,ocssd进程同样存在:
bash-2.03# ps -ef|grep _+ASM
oracle 3264 1 0 Aug 25 ? 0:01 asm_lgwr_+ASM
root 12669 8167 0 11:58:56 pts/1 0:00 grep _+ASM
oracle 3270 1 0 Aug 25 ? 0:00 asm_rbal_+ASM
oracle 3266 1 0 Aug 25 ? 0:05 asm_ckpt_+ASM
oracle 3268 1 0 Aug 25 ? 0:00 asm_smon_+ASM
oracle 3262 1 0 Aug 25 ? 0:00 asm_dbw0_+ASM
oracle 3258 1 0 Aug 25 ? 0:00 asm_pmon_+ASM
oracle 3260 1 0 Aug 25 ? 0:00 asm_mman_+ASM
bash-2.03# ps -ef|grep ocssd
root 12672 8167 0 11:59:01 pts/1 0:00 grep ocssd
oracle 5374 1 0 Apr 07 ? 0:01 /opt/oracle/product/10.2.0/bin/ocssd.bin
bash-2.03#
ocssd进程非常重要,如果该进程异常中止,会导致系统crash。
在某些极端情况下,如果ocssd无法正常启动,会导致操作系统循环重启。这时候需要DBA介入进行一些特殊处理。
EVMD:
- Generates events when things happen
- Spawns a permanent child evmlogger
- Evmlogger, on demand, spawns children
- Scans callout directory and invokes callouts.
- Runs as Oracle.
- Restarted automatically on failure
我们可以通过CRS工具来查看CRS状态:
[oracle@raclinux1 ~]$ cd $ORA_CRS_HOME/bin
[oracle@raclinux1 bin]$ pwd
/u01/app/oracle/product/10.2.0/crs/bin
[oracle@raclinux1 bin]$ ./crs_stat
NAME=ora.RACDB.RACDB1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.RACDB.RACDB2.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.RACDB.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.raclinux1.ASM1.asm
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.raclinux1.LISTENER2_RACLINUX1.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.raclinux1.LISTENER_RACLINUX1.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.raclinux1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.raclinux1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1
NAME=ora.raclinux1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on raclinux1