| 第 1 页 第 2 页 第 3 页 在 Oracle VM 和 Oracle Enterprise Linux 上构建您自己的 Oracle 扩展 RAC 集群(续) 本指南中的信息未经 Oracle 验证,且不受 Oracle 支持,您在使用时只能风险自负;本指南仅供教学使用。 6. 为 Oracle 软件安装做准备 在 rac1 VM 上解压缩 Oracle 数据库和 Oracle 集群件:
[root@rac1 ~]# cd /u01/install/
[root@rac1 install]# unzip linux.x64_11gR1_database.zip
[root@rac1 install]# unzip linux.x64_11gR1_clusterware.zip
| 更改 oracle 帐户的口令,并设置数据库和集群件的目录(在两个 RAC 节点上):
[root@rac1 ~]# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is WAY too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@rac1 ~]# mkdir -p /u01/app/oracle
[root@rac1 ~]# chown -R oracle:oinstall /u01/app
[root@rac1 ~]# chmod -R 775 /u01/app
[root@rac1 ~]#
[root@rac1 ~]# mkdir -p /u01/app/crs
[root@rac1 ~]# chown -R oracle:oinstall /u01/app/crs
[root@rac1 ~]# chmod -R 775 /u01/app/crs
| 在 rac1 和 rac2 上编辑 oracle 用户的 .bash_profile 脚本,使其类似以下内容,但请记住,必须为每个 RAC 节点单独设置 ORACLE_SID:
# ~oracle .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
export ORA_CRS_HOME=/u01/app/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin
# Each RAC node must have a unique ORACLE_SID.
export ORACLE_SID=erac1
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$ORACLE_HOME/nls/data
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
| 设置 Oracle SSH 用户等效性 “用户等效性”是使用 RSH/SSH 的一种方法,通过该方法,本地用户帐户无需提供口令即可访问集群中的所有其他节点。用户等效性主要由 Oracle 安装程序使用,用于在其余节点上执行无需口令的安装。这里节选的命令行说明如何使用基于 SSH 密钥的验证快速设置用户等效性:
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ mkdir -p ~/.ssh
[oracle@rac1 ~]$ chmod 700 ~/.ssh
[oracle@rac1 ~]$ /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>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
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:
cb:a6:d0:4a:cc:39:9d:78:70:24:f7:5b:99:14:7e:53 oracle@rac1
[oracle@rac1 ~]$
[oracle@rac1 ~]$ ssh rac1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'rac1 (10.99.1.91)' can't be established.
RSA key fingerprint is 1e:8c:1f:f7:dc:2e:10:75:0f:08:01:13:a8:49:31:0c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac1,10.99.1.91' (RSA) to the list of known hosts.
oracle@rac1's password:
[oracle@rac1 ~]$ ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'rac2 (10.99.1.92)' can't be established.
RSA key fingerprint is 1e:8c:1f:f7:dc:2e:10:75:0f:08:01:13:a8:49:31:0c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2,10.99.1.92' (RSA) to the list of known hosts.
oracle@rac2's password:
[oracle@rac1 ~]$ scp .ssh/authorized_keys rac2:.ssh/
oracle@rac2's password:
authorized_keys 100% 786 0.8KB/s 00:00
[oracle@rac1 ~]$ chmod 600 ~/.ssh/authorized_keys
| 设置 shell 以免系统要求您提供密钥口令短语(图形安装程序还要求提供 X11 工作站地址):
[oracle@rac1 ~]$ exec /usr/bin/ssh-agent $SHELL
[oracle@rac1 ~]$ /usr/bin/ssh-add
Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
[oracle@rac1 ~]$
[oracle@rac1 ~]$ export DISPLAY=10.99.1.1:0
| 在同一 shell 会话中,尝试验证 SSH 用户等效性是否按预期方式正常运行:
[oracle@rac1 ~]$ ssh rac1 date
Sat May 10 13:16:43 CEST 2008
[oracle@rac1 ~]$ ssh rac2 date
Sat May 10 13:16:45 CEST 2008
[oracle@rac1 ~]$
| 在工作站上必须配置 X11 环境,以允许从 RAC 节点远程建立 X11 连接来获取图形安装和配置实用程序:
[vnull@xeno ~]$ xhost +10.99.1.91
10.99.1.91 being added to access control list
[vnull@xeno ~]$ xhost +10.99.1.92
10.99.1.92 being added to access control list
[vnull@xeno ~]$
| 现在,应确保您正在 rac1 节点和 rac2 节点与您之间的所有防火墙上(通常是 TCP 端口 6000),从 rac1 系统和 rac2 系统传递数据。 ASMLib 配置 ASMLIB 是更高效的可选机制,用于 I/O 操作和存储管理。Linux 上的 ASMLIB 主要有助于减少上下文切换,从而降低 CPU 使用率(方法是,绕过标准的 UNIX I/O 调用,并提供其自身的执行这些操作的内核部分),但在本案例中的主要用途是简化设备管理。 在两个节点上执行 ASMLib 配置:
[root@rac1 ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting <ENTER> without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: oinstall
Start Oracle ASM library driver on boot (y/n) [n]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [ OK ]
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@rac1 ~]#
| 在 ASMLIB 管理中放入两个 iSCSI LUN(仅在 rac1 上执行):
[root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL1ASM1 /dev/iscsi/racdata1.asm1/lun0/part1
Marking disk "VOL1ASM1" as an ASM disk: [ OK ]
[root@rac1 ~]# /etc/init.d/oracleasm createdisk VOL2ASM1 /dev/iscsi/racdata2.asm1/lun0/part1
Marking disk "VOL2ASM1" as an ASM disk: [ OK ]
[root@rac1 ~]#
[root@rac1 ~]# /etc/init.d/oracleasm listdisks
VOL1ASM1
VOL2ASM1
[root@rac1 ~]#
| 在 rac2 上重新扫描以获取新的 ASM 磁盘:
[root@rac2 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@rac2 ~]# /etc/init.d/oracleasm listdisks
VOL1ASM1
VOL2ASM1
[root@rac2 ~]#
| 7. Oracle 集群件安装 Oracle 集群件是核心组件,包含与 RAC 相关的数据库及相关的帮助应用程序。通过它,DBA 可以将一个 Oracle 实例(或多个实例)注册和调用到集群。在例行操作中,Oracle 集群件将通过一种特殊的 ping 操作向在集群中配置的所有节点发送消息(通常称作“心跳”)。如果对任何节点的心跳检测失败,则它将检查 Oracle 集群件配置文件(位于共享磁盘上)以辨别是节点故障还是网络故障。 安装 Oracle 集群件后,用于安装 Oracle 数据库软件(下一节)的 Oracle Universal Installer (OUI) 将自动识别这些节点。与您将在本节中执行的 Oracle 集群件安装一样,Oracle 数据库软件只需要从一个节点运行。OUI 将把此软件程序包复制到在 RAC 集群中配置的所有节点。 第三个节点作为 NFS Server 您希望用于放置表决磁盘的第三个位置在地理上独立于主要数据中心,因此您必须考虑 RAC 节点如何以及使用什么存储协议连接到第三个站点。您可以使用第三个 iSCSI 阵列/服务器,但事实上,购买 iSCSI 存储是一种浪费,因为表决磁盘只需使用几 MB 的存储。幸运的是,Oracle 集群件可以将表决磁盘放在 NFS 存储上,而 NFS 存储可安装在任何远程 UNIX/Linux 服务器上。 此处,您将使用管理工作站作为包含表决磁盘文件的第三个 NFS 站点。(此文件用作整个磁盘。) 请在工作站上使用 CRS 表决伪磁盘文件执行 NFS 导出:
[root@xeno ~]# mkdir /votedisk
[root@xeno ~]# echo '/votedisk *(rw,sync,all_squash,anonuid=500,anongid=500)' >> /etc/exports
[root@xeno ~]# service portmap start
Starting portmap: [ OK ]
[root@xeno ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@xeno ~]# chkconfig --level 0123456 nfs on
[root@xeno ~]# chkconfig --level 0123456 portmap on
[root@xeno ~]# dd if=/dev/zero of=/votedisk/third_votedisk.crs bs=1M count=320
320+0 records in
320+0 records out
335544320 bytes (336 MB) copied, 1.32737 seconds, 253 MB/s
[root@xeno ~]#
| 在两个 RAC 节点上,执行以下命令(在单个 bash 命令中输入 fstab 行):
[root@rac1 ~]# echo -e '10.99.1.1:/votedisk\t/votedisk\tnfs\t rw,bg,hard,intr,rsize=32768,wsize=32768,tcp,noac,vers=3,timeo=600\t0\t0' >> /etc/fstab
[root@rac1 ~]# service portmap start
Starting portmap: [ OK ]
[root@rac1 ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@rac1 ~]# chkconfig --level 0123456 nfs on
[root@rac1 ~]# mkdir /votedisk
[root@rac1 ~]# mount /votedisk
[root@rac1 ~]# ls -al /votedisk
total 328024
drwxr-xr-x 2 oracle dba 4096 May 27 19:36 .
drwxr-xr-x 26 root root 4096 May 27 20:40 ..
-rw-r--r-- 1 oracle dba 335544320 May 27 19:36 third_votedisk.crs
[root@rac1 ~]#
| 主要安装 首先,应检查系统是否存在任何不兼容性。为了检查整个系统是否缺少库、内核参数等,Oracle 在集群件中提供了名为 runcluvfy.sh 的特殊工具。(有关更完整的说明,请参阅 Jeff Hunter“在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 集群件”的第 20 部分。)首先,需要安装它:
[root@rac1 clusterware]# cd /u01/install/clusterware/rpm/
[root@rac1 rpm]# rpm -Uhv cvuqdisk-1.0.1-1.rpm
Preparing... ########################################### [100%]
1:cvuqdisk ########################################### [100%]
[root@rac1 rpm]#
| 然后,需要将其传递到 rac2 节点:
[root@rac1 rpm]# scp cvuqdisk-1.0.1-1.rpm root@10.99.1.92:.
The authenticity of host '10.99.1.92 (10.99.1.92)' can't be established.
RSA key fingerprint is 1e:8c:1f:f7:dc:2e:10:75:0f:08:01:13:a8:49:31:0c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.99.1.92' (RSA) to the list of known hosts.
root@10.99.1.92's password:
cvuqdisk-1.0.1-1.rpm 100% 7273 7.1KB/s 00:00
[root@rac1 rpm]#
| ... 并在 rac2 上安装它:
[root@rac2 ~]# rpm -Uhv cvuqdisk-1.0.1-1.rpm
Preparing... ########################################### [100%]
1:cvuqdisk ########################################### [100%]
[root@rac2 ~]#
| 可使用以下命令生成集群件前置要求报表:
[oracle@rac1 clusterware]$ ./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
| 检查报表:
Check: Membership of user "oracle" in group "oinstall" [as Primary]
Node Name User Exists Group Exists User in Group Primary Comment
---------------- ------------ ------------ ------------ ------------ ------------
rac2 yes yes yes no failed
rac1 yes yes yes no failed
Result: Membership check for user "oracle" in group "oinstall" [as Primary] failed.
Administrative privileges check failed.
[..]
Check: Package existence for "glibc-2.5-12"
Node Name Status Comment
------------------------------ ------------------------------ ----------------
rac2 failed
rac1 failed
Result: Package existence check failed for "glibc-2.5-12".
Check: Package existence for "glibc-2.5-12"
Node Name Status Comment
------------------------------ ------------------------------ ----------------
rac2 glibc-2.5-18 passed
rac1 glibc-2.5-18 passed
Result: Package existence check passed for "glibc-2.5-12".
| 忽略 oinstall 组中缺少 oracle 的问题以及第一个错误“glibc-2.5-12”即可。尝试修复 runclvfy.sh 生成的所有通知或错误,否则以后它们会转变成更严重的问题。 接下来要运行的 CVU 检查将验证硬件和操作系统设置。
[oracle@rac1 clusterware]$ ./runcluvfy.sh stage -post hwos -n rac1,rac2 -verbose
| 此次应显示“No errors”。 最后,运行集群件安装程序:
[oracle@rac1 clusterware]$ export DISPLAY=10.99.1.1:0
[oracle@rac1 clusterware]$ ./runInstaller
| 图 33 将显示集群件安装程序。 图 34 确保将 /u01/app/oraInventory 设置为清单目录。 图 35 将 /u01/app/crs 设置为集群件主目录。(将 CRS 安装同数据库软件安装分离开来)。 图 36 集群件将检查系统是否存在问题和不兼容性。一切应该正常。 图 37 单击 Edit 按钮,并按如下所示指定网络适配器: - eth0 应为 public
- eth1 应为 private(RAC 的缓存融合/互连)
- eth2 不能由 CRS 使用(这是我们的 iSCSI SAN 接口)
图 38 指定应镜像 OCR。您希望在两个 iSCSI 存储设备之间镜像 OCR。对于主 OCR 位置,输入 /dev/iscsi/racdata1.ocr/lun0/part1。对于备份 OCR 位置,输入 /dev/iscsi/racdata2.ocr/lun0/part1。 图 39 为表决磁盘选择“Normal redundancy”。要满足仲裁要求,您需要三个表决磁盘: - /dev/iscsi/racdata1.voting/lun0/part1
- /dev/iscsi/racdata2.voting/lun0/part1
- /votedisk/voting_disk_file.crs(“xeno”工作站 NFS 挂载点上的文件)
注: 如果您在此处仅设置一个表决磁盘也没关系,在本指南后面,我将介绍如何手动添加其余的表决磁盘。 图 40 配置完表决磁盘后,将显示汇总窗口。检查设置并按 Install。 图 41 安装过程将需要一些时间。 图 42 成功完成安装后,系统将提示您运行安装后终结脚本。 验证集群件安装 可使用几个实用程序检查是否已成功安装集群件。此处,我们使用 crs_stat 和 crsctl 验证安装:
[oracle@rac1 clusterware]$ $ORA_CRS_HOME/bin/crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.rac1.gsd application 0/5 0/0 ONLINE ONLINE rac1
ora.rac1.ons application 0/3 0/0 ONLINE ONLINE rac1
ora.rac1.vip application 0/0 0/0 ONLINE ONLINE rac1
ora.rac2.gsd application 0/5 0/0 ONLINE ONLINE rac2
ora.rac2.ons application 0/3 0/0 ONLINE ONLINE rac2
ora.rac2.vip application 0/0 0/0 ONLINE ONLINE rac2
[oracle@rac1 clusterware]$ $ORA_CRS_HOME/bin/crsctl check crs
Cluster Synchronization Services appears healthy
Cluster Ready Services appears healthy
Event Manager appears healthy
[oracle@rac1 clusterware]$
| 如果两个节点上的所有项目都已联机,您可以继续进行 Oracle 数据库 11g 安装。 8. Oracle 数据库软件安装 首先,需要验证系统:
[oracle@rac1 clusterware]$ ./runcluvfy.sh stage -pre dbinst -n rac1,rac2 -r 11gR1
| 您将收到有关 glibc 的警告(就像您以前安装集群件时一样),但您有一个较新的版本,因此可以忽略此警告。 接下来,解压缩安装程序:
[root@rac1 ~]# cd /u01/install/
[root@rac1 install]# ls
clusterware linux.x64_11gR1_clusterware.zip linux.x64_11gR1_database.zip
[root@rac1 install]# rm -rf clusterware linux.x64_11gR1_clusterware.zip
[root@rac1 install]# unzip linux.x64_11gR1_database.zip
[root@rac1 install]# rm linux.x64_11gR1_database.zip
| 运行安装程序:
[oracle@rac1 ~]$ cd /u01/install/database/
[oracle@rac1 database]$ ./runInstaller
| 应显示安装窗口;选择 Custom 为 RAC 数据库选择单个组件: 图 43 为 Oracle 数据库选择 / u01/app/oracle,将 Software Location 中的 Name 和 Path 保留为默认值。 图 44 选择 Cluster Installation 并启用 rac1(已选中)和 rac2 节点。 图 45 安装程序应验证您的环境。在您的配置中,您可能没有足够的交换空间,但这尚未引起任何问题,因此可以安全地通过“用户验证”。另外,还应忽略 rmem_default 内核参数通知(它也不会导致任何问题)。 图 46 在 Product Components 中选择所需的组件(组件越少,安装过程越快)。我仅从企业版选件中选择了“Real Application Testing”和“Partitioning”。 图 47 在 Privileged Operating Systems Groups 提示窗口中,确保全部选择“dba”组。(在真正的部署中,出于安全考虑,应谨慎地将这些组区分开。) 图 48 选择 Install database software only,因为后面要创建数据库。 图 49 仔细检查所有内容,然后单击 Install。 图 50 将开始安装过程。由于尚未执行 iSCSI 和存储优化,此过程可能需要一小时的时间(取决于您的硬件)。 图 51 安装完成后,系统将提示您在两个节点上运行安装后脚本。 NetCA:为 RAC 配置 Oracle TNS 服务 启动 netca:
[oracle@rac1 ~]$ cd /u01/app/oracle/product/11.1.0/db_1/bin/
[oracle@rac1 bin]$ ./netca
| 选择 Cluster。 图 52 您要配置监听器。 图 53 选择 Add。 图 54 接受默认名称(“LISTENER”)。 图 55 仅选择“TCP”协议。 图 56 我们的监听器应该正在以下 Oracle 默认端口上运行:TCP 端口 1521。 图 57 一个 LISTENER 就足够了。 图 58 退出。 现在,验证监听器是否正在监听:
[root@rac2 ~]# ps -ef | grep lsnr | grep -v 'grep' | awk '{print $9}'
LISTENER_RAC2
[root@rac2 ~]# /u01/app/crs/bin/crs_stat ora.rac2.LISTENER_RAC2.lsnr
NAME=ora.rac2.LISTENER_RAC2.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on rac2
[root@rac2 ~]#
| DBCA:数据库创建
[oracle@rac1 ~]$ cd /u01/app/oracle/product/11.1.0/db_1/bin/
[oracle@rac1 bin]$ ./dbca
| 选择 Real Application Clusters。 图 59 选择 Create a Database。 图 60 确保两个节点都已选中。 图 61 选择 Custom Database,以便在数据库创建过程中具有更大的灵活性。 图 62 为数据库指定名称。考虑到本指南的目的,将其命名为“erac.world”。SID 前缀应自动设置为“erac”。单个 SID 将分别为“erac1”..“eracN”。 图 63 确定是否要安装 Oracle Enterprise Manager。如果安装,请进行相应配置。 图 64 出于测试目的,可以为所有重要的 Oracle 帐户选择稍微容易的口令。 图 65 由于您要构建扩展 RAC 配置,因此必须选择 ASM 存储方式。 图 66 您将为每个 ASM 实例使用非共享的 PFILE。可以选择使用共享的 SPFILE,以便采用集中式 ASM 配置,但随即将产生一个问题:在哪个存储阵列中存储此重要文件呢? 图 67 在 Create Diskgroup 窗口中单击 Change Disk Discovery Path;应弹出一个新窗口。需要重新配置 Disk Discovery Path,以便仅找出 iSCSI LUN。输入“/dev/iscsi/*/*/part1”。这将强制 ASM 仅考虑每个 iSCSI LUN 的第一个分区。 图 68 接下来,使用 NORMAL 冗余(镜像)从不同存储节点上的两个 iSCSI LUN 中创建“DATA1”ASM 磁盘组。由于每个 LUN 位于不同的存储节点上,并且您要在这些节点之间进行镜像,因此可以得到具有两个故障组的磁盘组。此配置(稍后您会了解到)即使丢失一整个存储阵列也不会危及安全。 图 69 在新的 +DATA1 磁盘组上选择 Oracle-Managed Files。 图 70 出于开发考虑,可以安全地禁用闪回和存档。 图 71 禁用不需要的所有数据库组件(例如,Oracle Text、Oracle XML DB)。这将 显著地缩短数据库创建时间。 在 Initialization Parameters 中,可以配置此实例将要使用的内存量(总计)。以后可以通过更改 memory_target 参数来更改该值。请根据需要自定义其他数据库参数。 图 72 Oracle 数据库 11g 中有许多新的安全选件(默认情况下处于启用状态)。请全部接受这些选件。 图 73 确保已选中 Enable automatic maintenance tasks。 图 74 在 Database Storage 中,可以优化与 REDO 日志、控制文件等相关的参数。默认值适用于初始测试。 图 75 仅选择 Create Database;如果愿意,可以生成数据库脚本,以便在删除旧 DB(例如,为了进行新的试验)后加快新 DB 的创建过程。 图 76 将显示汇总信息,说明将安装哪些选件。数据库创建过程可能需要较长时间,这取决于要安装的选件和所使用的存储方式。最后,将显示有关所创建数据库的概要信息。 图 77 启动后,可通过两个实例 {erac1、erac2} 来使用数据库。 图 78 针对扩展 RAC 的数据库优化 Oracle 数据库 11g 为扩展 RAC 集群提供了两个值得借鉴的解决方案。有关结合使用扩展 RAC 和 ASM 11g 特性的更详细信息,请参阅 Nitin Vengurlekar 等人撰写的《Oracle Automatic Storage Management, Under-the-Hood & Practical Deployment Guide》 (Oracle Press 2008) 或《Oracle Storage Administrators Guide》 。 首选读取 Oracle 数据库 11g 提供了一个称为“首选读取”的新特性,允许 DBA 为本地读取指定故障组(通常情况下,故障组在地理上离数据库实例更近)。通过设置特定于 ASM 实例的 ASM_PREFERRED_READ_FAILURE_GROUPS 参数,可启用首选读取特性。 首先,需要查看哪些故障组和磁盘组可用:
[oracle@rac1 ~]$ ORACLE_SID=+ASM1 sqlplus / as sysdba
[..]
SQL> col inst format 9
SQL> col path format a36
SQL> col diskgroup format a8
SQL> col diskname format a10
SQL> col failgroup format a10
SQL> col PR format a2
SQL> SELECT inst_id inst, path, g.name diskgroup,d.name diskname, failgroup, preferred_read PR
2 FROM v$asm_disk d JOIN gv$asm_diskgroup g ON(d.group_number=g.group_number)
3 WHERE mount_status='CACHED' ORDER BY 1;
inst PATH DISKGROU DISKNAME FAILGROUP PR
---- ------------------------------------ -------- ---------- ---------- --
1 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 U
1 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 U
2 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 U
2 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 U
4 rows selected.
SQL>
| PR 列中的“U”表明磁盘组没有已定义的首选读取故障组。因此,可以将 ASM 首选读取指向特定故障组(ASM_PREFERRED_READ_FAILURE_GROUPS 的语法为 diskgroup_name.failure_group_name,...'):
SQL> ALTER SYSTEM SET ASM_PREFERRED_READ_FAILURE_GROUPS='DATA1.DATA1_0000' SID='+ASM1';
System altered.
SQL> ALTER SYSTEM SET ASM_PREFERRED_READ_FAILURE_GROUPS='DATA1.DATA1_0001' SID='+ASM2';
System altered.
SQL>
| 在 erac1 节点的 ASM 上,您说过要从 DATA1_0000(iscsi1,LUN 位于 /dev/iscsi/racdata1.asm1/lun0/* 中)读取,在 erac2 节点上,您要从故障组 DATA1_0001 读取。可以通过从 ASM 实例中查询 GV$ASM_DISK 来检查参数是否生效:
SQL> SELECT path, g.name diskgroup, d.name diskname, failgroup, mode_status
2 FROM v$asm_disk d JOIN v$asm_diskgroup g ON(d.group_number=g.group_number)
3 WHERE mount_status='CACHED';
INST PATH DISKGROU DISKNAME FAILGROUP PR
---- ------------------------------------ -------- ---------- ---------- --
1 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 N
1 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 Y
2 /dev/iscsi/racdata2.asm1/lun0/part1 DATA1 DATA1_0002 DATA1_0001 Y
2 /dev/iscsi/racdata1.asm1/lun0/part1 DATA1 DATA1_0000 DATA1_0000 N
4 rows selected.
SQL>
| 生成某些读取密集型通信后,可使用以下查询验证系统是否正从正确的存储阵列中读取:
SQL> SELECT inst_id, failgroup, sum(reads), sum(writes) FROM GV$ASM_DISK GROUP BY inst_id, failgroup;
INST_ID FAILGROUP SUM(READS) SUM(WRITES)
---------- ---------- ---------- -----------
1
1 DATA1_0000 16976 3778
1 DATA1_0001 3800 2344
2
2 DATA1_0000 2865 2217
2 DATA1_0001 17401 2217
6 rows selected.
SQL>
| 可以很清楚地看到,在 erac1 上,Oracle 优先从故障组 DATA1_0000 读取;在 erac2 上,则优先从 DATA1_0001 读取。 注:在无 SPFILE 但有 IFILE 的 ASM 实例(例如,无集群文件系统的 RAC 集群)上设置 ASM_PREFERRED_READ_FAILURE_GROUPS 时,请记得将此设置也放入 /u01/app/oracle/admin/+ASM/pfile/init.ora 文件中,以使此设置永久有效。 快速磁盘重新同步 Oracle 数据库 11g 显著缩短了执行故障组同步所需的时间。此处,11g 和 10g 之间的主要差别在于,在 10g 中,发生故障的磁盘将完全从磁盘组中删除,而在 11g 中,Oracle 实现同步方法,仅更新已修改或写入的区域。快速磁盘重新同步(也称“快速镜像重新同步”)要求 ASM 磁盘组的兼容等级为 11.1。(有关如何使用快速磁盘重新同步的详细信息,请参阅 Oracle 数据库存储管理员指南 11g 第 1 版 的第 4 章。) 检查扩展 RAC 的表决磁盘和 OCR 镜像 安装之后,应检查集群是否一切正常:
[root@rac1 ~]# cd /u01/app/crs/bin
[root@rac1 bin]# ./crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.erac.db application ONLINE ONLINE rac1
ora....c1.inst application ONLINE ONLINE rac1
ora....c2.inst application ONLINE ONLINE rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
[root@rac1 bin]#
| 在 11g 中可以联机管理表决磁盘。此处,您将手动添加其中两项:iSCSI 存储 #2 和 NFS 表决磁盘(如果在集群件安装阶段未添加它们):
[root@rac1 bin]# ./crsctl query css votedisk
0. 0 /dev/iscsi/racdata1.voting/lun0/part1
Located 1 voting disk(s).
[root@rac1 bin]# ./crsctl add css votedisk /dev/iscsi/racdata2.voting/lun0/part1
Now formatting voting disk: /dev/iscsi/racdata2.voting/lun0/part1.
Successful addition of voting disk /dev/iscsi/racdata2.voting/lun0/part1.
[root@rac1 bin]# ./crsctl add css votedisk /votedisk/third_votedisk.crs
Now formatting voting disk: /votedisk/third_votedisk.crs.
Successful addition of voting disk /votedisk/third_votedisk.crs.
[root@rac1 bin]#
| 验证表决磁盘配置:
[root@rac1 bin]# ./crsctl query css votedisk
0. 0 /dev/iscsi/racdata1.voting/lun0/part1
1. 0 /dev/iscsi/racdata2.voting/lun0/part1
2. 0 /votedisk/third_votedisk.crs
Located 3 voting disk(s).
[root@rac1 bin]# ./crsctl check crs
Cluster Synchronization Services appears healthy
Cluster Ready Services appears healthy
Event Manager appears healthy
[root@rac1 bin]#
| Oracle 集群件日志 (/u01/app/crs/log/rac1/alertrac1.log) 中还应包含类似如下的内容:
2008-05-31 17:07:32.302
[cssd(4506)]CRS-1605:CSSD voting file is online: /dev/iscsi/racdata2.voting/lun0/part1. Details in /u01/app/crs/
log/rac1/cssd/ocssd.log.
[cssd(4506)]CRS-1601:CSSD Reconfiguration complete. Active nodes are rac1 rac2 .
2008-05-31 17:08:07.341
[cssd(4506)]CRS-1605:CSSD voting file is online: /votedisk/third_votedisk.crs. Details in /u01/app/crs/log/rac1/
cssd/ocssd.log.
[cssd(4506)]CRS-1601:CSSD Reconfiguration complete. Active nodes are rac1 rac2.
| 另外,请务必检查 OCR 是否正受 OCRmirror 保护:
[root@rac1 bin]# ./ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 327188
Used space (kbytes) : 3848
Available space (kbytes) : 323340
ID : 2120916034
Device/File Name : /dev/iscsi/racdata1.ocr/lun0/part1
Device/File integrity check succeeded
Device/File Name : /dev/iscsi/racdata2.ocr/lun0/part1
Device/File integrity check succeeded
Cluster registry integrity check succeeded
[root@rac1 bin]#
| 如果一切正常,则现在可以对 Oracle RAC 的实际故障切换功能执行压力测试。 第 1 页 第 2 页 第 3 页 |