http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-3-092230-zhs.html#30

在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 集群(续) 

本指南中的信息未经 Oracle 验证,且不受 Oracle 支持,您在使用时只能风险自负;本指南仅供教学使用。


21. 为集群安装 Oracle Grid Infrastructure

仅在集群的一个 Oracle RAC 节点 (racnode1) 上执行以下安装过程。Oracle Universal Installer 将把 Oracle Grid Infrastructure 软件(Oracle Clusterware 和自动存储管理)安装到集群中的两个 Oracle RAC 节点。

现在您已做好准备,可以开始安装环境的“网格”部分了,该部分包括 Oracle Clusterware 和自动存储管理。完成以下步骤,在集群中安装 Oracle Grid Infrastructure。

在安装过程中,如果您对安装程序要求您执行的操作不甚清楚,可随时单击 OUI 页面上的 Help 按钮。

典型安装与高级安装

从 11g 第 2 版开始,Oracle 提供了两个选项供您安装 Oracle Grid Infrastructure 软件:

 

  • 典型安装

    典型安装选项是简化的安装过程,只需进行最少的手动配置选择。这个新选项为用户(尤其是那些集群技术新手)提供了一个简化的集群安装过程。典型安装是让尽可能多的选项默认采用最佳实践的建议值。

  • 高级安装

    高级安装选项是一个高级过程,需要较高程度的系统知识。该安装选项使您可以进行特定的配置选择,包括额外的存储和网络选择、对基于角色的管理权限使用操作系统组身份验证、与 IPMI 集成,或使用细粒度指定自动存储管理角色。



由于本文将使用基于角色的管理权限和细粒度来指定自动存储管理角色,因此我们将使用“高级安装”选项。

配置 SCAN 而不使用 DNS

对于本文,尽管我说过将手动分配 IP 地址并使用 DNS 方法进行名称解析(这与 GNS 不同),实际上我不会在任何 DNS 服务器(或 GNS)中定义 SCAN。相反,我将只在每个 Oracle RAC 节点以及任何将连接到数据库集群的客户端的 hosts 文件 ( /etc/hosts) 中定义 SCAN 主机名和 IP 地址。尽管 Oracle 非常不鼓励这么做,并且强烈建议使用 GNS 或 DNS 解析方法,但我觉得对 DNS 的配置超出了本文的范围。本节将提供一种变通方法(这完全是一种非常规的方法),该方法使用 nslookup 二进制文件,用这种方法,在 Oracle Grid Infrastructure 的安装过程中能够成功地完成集群验证实用程序。请注意,本文所述的这个变通方法只为简便起见,不应认为其可用于生产环境。

只在 hosts 文件中而不在网格命名服务 (GNS) 或 DNS 中定义 SCAN 是一种无效配置,将导致 Oracle Grid Infrastructure 安装过程中运行的集群验证实用程序失败:

 

图 17:Oracle Grid Infrastructure/CVU 错误 —(配置 SCAN 而不使用 DNS)

 

INFO: Checking Single Client Access Name (SCAN)...
INFO: Checking name resolution setup for "racnode-cluster-scan"...
INFO: ERROR:
INFO: PRVF-4657 : Name resolution setup check for "racnode-cluster-scan" (IP address: 216.24.138.153) failed
INFO: ERROR:
INFO: PRVF-4657 : Name resolution setup check for "racnode-cluster-scan" (IP address: 192.168.1.187) failed
INFO: ERROR:
INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "racnode-cluster-scan"
INFO: Verification of SCAN VIP and Listener setup failed


如果 CVU 只报告了此错误,可放心忽略此检查,单击 OUI 中的 [Next] 按钮继续进行 Oracle Grid Infrastructure 的安装。在文档 ID:887471.1(My Oracle Support 网站)中对此有记述。

如果您只在 hosts 文件中定义 SCAN 但却想让 CVU 成功完成,只需在两个 Oracle RAC 节点上以 root身份对 nslookup 实用程序进行如下修改。

首先,在两个 Oracle RAC 节点上将原先的 nslookup 二进制文件重命名为 nslookup.original

[root@racnode1 ~]# mv /usr/bin/nslookup /usr/bin/nslookup.original

然后,新建一个名为 /usr/bin/nslookup 的 shell 脚本,在该脚本中用 24.154.1.34 替换主 DNS,用 racnode-cluster-scan 替换 SCAN 主机名,用 192.168.1.187 替换 SCAN IP 地址,如下所示:

#!/bin/bash

HOSTNAME=${1}

if [[ $HOSTNAME = "

racnode-cluster-scan" ]]; then
echo "Server: 24.154.1.34"
echo "Address: 24.154.1.34#53"
echo "Non-authoritative answer:"
echo "Name: racnode-cluster-scan"
echo "Address: 192.168.1.187"
else
/usr/bin/nslookup.original $HOSTNAME
fi

最后,将新建的 nslookup shell 脚本更改为可执行脚本:

[root@racnode1 ~]# chmod 755 /usr/bin/nslookup
记住要在两个 Oracle RAC 节点上执行这些操作。 

每当 CVU 使用您的 SCAN 主机名调用 nslookup 脚本时,这个新的 nslookup shell 脚本只是回显您的 SCAN IP 地址,其他情况下则会调用原先的 nslookup 二进制文件。

现在,在 Oracle Grid Infrastructure 的安装过程中,当 CVU 尝试验证您的 SCAN 时,它就会成功通过:

 

[grid@racnode1 ~]$ cluvfy comp scan -verbose

Verifying scan

Checking Single Client Access Name (SCAN)...
SCAN VIP name Node Running? ListenerName Port Running?
---------------- ------------ --------- ------------ ------ ----------
racnode-cluster-scan racnode1 true LISTENER 1521 true

Checking name resolution setup for "racnode-cluster-scan"...
SCAN Name IP Address Status Comment
------------ ------------------------ ------------------------ ----------
racnode-cluster-scan 192.168.1.187 passed

Verification of SCAN VIP and Listener setup passed

Verification of scan was successful.

===============================================================================

[grid@racnode2 ~]$ cluvfy comp scan -verbose

Verifying scan

Checking Single Client Access Name (SCAN)...
SCAN VIP name Node Running? ListenerName Port Running?
---------------- ------------ --------- ------------ ------ ----------
racnode-cluster-scan racnode1 true LISTENER 1521 true

Checking name resolution setup for "racnode-cluster-scan"...
SCAN Name IP Address Status Comment
------------ ------------------------ ------------------------ ----------
racnode-cluster-scan 192.168.1.187 passed

Verification of SCAN VIP and Listener setup passed

Verification of scan was successful.


验证终端 Shell 环境

在启动 Oracle Universal Installer 之前,先以 Oracle Grid Infrastructure 软件所有者的身份(本文为grid)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

安装 Oracle Grid Infrastructure

以 grid 用户身份执行以下任务来安装 Oracle Grid Infrastructure:

[grid@racnode1 ~]$ id uid=1100(grid) gid=1000(oinstall) 
groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)

[grid@racnode1 ~]$ DISPLAY=:0.0
[grid@racnode1 ~]$ export DISPLAY

[grid@racnode1 ~]$ cd /home/grid/software/oracle/grid
[grid@racnode1 grid]$ ./runInstaller

 

屏幕名称 响应 屏幕截图
Select Installation Option 选择 Install and Configure Grid Infrastructure for a Cluster
Select Installation Type 选择 Advanced Installation
Select Product Languages 为您的环境进行合适的选择。
Grid Plug and Play Information 有关如何配置网格命名服务 (GNS) 的说明超出了本文的范围。取消选中“Configure GNS”选项。

 

Cluster Name SCAN Name SCAN Port
racnode-cluster racnode-cluster-scan 1521

 

单击 [Next] 之后,OUI 将尝试验证 SCAN 信息:

 

Cluster Node Information 使用此屏幕将 racnode2 节点添加到集群中并配置 SSH 连接。

 

单击 Add 按钮,按下表添加 racnode2 及其虚拟 IP 名称 racnode2-vip

 

Public Node Name Virtual Host Name
racnode1 racnode1-vip
racnode2 racnode2-vip

 

接下来,单击 [SSH Connectivity] 按钮。输入 grid 用户的 OS Password,然后单击 [Setup] 按钮。这会启动 SSH Connectivity 配置过程:

 

 

SSH 配置过程成功完成后,确认该对话框。

 

单击 [Test] 按钮结束该屏幕并验证无口令的 SSH 连接。
Specify Network Interface Usage 指定用于“Public”网络和“Private”网络的网络接口。进行所需更改以与下表中各值保持一致:

 

Interface Name Subnet Interface Type
eth0 192.168.1.0 Public
eth1 192.168.2.0 Private
Storage Option Information 选择 Automatic Storage Management (ASM)
Create ASM Disk Group 根据下表中的值创建一个 ASM 磁盘组,将用于保存 Oracle Clusterware 文件:

 

Disk Group Name Redundancy Disk Path
CRS External ORCL:CRSVOL1
Specify ASM Password 对于本文,我选择 Use same passwords for these accounts
Failure Isolation Support 配置 Intelligent Platform Management Interface (IPMI) 超出了本文的范围。选择 Do not use Intelligent Platform Management Interface (IPMI)
Privileged Operating System Groups 本文通过任务角色划分配置来使用基于角色的管理权限和细粒度来指定自动存储管理角色。

 

进行所需更改以与下表中各值保持一致:

 

OSDBA for ASM OSOPER for ASM OSASM
asmdba asmoper asmadmin
Specify Installation Location 为 Oracle Grid Infrastructure 安装设置 Oracle Base ( $ORACLE_BASE) 和 Software Location ( $ORACLE_HOME):
   Oracle Base: /u01/app/grid 
   Software Location: /u01/app/11.2.0/grid
Create Inventory 由于这是该主机上的第一次安装,您需要创建 Oracle 清单目录。使用 OUI 提供的默认值:
   Inventory Directory: /u01/app/oraInventory 
   oraInventory Group Name: oinstall
Prerequisite Checks 安装程序将执行一系列的检查以确定这两个 Oracle RAC 节点是否满足安装和配置 Oracle Clusterware 和自动存储管理软件的最低要求。

 

从 Oracle Clusterware 11g 第 2 版 (11.2) 开始,如果任何检查失败,安装程序 (OUI) 将创建 shell 脚本程序(称为修复脚本)以解决许多不满足系统配置要求之问题。如果 OUI 检测到标记为“fixable”的不满足要求之任务,您可通过单击 [Fix & Check Again] 按钮生成修复脚本来轻松解决这一问题。

 

修复脚本是在安装期间生成的。安装程序将提示您以 root 身份在一个单独的终端会话中运行该脚本。当您运行该脚本时,它会将内核值提高到所需最小值,如有必要,会完成其他操作系统配置任务。

 

如果通过了所有的必备条件检查(我的安装就是这样的情况),OUI 继续转到 Summary 屏幕。
Summary 单击 [Finish] 开始安装。
Setup 安装程序在两个 Oracle RAC 节点上执行 Oracle Grid Infrastructure 安装过程。
Execute Configuration scripts 安装完成后,将提示您运行/u01/app/oraInventory/orainstRoot.sh 和/u01/app/11.2.0/grid/root.sh 脚本。以 root 用户帐户在集群的两个 Oracle RAC 节点(从执行安装的节点开始)上打开一个新的控制台窗口。

 

在 RAC 集群的两个节点上运行 orainstRoot.sh 脚本:
[root@racnode1 ~]# /u01/app/oraInventory/orainstRoot.sh  [root@racnode2 ~]# /u01/app/oraInventory/orainstRoot.sh

 

在集群中两个 Oracle RAC 节点(从执行安装的节点开始)上的同一个新控制台窗口中,仍以 root 用户帐户登录。在 RAC 集群中的两个节点上运行 root.sh 脚本(从执行安装的节点开始,每次一个)。
[root@racnode1 ~]# /u01/app/11.2.0/grid/root.sh  [root@racnode2 ~]# /u01/app/11.2.0/grid/root.sh

 

root.sh 脚本的运行可能需要几分钟。在最后一个节点上运行root.sh 时,您将收到类似以下的输出,指示安装成功:
...
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
'UpdateNodeList' was successful.

 

返回到 OUI,确认“Execute Configuration scripts”对话框窗口。
Configure Oracle Grid Infrastructure for a Cluster 安装程序将运行 Oracle 网络服务 (NETCA)、自动存储管理 (ASMCA) 和 Oracle 专用互连 (VIPCA) 的配置助手。OUI 执行的最后一步是运行集群验证实用程序 (CVU)。如果配置助手和 CVU 运行成功,可单击 [Next]然后单击 [Close] 退出 OUI。

 

如本节早前所述,如果只在 hosts 文件 ( /etc/hosts) 中配置 SCAN,而不在网格命名服务 (GNS) 中配置,也不使用 DNS 来手动配置,则该配置会被视为无效配置,这将导致集群验证实用程序失败。

 

如果 CVU 只报告了此错误,可放心忽略此检查并继续:单击 [Next]按钮然后单击 [Close] 按钮退出 OUI。在文档 ID:887471.1(My Oracle Support 网站)中对此有记述。

 

如果您只在 hosts 文件中定义 SCAN 但却想让 CVU 成功完成,不要在 OUI 中单击 [Next] 按钮来绕过该错误。相反,要按照配置 SCAN 而不使用 DNS 一节中的说明来修改 nslookup 实用程序。在完成该节所述步骤后,返回到 OUI 中,单击 [Retry] 按钮。现在 CVU 会成功完成,不报告错误了。单击 [Next],然后单击 [Close] 退出 OUI。
Finish 在安装结束时,单击 [Close] 按钮退出 OUI。

警告:安装完成后,不要在 Oracle Clusterware 还在运行时手动删除或通过运行相应 cron 作业来删除/tmp/.oracle 或 /var/tmp/.oracle 或集群件的文件。如果删除这些文件,则 Oracle Clusterware 可能遭遇中断挂起,会出现错误 CRS-0184:Cannot communicate with the CRS daemon。

 


22. 集群的 Oracle Grid Infrastructure 的安装后任务

在集群中的两个 Oracle RAC 节点上执行以下安装后过程。

验证 Oracle Clusterware 安装

安装 Oracle Grid Infrastructure 后,可以运行几个测试来验证安装是否成功。以 grid 用户身份在 RAC 集群的两个节点上运行以下命令。

检查 CRS 状态 
[grid@racnode1 ~]$ crsctl check crs 
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
检查 Clusterware 资源 

注:在 Oracle Clusterware 11g 第 2 版 (11.2) 中不再使用 crs_stat 命令。

[grid@racnode1 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.eons ora.eons.type 0/3 0/ ONLINE ONLINE racnode1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/5 0/0 OFFLINE OFFLINE
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....E1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora....de1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora....de1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora....de1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....E2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora....de2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora....de2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora....de2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
检查集群节点
[grid@racnode1 ~]$ olsnodes -n 
racnode1 1
racnode2 2
检查两个节点上的 Oracle TNS 监听器进程
[grid@racnode1 ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | 
awk '{print $9}'

LISTENER_SCAN1

LISTENER
[grid@racnode2 ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' |
awk '{print $9}'

LISTENER
确认针对 Oracle Clusterware 文件的 Oracle ASM 功能

如果在 Oracle ASM 上安装了 OCR 和表决磁盘文件,则以 Grid Infrastructure 安装所有者的身份,使用下面的命令语法来确认当前正在运行已安装的 Oracle ASM:

[grid@racnode1 ~]$ srvctl status asm -a 
ASM is running on racnode1,racnode2
ASM is enabled.
检查 Oracle 集群注册表 (OCR)
[grid@racnode1 ~]$ ocrcheck 
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2404
Available space (kbytes) : 259716
ID : 1259866904
Device/File Name : +CRS
Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check bypassed due to non-privileged user
检查表决磁盘
[grid@racnode1 ~]$ crsctl query css votedisk 
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 4cbbd0de4c694f50bfd3857ebd8ad8c4 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).


注:要管理 Oracle ASM 或 Oracle Net 11g 第 2 版 (11.2) 或更高安装版本,请使用集群的 Oracle Grid Infrastructure 主目录(网格主目录)中的 srvctl 程序。当我们安装 Oracle Real Application Clusters(Oracle 数据库软件)时,不能使用数据库主目录下的 srvctl 程序来管理 Oracle Grid Infrastructure 主目录中的 Oracle ASM 或 Oracle Net。

表决磁盘管理

在以前的版本中,我们强烈建议在安装 Oracle Clusterware 软件之后使用 dd 命令备份表决磁盘。在 Oracle Clusterware 11.2 以及更高版本中,不再支持使用 dd 命令来备份和恢复表决磁盘,因而再使用该命令来备份和恢复可能导致丢失表决磁盘数据。

在 Oracle Clusterware 11g 第 2 版中不再需要备份表决磁盘。当配置的任何部分发生更改时,会在 OCR 中自动备份表决磁盘数据,并将表决磁盘数据自动恢复到任何添加的表决磁盘中。

要了解更多有关管理表决磁盘、Oracle 集群注册表 (OCR) 和 Oracle 本地注册表 (OLR) 的信息,请参阅Oracle Clusterware 管理和部署指南 11g 第 2 版 (11.2)。

备份 root.sh 脚本

Oracle 建议您在完成安装后备份 root.sh 脚本。如果您在同一 Oracle 主目录下安装其他产品,则安装程序在安装过程中会更新现有 root.sh 脚本的内容。如果您需要原先 root.sh 脚本中包含的信息,可通过 root.sh 文件副本进行恢复。

以 root 身份在两个 Oracle RAC 节点上备份 root.sh 文件:

[root@racnode1 ~]# cd /u01/app/11.2.0/grid 
[root@racnode1 grid]# cp root.sh root.sh.racnode1.AFTER_INSTALL_NOV-20-2009

[root@racnode2 ~]# cd /u01/app/11.2.0/grid
[root@racnode2 grid]# cp root.sh root.sh.racnode2.AFTER_INSTALL_NOV-20-2009

安装集群运行状况管理软件(可选)

为了解决故障诊断方面的问题,如果您当前使用的是 Linux 内核 2.6.9 或更高版本,Oracle 建议您安装Instantaneous Problem Detection OS Tool (IPD/OS)。编写本文时,我们使用的是 Oracle Enterprise Linux 5 Update 4,它使用 2.6.18 内核:

[root@racnode1 ~]# uname -a 
Linux racnode1 2.6.18-164.el5 #1 SMP Thu Sep 3 04:15:13 EDT 2009
x86_64 x86_64 x86_64 GNU/Linux

如果当前使用的 Linux 内核是 2.6.9 之前的版本,则可使用 OS Watcher and RACDDT,该软件可从 My Oracle Support 网站(以前的 Metalink)获取。

IPD/OS 工具用于检测和分析有关操作系统和集群资源的性能降低和故障的状况。对于运行 Oracle Clusterware、Oracle ASM 和 Oracle RAC 的集群中出现的许多问题(如节点逐出),该工具可给出更好的解释。该工具不断跟踪每个节点、进程和设备级的操作系统资源消耗情况。它收集并分析整个集群的数据。在实时模式下,达到阈值后,会向操作者显示警报。为了进行根本原因分析,可以重放历史数据以了解故障当时所发生的情况。

有关安装和配置 IPD/OS 工具的说明超出了本文范围,在此不对其进行讨论。您可在以下 URL 下载 IPD/OS 工具及随附的详细安装配置指南:

http://www.oracle.com/technetwork/cn/database/database11g/ipd-download-homepage-087562-zhs.html

 


23. 为数据和快速恢复区创建 ASM 磁盘组

以 grid 用户身份仅在集群中的一个节点 (racnode1) 上运行 ASM Configuration Assistant (asmca) 以创建其他的 ASM 磁盘组,这些磁盘组将用于创建集群化数据库。

在安装 Oracle Grid Infrastructure 时,我们配置了一个名为 +CRS 的 ASM 磁盘组,用于存储 Oracle Clusterware 文件(OCR 和表决磁盘)。

在本节中,我们将使用 ASM Configuration Assistant ( asmca) 再创建两个 ASM 磁盘组。稍后本指南在创建集群化数据库时将使用这些新的 ASM 磁盘组。

第一个 ASM 磁盘组将命名为 +RACDB_DATA,用于存储所有 Oracle 物理数据库文件(数据、联机重做日志、控制文件、存档重做日志)。另一个 ASM 磁盘组将用于名为 +FRA 的快速恢复区。

验证终端 Shell 环境

启动 ASM Configuration Assistant 之前,先作为 Oracle Grid Infrastructure 软件的所有者(本文为grid)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

使用 ASMCA 创建其他 ASM 磁盘组

以 grid 用户身份执行以下任务来创建另外两个 ASM 磁盘组:

[grid@racnode1 ~]$ asmca &

 

屏幕名称 响应 屏幕截图
Disk Groups 在 Disk Groups 选项卡中,单击 Create 按钮。
Create Disk Group Create Disk Group 对话框应显示我们在本指南前面创建的两个 ASMLib 卷。

 

如果我们在本文前面创建的 ASMLib 卷在 Select Member Disks 窗口中不作为 eligible 而显示(ORCL:DATAVOL1 和 ORCL:FRAVOL1),则单击 Change Disk Discovery Path 按钮并输入 ORCL:*

 

当创建“数据”ASM 磁盘组时,对于 Disk Group Name 使用RACDB_DATA。在 Redundancy 部分,选择 External (none)。最后,在 Select Member Disks 部分,选中 ASMLib 卷ORCL:DATAVOL1

 

在确认此对话框中所有值均正确后,单击 [OK] 按钮。
Disk Groups 创建了第一个 ASM 磁盘后,将返回到最初的对话框。再次单击 Create按钮,创建第二个 ASM 磁盘组。
Create Disk Group Create Disk Group 现在应显示剩下的最后一个 ASMLib 卷。

 

当创建“快速恢复区”磁盘组时,对于 Disk Group Name 使用 FRA。在 Redundancy 部分,选择 External (none)。最后,在 Select Member Disks 部分,选中 ASMLib 卷 ORCL:FRAVOL1

 

在确认此对话框中所有值均正确后,单击 [OK] 按钮。
Disk Groups 单击 [Exit] 按钮退出 ASM Configuration Assistant。

 


24. 在 Oracle Real Application Clusters 中安装 Oracle Database 11g

仅在集群中的一个 Oracle RAC 节点 (racnode1) 上执行以下 Oracle Database 软件安装过程!Oracle Universal Installer 会通过 SSH 将 Oracle Database 软件安装到集群中的两个 Oracle RAC 节点。

现在 Grid Infrastructure 软件已可以使用,您可以在集群中的一个节点 ( racnode1) 上以 oracle 用户身份安装 Oracle Database 软件。在安装过程中,OUI 会将二进制文件从此节点复制集群中的所有其他节点上。

就本指南而言,我们在安装 Oracle Database 软件时将不使用“Create Database”选项。在本指南稍后,我们将在完成所有安装任务之后使用 Database Configuration Assistant (DBCA) 创建集群化数据库。

验证终端 Shell 环境

在启动 Oracle Universal Installer (OUI) 之前,先以 Oracle Database 软件所有者的身份(本文为oracle)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

安装 Oracle Database 11g 第 2 版软件

以 oracle 用户身份执行以下任务以安装 Oracle Database 软件:

[oracle@racnode1 ~]$ id uid=1101(oracle) 
gid=1000(oinstall)
groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)

[oracle@racnode1 ~]$ DISPLAY=:0.0
[oracle@racnode1 ~]$ export DISPLAY

[oracle@racnode1 ~]$ cd /home/oracle/software/oracle/database
[oracle@racnode1 database]$ ./runInstaller

 

屏幕名称 响应 屏幕截图
Configure Security Updates 就本文而言,取消选中安全更新复选框,然后单击 [Next] 按钮继续。出现警告对话框时(该对话框指示您尚未提供电子邮件地址),单击[Yes] 按钮确认。
Installation Option 选择 Install database software only
Grid Options 选择 Real Application Clusters database installation 单选按钮(此为默认选择),确保选中 Node Name 窗口中的两个 Oracle RAC 节点。

 

接下来,单击 [SSH Connectivity] 按钮。输入 oracle 用户的 OS Password,然后单击 [Setup] 按钮。这会启动 SSH Connectivity 配置过程:

 

 

SSH 配置过程成功完成后,确认该对话框。

 

单击 [Test] 按钮结束该屏幕并验证无口令的 SSH 连接。
Product Languages 为您的环境进行合适的选择。
Database Edition 选择 Enterprise Edition
Installation Location 指定 Oracle 基目录和软件位置 (Oracle_home),如下所示:
   Oracle Base/u01/app/oracle 
   Software Location/u01/app/oracle/product/11.2.0/dbhome_1
Operating System Groups 分别为 SYSDBA 和 SYSOPER 权限选择操作系统组:
   Database Administrator (OSDBA) Group: dba 
   Database Operator (OSOPER) Group: oper
Prerequisite Checks 安装程序将执行一系列的检查以确定两个 Oracle RAC 节点是否满足安装和配置 Oracle Database 软件的最低要求。

 

从 11g 第 2 版 (11.2) 开始,如果任何检查失败,安装程序 (OUI) 将创建 shell 脚本程序(称为修复脚本)以解决许多不满足系统配置要求的问题。如果 OUI 检测到标记为“fixable”的不满足要求之任务,您可通过单击 [Fix & Check Again] 按钮生成修复脚本来轻松解决这一问题。

 

修复脚本是在安装期间生成的。安装程序将提示您以 root 身份在一个单独的终端会话中运行该脚本。当您运行该脚本时,它会将内核值提高到所需最小值,如有必要,会完成其他操作系统配置任务。

 

如果通过了所有的必备条件检查(我的安装就是这样的情况),OUI 继续转到 Summary 屏幕。
Summary 单击 [Finish] 开始安装。
Install Product 安装程序在两个 Oracle RAC 节点上执行 Oracle Database 软件安装过程。
Execute Configuration scripts 安装完成后,将提示您在两个 Oracle RAC 节点上运行/u01/app/oracle/product/11.2.0/dbhome_1/root.sh 脚本。以 root 用户帐户在集群的两个 Oracle RAC 节点(从执行安装的节点开始)上打开一个新的控制台窗口。

 

在 RAC 集群的所有节点上运行 root.sh 脚本。
[root@racnode1 ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh  [root@racnode2 ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh

 

返回到 OUI,确认“Execute Configuration scripts”对话框窗口。
Finish 在安装结束时,单击 [Close] 按钮退出 OUI。

 


25. 安装 Oracle Database 11g Examples(以前的随附 CD)

仅在集群中的一个 Oracle RAC 节点 (racnode1) 上执行以下 Oracle Database 11g Examples 软件安装过程!Oracle Universal Installer 会通过 SSH 将 Oracle Database Examples 软件安装到集群中的两个 Oracle RAC 节点。

至此已安装了 Oracle Database 11g 软件,您可以选择安装 Oracle Database 11g Examples。和 Oracle Database 软件的安装一样,以 oracle 用户身份只在集群的一个节点 ( racnode1) 上安装 Examples 软件。在安装过程中,OUI 会将二进制文件从此节点复制集群中的所有其他节点上。

验证终端 Shell 环境

在启动 Oracle Universal Installer (OUI) 之前,先以 Oracle Database 软件所有者的身份(本文为oracle)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

安装 Oracle Database 11g 第 2 版 Examples

以 oracle 用户身份执行以下任务以安装 Oracle Database Examples:

[oracle@racnode1 ~]$ cd /home/oracle/software/oracle/examples 
[oracle@racnode1 examples]$ ./runInstaller

 

屏幕名称 响应 屏幕截图
Installation Location 指定 Oracle 基目录和软件位置 (Oracle_home),如下所示:
   Oracle Base/u01/app/oracle 
   Software Location/u01/app/oracle/product/11.2.0/dbhome_1
Prerequisite Checks 安装程序将执行一系列的检查以确定两个 Oracle RAC 节点是否满足安装和配置 Oracle Database Examples 软件的最低要求。

 

从 11g 第 2 版 (11.2) 开始,如果任何检查失败,安装程序 (OUI) 将创建 shell 脚本程序(称为修复脚本)以解决许多不满足系统配置要求的问题。如果 OUI 检测到标记为“fixable”的不满足要求之任务,您可通过单击 [Fix & Check Again] 按钮生成修复脚本来轻松解决这一问题。

 

修复脚本是在安装期间生成的。安装程序将提示您以 root 身份在一个单独的终端会话中运行该脚本。当您运行该脚本时,它会将内核值提高到所需最小值,如有必要,会完成其他操作系统配置任务。

 

如果通过了所有的必备条件检查(我的安装就是这样的情况),OUI 继续转到 Summary 屏幕。
Summary 单击 [Finish] 开始安装。
Install Product 安装程序在两个 Oracle RAC 节点上执行 Oracle Database Examples 软件安装过程。
Finish 在安装结束时,单击 [Close] 按钮退出 OUI。

 


26. 创建 Oracle 集群数据库

仅应在集群的一个 Oracle RAC 节点 (racnode1) 上执行数据库创建过程。

我们将使用 Oracle Database Configuration Assistant (DBCA) 创建集群化数据库。

在执行 DBCA 前,确保为 $ORACLE_BASE/product/11.2.0/dbhome_1 环境正确设置了$ORACLE_HOME 和 $PATH 环境变量。第 13 节中讲述了如何在 oracle 用户帐户的登录脚本中设置环境变量。

在开始创建集群化数据库之前,还应确保现已安装的所有服务(Oracle TNS 监听器、Oracle Clusterware 进程等)正在运行。

[oracle@racnode1 ~]$ su - grid -c "crs_stat -t -v" 
Password: *********
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.FRA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora....DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.eons ora.eons.type 0/3 0/ ONLINE ONLINE racnode1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/5 0/0 OFFLINE OFFLINE
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....E1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora....de1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora....de1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora....de1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....E2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora....de2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora....de2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora....de2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1

验证终端 Shell 环境

在启动 Database Configuration Assistant (DBCA) 之前,先以 Oracle Database 软件所有者的身份(本文为 oracle)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

创建集群化数据库

要开始数据库创建过程,以 oracle 用户身份运行以下命令:

[oracle@racnode1 ~]$ dbca &

 

屏幕名称 响应 屏幕截图
Welcome 屏幕 选择 Oracle Real Application Clusters database
Operations 选择 Create a Database
Database Templates 选择 Custom Database
Database Identification 集群数据库配置。 
   Configuration Type: Admin-Managed

 

数据库命名。 
   Global Database Name: racdb.idevelopment.info
   SID Prefix: racdb

 

注:对于数据库域,我使用了 idevelopment.info。您可以使用任何数据库域请记住,此域不必为有效的 DNS 域。

节点选择。 
单击 [Select All] 按钮选择所有服务器:racnode1 和racnode2

Management Options 保留默认选项 Configure Enterprise Manager / Configure Database Control for local management
Database Credentials 我选择了 Use the Same Administrative Password for All Accounts。输入口令(两次)并确保此口令不是以数字开头。
Database File Locations 指定数据库文件的存储类型和存储位置。 
   Storage Type: Automatic Storage Management (ASM) 
   Storage Locations: Use Oracle-Managed Files 
     Database Area: +RACDB_DATA
Specify ASMSNMP Password 指定 ASM 实例的 ASMSNMP 口令。
Recovery Configuration 选中 Specify Flash Recovery Area 选项。

 

对于 Fast Recovery Area,单击 [Browse] 按钮并选择磁盘组名 +FRA

 

我使用的磁盘组大小约为 33GB。定义快速恢复区大小时,用整个卷的大小减去其 10%(用于开销)— (33-10%=30 GB)。我使用了 30 GB ( 30413 MB) 的 Fast Recovery Area Size
Database Content 我对所有数据库组件(和目标表空间)保留其默认设置,但选择 Sample Schemas 也完全可以。自从我们安装了 Oracle Database 11g Examples,就可以使用该选项了。
Initialization Parameters 根据您的环境更改任意参数。我保留了所有这些参数的默认设置。
Database Storage 根据您的环境更改任意参数。我保留了所有这些参数的默认设置。
Creation Options 保留默认选项 Create Database。我还始终选择 Generate Database Creation Scripts。单击 Finish 启动数据库创建过程。确认数据库创建报告和脚本生成对话框后,开始创建数据库。

在“Summary”屏幕上单击 OK

End of Database Creation 在数据库创建结束时,退出 DBCA。


完成 DBCA 后,您就启动了一个功能完善的 Oracle RAC 集群!

验证集群化数据库已开启

[oracle@racnode1 ~]$ su - grid -c "crsctl status resource -w 
\"TYPE co 'ora'\" -t"

Password: *********
--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.CRS.dg
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.FRA.dg
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.LISTENER.lsnr
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.RACDB_DATA.dg
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.asm
ONLINE ONLINE racnode1 Started
ONLINE ONLINE racnode2 Started
ora.eons
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.gsd
OFFLINE OFFLINE racnode1
OFFLINE OFFLINE racnode2
ora.net1.network
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.ons
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
ora.registry.acfs
ONLINE ONLINE racnode1
ONLINE ONLINE racnode2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racnode1
ora.oc4j
1 OFFLINE OFFLINE
ora.racdb.db
1 ONLINE ONLINE racnode1 Open
2 ONLINE ONLINE racnode2 Open

ora.racnode1.vip
1 ONLINE ONLINE racnode1
ora.racnode2.vip
1 ONLINE ONLINE racnode2
ora.scan1.vip
1 ONLINE ONLINE racnode1

Oracle Enterprise Manager

如果您配置了 Oracle Enterprise Manager (Database Control),可以用它查看数据库的配置和当前状态。

本示例的 URL 为:https://racnode1:1158/em

[oracle@racnode1 ~]$ emctl status dbconsole 
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
https://racnode1:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is running.
------------------------------------------------------------------
Logs are generated in directory
/u01/app/oracle/product/11.2.0/dbhome_1/racnode1_racdb/sysman/log

 

图 18:Oracle Enterprise Manager —(数据库控制台)

 


27. 数据库创建后任务(可选)

为了增强可用性和数据库管理,本节提供几个可在新的 Oracle 11g 上执行的可选任务。

重新编译无效对象

运行 utlrp.sql 脚本立即重新编译所有无效的 PL/SQL 程序包,而不是在首次访问它们时再重新编译。这是个可选步骤,但建议您选择该步骤。

[oracle@racnode1 ~]$ sqlplus / as sysdba 
SQL> @?/rdbms/admin/utlrp.sql

在 RAC 环境中启用存档日志

无论是单个实例还是集群化数据库,Oracle 都会跟踪对数据库块的所有更改并记录到联机重做日志文件中。在 Oracle RAC 环境中,每个实例将具有自己的联机重做日志文件集,称为线程。每个 Oracle 实例将以循环方式使用其联机重做日志组。一个联机重做日志填满之后,Oracle 将转至下一个联机重做日志。如果数据库处于“存档日志模式”,Oracle 将创建该联机重做日志的一个副本,然后再对其进行重用。一个线程至少必须包含两个联机重做日志(或联机重做日志组)。对于单个实例的配置也同样如此。单个实例至少必须包含两个联机重做日志(或联机重做日志组)。

联机重做日志文件的大小完全独立于另一个实例的重做日志大小。尽管在大多数配置中该大小是相同的,但是该大小可能会随每个节点的负载和备份/恢复注意事项而异。还值得一提的是,每个实例都具有对自己的联机重做日志文件的独占式写访问权限。但是在正确配置的 RAC 环境中,如果某个实例异常中断,每个实例都可以读取该实例的当前联机重做日志文件以执行实例恢复。因此,需要将联机重做日志置于一个共享存储设备上(就像数据库文件一样)。

如上文所述,Oracle 以循环方式写入其联机重做日志文件。当前的联机重做日志填满之后,Oracle 将转至下一个联机重做日志。为方便进行介质恢复,Oracle 允许 DBA 将数据库置于“存档日志模式”,以在联机重做日志填满后(并且得到重用之前)创建它的副本。该过程称为存档。

利用 Database Configuration Assistant (DBCA),用户可以将一个新数据库配置为存档日志模式,但是大多数 DBA 在最初创建数据库期间选择跳过该选项。在这种情况下,数据库没有处于存档日志模式,只需将数据库置于存档日志模式。但是请注意,这将需要短暂的数据库中断。在 Oracle RAC 配置的一个节点上,执行以下任务将支持 RAC 的数据库置于存档日志模式。在本文中,我将使用运行 racdb1 实例的racnode1 节点:

 

  1. 以 oracle 用户身份登录到一个节点(即 racnode1),通过在当前实例中将 cluster_database设置为 FALSE 来禁用集群实例参数:
    [oracle@racnode1 ~]$ sqlplus / as sysdba  

    SQL> alter system set cluster_database=false scope=spfile sid='racdb1';

    System altered.
  2. 以 oracle 用户身份关闭所有 访问集群化数据库的实例:
    [oracle@racnode1 ~]$ srvctl stop database -d racdb
  3. 使用本地实例,挂载 数据库:
    [oracle@racnode1 ~]$ sqlplus / as sysdba  

    SQL*Plus: Release 11.2.0.1.0 Production on Sat Nov 21 19:26:47 2009

    Copyright (c) 1982, 2009, Oracle. All rights reserved.

    Connected to an idle instance.

    SQL> startup mount
    ORACLE instance started.

    Total System Global Area 1653518336 bytes
    Fixed Size 2213896 bytes
    Variable Size 1073743864 bytes
    Database Buffers 570425344 bytes
    Redo Buffers 7135232 bytes
  4. 启用存档功能:
    SQL> alter database archivelog;  

    Database altered.
  5. 通过在当前实例中将实例参数 cluster_database 修改为 TRUE,重新启用对集群的支持:
    SQL> alter system set cluster_database=true scope=spfile sid='racdb1';  

    System altered.
  6. 关闭本地实例:
    SQL> shutdown immediate  
    ORA-01109: database not open

    Database dismounted.
    ORACLE instance shut down.
  7. 以 oracle 帐户身份使用 srvctl 命令重启所有实例:
    [oracle@racnode1 ~]$ srvctl start database -d racdb
  8. 登录到本地实例,验证存档日志模式已启用:
    [oracle@racnode1 ~]$ sqlplus / as sysdba  
    SQL*Plus: Release 11.2.0.1.0 Production on Sat Nov 21 19:33:38 2009
    Copyright (c) 1982, 2009, Oracle. All rights reserved.

    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options

    SQL> archive log list
    Database log mode Archive Mode
    Automatic archival Enabled
    Archive destination USE_DB_RECOVERY_FILE_DEST
    Oldest online log sequence 69
    Next log sequence to archive 70
    Current log sequence 70


启用存档日志模式后,RAC 配置中的每个实例都可以自动存档重做日志!

下载并安装自定义 Oracle 数据库脚本

DBA 依赖 Oracle 的数据字典视图和动态性能视图以支持并更好地管理他们的数据库。尽管这些视图提供一个简单方便的机制来查询有关数据库的重要信息,但是拥有一个用于查询这些视图的准确、随时可用的 SQL 脚本集合是有帮助的。

在本节中,您将下载并安装 Oracle DBA 脚本集合,用于管理数据库的多个方面,包括空间管理、性能、备份、安全性和会话管理。可以使用以下链接http://www.idevelopment.info/data/Oracle/DBA_scripts/common.zip 下载 Oracle DBA 脚本存档。使用oracle 用户帐户将 common.zip 存档下载到集群中每个节点的 $ORACLE_BASE 目录。对于本文,将common.zip 存档复制到 /u01/app/oracle。接下来,将存档文件解压缩到 $ORACLE_BASE 目录。

例如,使用 oracle 用户帐户在 Oracle RAC 集群中的每个节点上执行以下命令:

[oracle@racnode1 ~]$ mv common.zip /u01/app/oracle 
[oracle@racnode1 ~]$ cd /u01/app/oracle
[oracle@racnode1 ~]$ unzip common.zip

最后一步是验证(或设置)当前 UNIX shell 相应的环境变量,以确保在任何目录中都可以从 SQL*Plus 内运行 Oracle SQL 脚本。对于 UNIX,验证以下环境变量已设置并包含在您的登录 shell 脚本中:

ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
export ORACLE_PATH

注:ORACLE_PATH 环境变量应该已在 .bash_profile 登录脚本中设置,该登录脚本是在为 oracle 用户帐户创建登录脚本一节中创建的。

既然 Oracle DBA 脚本已解压缩并且 UNIX 环境变量 ( $ORACLE_PATH) 已设置为相应的目录,现在您登录到 SQL*Plus 后应该能够运行 $ORACLE_BASE/common/oracle/sql 中的任何 SQL 脚本。例如,要在以 DBA 用户身份登录到 Oracle 数据库后查询表空间信息,使用以下命令:

SQL> @dba_tablespaces

Status Tablespace TS Type Ext. Seg. Tablespace Used Pct.
Name Mgt. Mgt. Size (in bytes) Used
------- ----------- ------------ ------ ------- ------------- ------------ -----
ONLINE SYSAUX PERMANENT LOCAL AUTO 629,145,600 511,967,232 81
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,059,061,760 948,043,776 90
ONLINE USERS PERMANENT LOCAL AUTO 5,242,880 1,048,576 20
ONLINE SYSTEM PERMANENT LOCAL MANUAL 734,003,200 703,135,744 96
ONLINE EXAMPLE PERMANENT LOCAL AUTO 157,286,400 85,131,264 54
ONLINE UNDOTBS2 UNDO LOCAL MANUAL 209,715,200 20,840,448 10
ONLINE TEMP TEMPORARY LOCAL MANUAL 75,497,472 66,060,288 88
---------------- ---------------- ----
avg 63
sum 2,869,952,512 2,336,227,328

7 rows selected.

要在登录到 SQL*Plus 后获得所有可用 Oracle DBA 脚本的列表,运行 help.sql 脚本:

SQL> @help.sql  

========================================
Automatic Shared Memory Management
========================================
asmm_components.sql

========================================
Automatic Storage Management
========================================
asm_alias.sql
asm_clients.sql
asm_diskgroups.sql
asm_disks.sql
asm_disks_perf.sql
asm_drop_files.sql
asm_files.sql
asm_files2.sql
asm_templates.sql

< --- SNIP --- >

perf_top_sql_by_buffer_gets.sql
perf_top_sql_by_disk_reads.sql

========================================
Workspace Manager
========================================
wm_create_workspace.sql
wm_disable_versioning.sql
wm_enable_versioning.sql
wm_freeze_workspace.sql
wm_get_workspace.sql
wm_goto_workspace.sql
wm_merge_workspace.sql
wm_refresh_workspace.sql
wm_remove_workspace.sql
wm_unfreeze_workspace.sql
wm_workspaces.sql

 


28. 创建/更改表空间

创建集群化数据库时,我们保留了所有表空间的默认大小设置。如果您将一个大型驱动器用作共享存储,则可能想创建一个大小可以调整的测试数据库。

以下是几个可为测试数据库修改和创建所有表空间的可选的 SQL 命令。请记住,此示例中使用的数据库文件名称(OMF 文件)可能与 Oracle Database Configuration Assistant (DBCA) 为您的环境创建的数据库文件名称不同。完成本节后,在适合的地方替换在您的环境中创建的数据文件名。可以使用以下查询确定环境中的文件名:

SQL> select tablespace_name, file_name
2 from dba_data_files
3 union
4 select tablespace_name, file_name
5 from dba_temp_files;

TABLESPACE_NAME FILE_NAME
--------------- --------------------------------------------------
EXAMPLE +RACDB_DATA/racdb/datafile/example.263.703530435
SYSAUX +RACDB_DATA/racdb/datafile/sysaux.260.703530411
SYSTEM +RACDB_DATA/racdb/datafile/system.259.703530397
TEMP +RACDB_DATA/racdb/tempfile/temp.262.703530429
UNDOTBS1 +RACDB_DATA/racdb/datafile/undotbs1.261.703530423
UNDOTBS2 +RACDB_DATA/racdb/datafile/undotbs2.264.703530441
USERS +RACDB_DATA/racdb/datafile/users.265.703530447

7 rows selected.

 

[oracle@racnode1 ~]$ sqlplus "/ as sysdba"  
SQL> create user scott identified by tiger default tablespace users;
User created.
SQL> grant dba, resource, connect to scott;
Grant succeeded.
SQL> alter database datafile '+RACDB_DATA/racdb/datafile/users.265.703530447'
resize 1024m;

Database altered.
SQL> alter tablespace users add datafile '+RACDB_DATA' size 1024m autoextend off;
Tablespace altered.
SQL> create tablespace indx datafile '+RACDB_DATA' size 1024m
2 autoextend on next 100m maxsize unlimited
3 extent management local autoallocate
4 segment space management auto;
Tablespace created.
SQL> alter database datafile '+RACDB_DATA/racdb/datafile/system.259.703530397'
resize 1024m;

Database altered.
SQL> alter database datafile '+RACDB_DATA/racdb/datafile/sysaux.260.703530411'
resize 1024m;

Database altered.
SQL> alter database datafile '+RACDB_DATA/racdb/datafile/undotbs1.261.703530423'
resize 1024m;

Database altered.
SQL> alter database datafile '+RACDB_DATA/racdb/datafile/undotbs2.264.703530441'
resize 1024m;

Database altered.
SQL> alter database tempfile '+RACDB_DATA/racdb/tempfile/temp.262.703530429'
resize 1024m;

Database altered.

以下是我为我的测试数据库环境定义的表空间快照:

Status  Tablespace  TS Type      Ext.   Seg.    Tablespace    Used         Pct.
Name Mgt. Mgt. Size (in bytes) Used
------- ----------- ------------ ------ ------- ------------- ------------ -----
ONLINE SYSAUX PERMANENT LOCAL AUTO 1,073,741,824 512,098,304 48
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,073,741,824 948,043,776 88
ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 2,097,152 0
ONLINE SYSTEM PERMANENT LOCAL MANUAL 1,073,741,824 703,201,280 65
ONLINE EXAMPLE PERMANENT LOCAL AUTO 157,286,400 85,131,264 54
ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 1,048,576 0
ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1,073,741,824 20,840,448 2
ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 66,060,288 6
---------------- ---------------- ---------
avg 33
sum 8,747,220,992 2,338,521,088

8 rows selected.

 


29. 验证 Oracle Grid Infrastructure 和数据库配置

可以在集群中的任意 Oracle RAC 节点上执行以下 Oracle Clusterware 和 Oracle RAC 验证检查。就本文而言,我将以 oracle 操作系统用户身份只从 racnode1 节点执行这些检查。

本节所述大多数检查使用服务器控制实用程序 (SRVCTL) 来进行,并且这些检查可以作为 oracle 或grid 操作系统用户来执行。为 SRVCTL 定义的节点级任务有五个:

 

  • 添加和删除节点级应用程序
  • 设置和取消设置节点级应用程序的环境
  • 管理节点应用程序
  • 管理 ASM 实例
  • 启动和停止一组包括虚拟 IP 地址、监听器、Oracle 通知服务和 Oracle Enterprise Manager 代理在内的程序(出于维护目的)。


Oracle 还提供了 Oracle 集群件控制 (CRSCTL) 实用程序。CRSCTL 是用户与 Oracle Clusterware 之间的接口,用于解析和调用 Oracle Clusterware 对象的 Oracle Clusterware API。

Oracle Clusterware 11g 第 2 版 (11.2) 引进了可识别集群的 命令,可用来对集群执行检查、启动和停止操作。根据所进行的操作,您可以从集群中的任意节点对集群中的另一节点或所有节点运行这些命令。

可以使用 CRSCTL 命令对 Oracle Clusterware 执行如下几个操作:

 

  • 启动和停止 Oracle Clusterware 资源
  • 启用和禁用 Oracle Clusterware 后台程序
  • 检查集群的运行状况
  • 管理代表第三方应用程序的资源
  • 将 Intelligent Platform Management Interface (IPMI) 与 Oracle Clusterware 集成,提供故障隔离支持并确保集群完整性
  • 调试 Oracle Clusterware 组件


就本文(本节)而言,我们只执行“检查集群的运行状况”这一操作,将通过集群化的(可识别集群的)命令来执行该操作:

crsctl check cluster

在 Oracle Clusterware 11g 第 2 版 (11.2) 中,有许多子程序和命令已不再使用:

 

  • crs_stat
  • crs_register
  • crs_unregister
  • crs_start
  • crs_stop
  • crs_getperm
  • crs_profile
  • crs_relocate
  • crs_setperm
  • crsctl check crsd
  • crsctl check cssd
  • crsctl check evmd
  • crsctl debug log
  • crsctl set css votedisk
  • crsctl start resources
  • crsctl stop resources


检查集群的运行状况 —(集群化命令)

以  grid 用户身份运行以下命令。
[grid@racnode1 ~]$ crsctl check cluster 
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

所有 Oracle 实例 —(数据库状态)

[oracle@racnode1 ~]$ srvctl status database -d racdb 
Instance racdb1 is running on node racnode1
Instance racdb2 is running on node racnode2

单个 Oracle 实例 —(特定实例的状态)

[oracle@racnode1 ~]$ srvctl status instance -d racdb -i racdb1 
Instance racdb1 is running on node racnode1

节点应用程序 —(状态)

[oracle@racnode1 ~]$ srvctl status nodeapps 
VIP racnode1-vip is enabled
VIP racnode1-vip is running on node: racnode1
VIP racnode2-vip is enabled VIP racnode2-vip is running on node: racnode2
Network is enabled Network is running on node: racnode1
Network is running on node: racnode2 GSD is disabled
GSD is not running on node: racnode1
GSD is not running on node: racnode2
ONS is enabled
ONS daemon is running on node: racnode1
ONS daemon is running on node: racnode2
eONS is enabled eONS daemon is running on node: racnode1
eONS daemon is running on node: racnode2

节点应用程序 —(配置)

[oracle@racnode1 ~]$ srvctl config nodeapps 
VIP exists.:racnode1 VIP exists.: /racnode1-vip/192.168.1.251/255.255.255.0/eth0
VIP exists.:racnode2
VIP exists.: /racnode2-vip/192.168.1.252/255.255.255.0/eth0
GSD exists.
ONS daemon exists. Local port 6100, remote port 6200
eONS daemon exists. Multicast port 24057, multicast IP address 234.194.43.168,
listening port 2016

列出配置的所有数据库

[oracle@racnode1 ~]$ srvctl config database racdb

数据库 —(配置)

[oracle@racnode1 ~]$ srvctl config database -d racdb -a 
Database unique name: racdb
Database name: racdb
Oracle home: /u01/app/oracle/product/11.2.0/dbhome_1
Oracle user: oracle
Spfile: +RACDB_DATA/racdb/spfileracdb.ora
Domain: idevelopment.info
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: racdb
Database instances: racdb1,racdb2
Disk Groups: RACDB_DATA,FRA
Services:
Database is enabled
Database is administrator managed

ASM —(状态)

[oracle@racnode1 ~]$ srvctl status asm 
ASM is running on racnode1,racnode2

ASM —(配置)

$ srvctl config asm -a 
ASM home: /u01/app/11.2.0/grid
ASM listener: LISTENER
ASM is enabled.

TNS 监听器 —(状态)

[oracle@racnode1 ~]$ srvctl status listener 
Listener LISTENER is enabled
Listener LISTENER is running on node(s): racnode1,racnode2

TNS 监听器 —(配置)

[oracle@racnode1 ~]$ srvctl config listener -a 
Name: LISTENER
Network: 1, Owner: grid
Home:
/u01/app/11.2.0/grid on node(s) racnode2,racnode1
End points: TCP:1521

SCAN —(状态)

[oracle@racnode1 ~]$ srvctl status scan 
SCAN VIP scan1 is enabled
SCAN VIP scan1 is running on node racnode1

SCAN —(配置)

[oracle@racnode1 ~]$ srvctl config scan 
SCAN name: racnode-cluster-scan, Network: 1/192.168.1.0/255.255.255.0/eth0
SCAN VIP name: scan1, IP: /racnode-cluster-scan/192.168.1.187

VIP —(特定节点的状态)

[oracle@racnode1 ~]$ srvctl status vip -n racnode1 
VIP racnode1-vip is enabled
VIP racnode1-vip is running on node: racnode1

[oracle@racnode1 ~]$ srvctl status vip -n racnode2
VIP racnode2-vip is enabled
VIP racnode2-vip is running on node: racnode2

VIP —(特定节点的配置)

[oracle@racnode1 ~]$ srvctl config vip -n racnode1 
VIP exists.:racnode1
VIP exists.: /racnode1-vip/192.168.1.251/255.255.255.0/eth0

[oracle@racnode1 ~]$ srvctl config vip -n racnode2
VIP exists.:racnode2
VIP exists.: /racnode2-vip/192.168.1.252/255.255.255.0/eth0

节点应用程序配置 —(VIP、GSD、ONS、监听器)

[oracle@racnode1 ~]$ srvctl config nodeapps -a -g -s -l 
-l option has been deprecated and will be ignored.
VIP exists.:racnode1
VIP exists.: /racnode1-vip/192.168.1.251/255.255.255.0/eth0
VIP exists.:racnode2
VIP exists.: /racnode2-vip/192.168.1.252/255.255.255.0/eth0
GSD exists.
ONS daemon exists. Local port 6100, remote port 6200
Name: LISTENER
Network: 1, Owner: grid
Home:
/u01/app/11.2.0/grid on node(s) racnode2,racnode1
End points: TCP:1521

验证所有集群节点间的时钟同步

[oracle@racnode1 ~]$ cluvfy comp clocksync -verbose  

Verifying Clock Synchronization across the cluster nodes

Checking if Clusterware is installed on all nodes...
Check of Clusterware install passed

Checking if CTSS Resource is running on all nodes...
Check: CTSS Resource running on all nodes
Node Name Status
------------------------------------ ------------------------
racnode1 passed

Result: CTSS resource check passed

Querying CTSS for time offset on all nodes...
Result: Query of CTSS for time offset passed

Check CTSS state started...
Check: CTSS state
Node Name State
------------------------------------ ------------------------
racnode1 Active
CTSS is in Active state. Proceeding with check of clock time offsets on all nodes...
Reference Time Offset Limit: 1000.0 msecs
Check: Reference Time Offset
Node Name Time Offset Status
------------ ------------------------ ------------------------
racnode1 0.0 passed


Time offset is within the specified limits on the following set of nodes: "[racnode1]"
Result: Check of clock time offsets passed

Oracle Cluster Time Synchronization Services check passed

Verification of Clock Synchronization across the cluster nodes was successful.

集群中所有正在运行的实例 — (SQL)


SELECT
inst_id
, instance_number inst_no
, instance_name inst_name
, parallel
, status
, database_status db_status
, active_state state
, host_name host
FROM gv$instance
ORDER BY inst_id;

INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST
-------- -------- ---------- --- ------- ------------ --------- -------
1 1 racdb1 YES OPEN ACTIVE NORMAL racnode1
2 2 racdb2 YES OPEN ACTIVE NORMAL racnode2

所有数据库文件及它们所在的 ASM 磁盘组 — (SQL)


select name from v$datafile
union
select member from v$logfile
union
select name from v$controlfile
union
select name from v$tempfile;

NAME
-------------------------------------------
+FRA/racdb/controlfile/current.256.703530389
+FRA/racdb/onlinelog/group_1.257.703530391
+FRA/racdb/onlinelog/group_2.258.703530393
+FRA/racdb/onlinelog/group_3.259.703533497
+FRA/racdb/onlinelog/group_4.260.703533499
+RACDB_DATA/racdb/controlfile/current.256.703530389
+RACDB_DATA/racdb/datafile/example.263.703530435
+RACDB_DATA/racdb/datafile/indx.270.703542993
+RACDB_DATA/racdb/datafile/sysaux.260.703530411
+RACDB_DATA/racdb/datafile/system.259.703530397
+RACDB_DATA/racdb/datafile/undotbs1.261.703530423
+RACDB_DATA/racdb/datafile/undotbs2.264.703530441
+RACDB_DATA/racdb/datafile/users.265.703530447
+RACDB_DATA/racdb/datafile/users.269.703542943
+RACDB_DATA/racdb/onlinelog/group_1.257.703530391
+RACDB_DATA/racdb/onlinelog/group_2.258.703530393
+RACDB_DATA/racdb/onlinelog/group_3.266.703533497
+RACDB_DATA/racdb/onlinelog/group_4.267.703533499
+RACDB_DATA/racdb/tempfile/temp.262.703530429

19 rows selected.

ASM 磁盘卷 — (SQL)


SELECT path
FROM v$asm_disk;

PATH
----------------------------------
ORCL:CRSVOL1
ORCL:DATAVOL1
ORCL:FRAVOL1

 


30. 启动/停止集群

至此,已为 Oracle RAC 11g 第 2 版进行了所有安装和配置。Oracle Grid Infrastructure 已由 grid 用户安装,Oracle RAC 软件已由 oracle 用户安装。一个名为 racdb 的功能完善的集群化数据库正在运行。

完成所有这些艰巨任务之后,您可能会问:“那么我怎样来启动和停止服务?”。如果您遵循了本指南中的说明,则所有服务(包括 Oracle Clusterware、ASM、网络、SCAN、VIP、Oracle Database 等)应在 Linux 节点每次重新引导时自动启动。

但有时为了进行维护,您可能想在某节点上关闭 Oracle 服务,稍后再重启 Oracle Clusterware 系统。或者,您可能发现 Enterprise Manager 没有运行而需要启动它。本节为在本地服务器 ( racnode1) 上停止和启动 Oracle Clusterware 系统提供所需命令。

以下停止/启动操作需要以 root 身份来执行。

在本地服务器上停止 Oracle Clusterware 系统

在 racnode1 节点上使用 crsctl stop cluster 命令停止 Oracle Clusterware 系统:

[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster 
CRS-2673: Attempting to stop 'ora.crsd' on 'racnode1'
CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on
'racnode1'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'racnode1'
CRS-2673: Attempting to stop 'ora.CRS.dg' on 'racnode1'
CRS-2673: Attempting to stop 'ora.racdb.db' on 'racnode1'
CRS-2673: Attempting to stop 'ora.registry.acfs' on 'racnode1'
CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'racnode1'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.racnode1.vip' on 'racnode1'
CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.scan1.vip' on 'racnode1'
CRS-2677: Stop of 'ora.scan1.vip' on 'racnode1' succeeded
CRS-2672: Attempting to start 'ora.scan1.vip' on 'racnode2'
CRS-2677: Stop of 'ora.racnode1.vip' on 'racnode1' succeeded
CRS-2672: Attempting to start 'ora.racnode1.vip' on 'racnode2'
CRS-2677: Stop of 'ora.registry.acfs' on 'racnode1' succeeded
CRS-2676: Start of 'ora.racnode1.vip' on 'racnode2' succeeded

<-- Notice racnode1 VIP moved to racnode2
CRS-2676: Start of 'ora.scan1.vip' on 'racnode2' succeeded

<-- Notice SCAN moved to racnode2
CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'racnode2'
CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'racnode2' succeeded

<-- Notice LISTENER_SCAN1 moved to racnode2
CRS-2677: Stop of 'ora.CRS.dg' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.racdb.db' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.FRA.dg' on 'racnode1'
CRS-2673: Attempting to stop 'ora.RACDB_DATA.dg' on 'racnode1'
CRS-2677: Stop of 'ora.RACDB_DATA.dg' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.FRA.dg' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'racnode1'
CRS-2677: Stop of 'ora.asm' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.ons' on 'racnode1'
CRS-2673: Attempting to stop 'ora.eons' on 'racnode1'
CRS-2677: Stop of 'ora.ons' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.net1.network' on 'racnode1'
CRS-2677: Stop of 'ora.net1.network' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.eons' on 'racnode1' succeeded
CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'racnode1' has
completed
CRS-2677: Stop of 'ora.crsd' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'racnode1'
CRS-2673: Attempting to stop 'ora.ctssd' on 'racnode1'
CRS-2673: Attempting to stop 'ora.evmd' on 'racnode1'
CRS-2673: Attempting to stop 'ora.asm' on 'racnode1'
CRS-2677: Stop of 'ora.cssdmonitor' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.evmd' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.ctssd' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.asm' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'racnode1'
CRS-2677: Stop of 'ora.cssd' on 'racnode1' succeeded
CRS-2673: Attempting to stop 'ora.diskmon' on 'racnode1'
CRS-2677: Stop of 'ora.diskmon' on 'racnode1' succeeded

注:在运行“ crsctl stop cluster”命令之后,如果 Oracle Clusterware 管理的资源中有任何一个还在运行,则整个命令失败。使用 -f 选项无条件地停止所有资源并停止 Oracle Clusterware 系统。

另请注意,可通过指定 -all 选项在集群中所有服务器上停止 Oracle Clusterware 系统。以下命令将在racnode1 和 racnode2 上停止 Oracle Clusterware 系统:

[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster -all

在本地服务器上启动 Oracle Clusterware 系统

在 racnode1 节点上使用 crsctl start cluster 命令启动 Oracle Clusterware 系统:

[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster 
CRS-2672: Attempting to start 'ora.cssdmonitor' on 'racnode1'
CRS-2676: Start of 'ora.cssdmonitor' on 'racnode1' succeeded
CRS-2672: Attempting to start 'ora.cssd' on 'racnode1'
CRS-2672: Attempting to start 'ora.diskmon' on 'racnode1'
CRS-2676: Start of 'ora.diskmon' on 'racnode1' succeeded
CRS-2676: Start of 'ora.cssd' on 'racnode1' succeeded
CRS-2672: Attempting to start 'ora.ctssd' on 'racnode1'
CRS-2676: Start of 'ora.ctssd' on 'racnode1' succeeded
CRS-2672: Attempting to start 'ora.evmd' on 'racnode1'
CRS-2672: Attempting to start 'ora.asm' on 'racnode1'
CRS-2676: Start of 'ora.evmd' on 'racnode1' succeeded
CRS-2676: Start of 'ora.asm' on 'racnode1' succeeded
CRS-2672: Attempting to start 'ora.crsd' on 'racnode1'
CRS-2676: Start of 'ora.crsd' on 'racnode1' succeeded

注:可通过指定 -all 选项在集群中所有服务器上启动 Oracle Clusterware 系统。

[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -all

还可以通过列出服务器(各服务器之间以空格分隔)在集群中一个或多个指定的服务器上启动 Oracle Clusterware 系统:

[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -n 
racnode1 racnode2

使用 SRVCTL 启动/停止所有实例

最后,可使用以下命令来启动/停止所有实例及相关服务:

[oracle@racnode1 ~]$ srvctl stop database -d racdb  
[oracle@racnode1 ~]$ srvctl start database -d racdb

 


31. 故障排除

确保 RAC 节点名没有出现在环回地址中

确保 /etc/hosts 文件的环回地址中包含节点名(racnode1 或 racnode2)。如果计算名出现在环回地址条目中,如下所示:

127.0.0.1 racnode1 localhost.localdomain localhost
需要按如下所示将其删除:
127.0.0.1 localhost.localdomain localhost

如果 RAC 节点名出现在环回地址中,在 RAC 安装过程中会收到以下错误消息:

ORA-00603: ORACLE server session terminated by fatal error
或者
ORA-29702: error occurred in Cluster Group Service operation

Openfiler — 逻辑卷在引导时未激活

使用连接到 Openfiler 服务器的 USB 驱动器时,出现了一个我多次遇到的问题。重新引导 Openfiler 服务器后,系统能够识别 USB 驱动器,但是无法加载逻辑卷,它会将以下消息写入 /var/log/messages—(也可通过 dmesg 获得):

iSCSI Enterprise Target Software - version 0.4.14
iotype_init(91) register fileio
iotype_init(91) register blockio
iotype_init(91) register nullio
open_path(120) Can't open /dev/rac1/crs -2
fileio_attach(268) -2
open_path(120) Can't open /dev/rac1/asm1 -2
fileio_attach(268) -2
open_path(120) Can't open /dev/rac1/asm2 -2
fileio_attach(268) -2
open_path(120) Can't open /dev/rac1/asm3 -2
fileio_attach(268) -2
open_path(120) Can't open /dev/rac1/asm4 -2
fileio_attach(268) -2

请注意,我不是说只有与 Openfiler 服务器连接的 USB 驱动器才会出现该问题。其他类型的驱动器也可能会出现该问题,但是,我只看到了 USB 驱动器出现了该问题!

如果您确实收到该错误,首先应在 Openfiler 服务器中使用 lvscan 命令检查所有逻辑卷的状态:

# lvscan   
inactive '/dev/rac1/crs' [2.00 GB] inherit
inactive '/dev/rac1/asm1' [115.94 GB] inherit
inactive '/dev/rac1/asm2' [115.94 GB] inherit
inactive '/dev/rac1/asm3' [115.94 GB] inherit
inactive '/dev/rac1/asm4' [115.94 GB] inherit

注意,每个逻辑卷的状态设置为 inactive —(工作系统上每个逻辑卷的状态应设置为 ACTIVE)。

目前,我知道有两种方法可以让 Openfiler 在重新引导时自动加载逻辑卷,下面将说明这两种方法。

方法 1

          首先,关闭集群中的两个 Oracle RAC 节点 — racnode1 和 racnode2。然后,在 Openfiler 服 务器中,针对每个后续的重新引导,手动将每个逻辑卷设置为 ACTIVE

    # lvchange -a y /dev/rac1/crs 
# lvchange -a y /dev/rac1/asm1
# lvchange -a y /dev/rac1/asm2
# lvchange -a y /dev/rac1/asm3
# lvchange -a y /dev/rac1/asm4

        也可以使用卷组更改命令将所有逻辑卷的状态设置为 active,如下所示:

    # vgscan   
Reading all physical volumes. This may take a while...
Found volume group "rac1" using metadata type lvm2

# vgchange -ay
5 logical volume(s) in volume group "rac1" now active

将每个逻辑卷设置为 active 后,使用 lvscan 命令再次验证状态:

# lvscan   
ACTIVE '/dev/rac1/crs' [2.00 GB] inherit
ACTIVE '/dev/rac1/asm1' [115.94 GB] inherit
ACTIVE '/dev/rac1/asm2' [115.94 GB] inherit
ACTIVE '/dev/rac1/asm3' [115.94 GB] inherit
ACTIVE '/dev/rac1/asm4' [115.94 GB] inherit

作为最后的测试,重新引导 Openfiler 服务器以确保引导过程之后每个逻辑卷会设置为 ACTIVE。验证在引导时会激活每个逻辑卷之后,检查 iSCSI 目标服务是否正在运行:

# service iscsi-target status 
ietd (pid 2668) is running...

最后,重新启动集群中的每个 Oracle RAC 节点(racnode1 和 racnode2)。

方法 2

该方法由 Martin Jones 友情提供。他的变通方法包括修改 /etc/rc.sysinit 脚本,主要是等待 USB 磁盘(在本例中为 /dev/sda)得到检测。对 /etc/rc.sysinit 脚本进行更改(见下面)之后,验证外部驱动器已打开电源,然后重新引导 Openfiler 服务器。

以下是 Openfiler 服务器上的 /etc/rc.sysinit 脚本的一小部分,其中包含 Martin 建议的更改(用 蓝色高亮显示):

..............................................................
# LVM2 initialization, take 2
if [ -c /dev/mapper/control ]; then
if [ -x /sbin/multipath.static ]; then
modprobe dm-multipath >/dev/null 2>&1
/sbin/multipath.static -v 0
if [ -x /sbin/kpartx ]; then
/sbin/dmsetup ls --target multipath --exec
"/sbin/kpartx -a"
fi
fi


if [ -x /sbin/dmraid ]; then
modprobe dm-mirror > /dev/null 2>&1
/sbin/dmraid -i -a y
fi


#-----
#----- MJONES - Customisation Start
#-----

# Check if /dev/sda is ready
while [ ! -e /dev/sda ]
do
echo "Device /dev/sda for first USB Drive is not yet ready."
echo "Waiting..."
sleep 5
done
echo "INFO - Device /dev/sda for first USB Drive is ready."

#-----
#----- MJONES - Customisation END
#-----

if [ -x /sbin/lvm.static ]; then
if /sbin/lvm.static vgscan > /dev/null 2>&1 ; then
action $"Setting up Logical Volume
Management:" /sbin/lvm.static vgscan --mknodes --ignorelockingfailure &&
/sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
fi
fi


# Clean up SELinux labels
if [ -n "$SELINUX" ]; then
for file in /etc/mtab /etc/ld.so.cache ; do
[ -r $file ] && restorecon $file >/dev/null 2>&1
done
fi
..............................................................

最后,重新启动集群中的每个 Oracle RAC 节点(racnode1 和 racnode2)。

 


32. 总结

Oracle11g RAC 允许 DBA 配置一个拥有优越的容错和负载平衡功能的数据库解决方案。然而,对于那些希望深入了解 Oracle11g RAC 的特性和优势的 DBA 而言,他们会发现即使一个小型 RAC 集群的配置成本也在 15,000 美元到 20,000 美元之间。

本文希望为您提供一个低成本的解决方案,这个方案使用 Oracle Enterprise Linux 和 iSCSI 技术建立和配置一个经济实惠的 Oracle 11g 第 2 版 RAC 集群。本文介绍的 RAC 解决方案总共需要大约 2,700 美元,可以为 DBA 提供一个功能完善的 Oracle 11g 第 2 版 RAC 集群。虽然本文使用的硬件对于教学目的而言足够稳定,但永远不应认为其适用于生产环境。

 


33. 致谢

像这样篇幅和复杂程度的文章通常并非出自一人之手。尽管本人能够记述构成此配置的组件并成功演示这些组件的有效性,但我要感谢其他几个帮助我成功编写本文的人。

首先,我要感谢来自 Oracle 的 Server BDE 团队的 Bane Radulovic。Bane 不仅向我介绍了 Openfiler,还与我共享了他对于该产品以及如何针对 Oracle RAC 充分利用该产品的经验和知识。他的研究和辛苦工作使得配置 Openfiler 的任务得以圆满完成。Bane 还参与了硬件建议和测试工作。

特别感谢 K Gopalakrishnan 的帮助,他提供了本文的 Oracle RAC 11g 概述一节。本节中有关 Oracle RAC 历史的很多内容可以在他的畅销书《Oracle Database 10g Real Application Clusters Handbook》中找到。此书受到希望成功实施 Oracle RAC 以及完全理解缓存融合 和全局资源目录 等多种高级服务的工作原理的 DBA 和开发人员的极力推荐。

最后,我想表达对以下供应商的感谢,他们慷慨地为本文提供了硬件:Seagate、Avocent Corporation和 Intel。

 


Jeffrey M. Hunter [www.idevelopment.info] 是一位 Oracle 认证专家、Java 开发认证专家、作者和Oracle ACE。Jeff 当前作为高级数据库管理员就职于宾夕法尼亚州匹兹堡市的 The DBA Zone, Inc.。

Jeff 的工作包括高级性能调优、Java 和 PL/SQL 编程、容量规划、数据库安全性以及 UNIX、Linux 和 Windows 服务器环境中的物理/逻辑数据库设计。Jeff 的其他兴趣还包括数学加密理论、Java 和 C 的编程语言处理器(编译器和解释器)、LDAP、编写基于 Web 的数据库管理工具,当然还有 Linux。

Jeff 作为高级数据库管理员和软件工程师拥有 16 年以上的工作经验,他的个人网站是:http://www.iDevelopment.info。Jeff 毕业于位于特洛克的加利福尼亚州立大学的 Stanislaus 分校,获得了计算机科学学士学位。

你可能感兴趣的:(http://www.oracle.com/technetwork/cn/articles/hunter-rac11gr2-iscsi-3-092230-zhs.html#30)