在 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。

Help

典型安装与高级安装

g

 

  • 典型安装 典型安装选项是简化的安装过程,只需进行最少的手动配置选择。这个新选项为用户(尤其是那些集群技术新手)提供了一个简化的集群安装过程。典型安装是让尽可能多的选项默认采用最佳实践的建议值。
  • 高级安装 高级安装选项是一个高级过程,需要较高程度的系统知识。该安装选项使您可以进行特定的配置选择,包括额外的存储和网络选择、对基于角色的管理权限使用操作系统组身份验证、与 IPMI 集成,或使用细粒度指定自动存储管理角色。



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



配置 SCAN 而不使用 DNS

对于本文,尽管我说过将手动分配 IP 地址并使用 DNS 方法进行名称解析(这与 GNS 不同),实际上我不会在任何 DNS 服务器(或 GNS)中定义 SCAN。相反,我将只在每个 Oracle RAC 节点以及任何将连接到数据库集群的客户端的 hosts 文件 ( /etc/hosts) 中定义 SCAN 主机名和 IP 地址。尽管 Oracle 非常不鼓励这么做,并且强烈建议使用 GNS 或 DNS 解析方法,但我觉得对 DNS 的配置超出了本文的范围。本节将提供一种变通方法(这完全是一种非常规的方法),该方法使用 nslookup

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


DDF_raid_member是什么意思_Oracle

 
图 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



[Next] 按钮继续进行 Oracle Grid Infrastructure 的安装。在文档 ID:887471.1My Oracle Support 网站)中对此有记述。

root身份对 nslookup

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

#!/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

[root@racnode1 ~]# chmod 755 /usr/bin/nslookup


记住要在两个 Oracle RAC 节点上执行这些操作。 



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 环境

grid)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

安装 Oracle Grid Infrastructure

grid

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

[grid@racnode1 ~]$ DISPLAY=<your local workstation>: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

DDF_raid_member是什么意思_ORACLE_02

Select Installation Type

Advanced Installation

DDF_raid_member是什么意思_ORACLE_02

Select Product Languages

为您的环境进行合适的选择。

DDF_raid_member是什么意思_ORACLE_02

Grid Plug and Play Information

有关如何配置网格命名服务 (GNS) 的说明超出了本文的范围。取消选中“Configure GNS”选项。

 

 

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

 



DDF_raid_member是什么意思_ORACLE_05

DDF_raid_member是什么意思_ORACLE_02

Cluster Node Information

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

 

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

 

 

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

 



DDF_raid_member是什么意思_oracle_07


 

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

 

单击 [Test]

DDF_raid_member是什么意思_ORACLE_02

Specify Network Interface Usage

 

DDF_raid_member是什么意思_ORACLE_02

Storage Option Information

Automatic Storage Management (ASM)。

DDF_raid_member是什么意思_ORACLE_02

Create ASM Disk Group

 

DDF_raid_member是什么意思_ORACLE_02

Specify ASM Password

Use same passwords for these accounts。

DDF_raid_member是什么意思_ORACLE_02

Failure Isolation Support

Do not use Intelligent Platform Management Interface (IPMI)。

DDF_raid_member是什么意思_ORACLE_02

Privileged Operating System Groups

本文通过任务角色划分配置来使用基于角色的管理权限和细粒度来指定自动存储管理角色。

 

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

 

DDF_raid_member是什么意思_ORACLE_02

Specify Installation Location

$ORACLE_BASE) 和 Software Location ( $ORACLE_HOME):

   Oracle Base: /u01/app/grid 

   Software Location: /u01/app/11.2.0/grid

DDF_raid_member是什么意思_ORACLE_02

Create Inventory

由于这是该主机上的第一次安装,您需要创建 Oracle 清单目录。使用 OUI 提供的默认值:

   Inventory Directory: /u01/app/oraInventory 

   oraInventory Group Name: oinstall

DDF_raid_member是什么意思_ORACLE_02

Prerequisite Checks

 

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

 

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

 

DDF_raid_member是什么意思_ORACLE_02

Summary

[Finish]

DDF_raid_member是什么意思_ORACLE_02

Setup

安装程序在两个 Oracle RAC 节点上执行 Oracle Grid Infrastructure 安装过程。

DDF_raid_member是什么意思_ORACLE_02

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.

 

DDF_raid_member是什么意思_ORACLE_02

Configure Oracle Grid Infrastructure for a Cluster

[Next]然后单击 [Close] 退出 OUI。

 

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

 

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

 

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

DDF_raid_member是什么意思_ORACLE_02

Finish

[Close]

DDF_raid_member是什么意思_ORACLE_02

Cluster Name

SCAN Name

SCAN Port

racnode-cluster

racnode-cluster-scan

1521

警告:安装完成后,不要在 Oracle Clusterware 还在运行时手动删除或通过运行相应 cron 作业来删除/tmp/.oracle 或 /var/tmp/.oracle

 


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

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

验证 Oracle Clusterware 安装

grid

检查 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

表决磁盘管理

dd 命令备份表决磁盘。在 Oracle Clusterware 11.2 以及更高版本中,不再支持使用 dd

g

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

备份 root.sh 脚本

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



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

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

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 磁盘组,这些磁盘组将用于创建集群化数据库。

+CRS

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

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

验证终端 Shell 环境

grid)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

使用 ASMCA 创建其他 ASM 磁盘组

grid

[grid@racnode1 ~]$ asmca &

 

屏幕名称

响应

屏幕截图

Disk Groups

Create

DDF_raid_member是什么意思_ORACLE_02

Create Disk Group

 

如果我们在本文前面创建的 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]

DDF_raid_member是什么意思_ORACLE_02

Disk Groups

Create按钮,创建第二个 ASM 磁盘组。

DDF_raid_member是什么意思_ORACLE_02

Create Disk Group

 

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

 

在确认此对话框中所有值均正确后,单击 [OK]

DDF_raid_member是什么意思_ORACLE_02

Disk Groups

[Exit]

DDF_raid_member是什么意思_ORACLE_02

 


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

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

racnode1) 上以 oracle

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

验证终端 Shell 环境

oracle)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

安装 Oracle Database 11g

oracle

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

[oracle@racnode1 ~]$ DISPLAY=<your local workstation>:0.0 
[oracle@racnode1 ~]$ export DISPLAY  

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

 

屏幕名称

响应

屏幕截图

Configure Security Updates

[Next] 按钮继续。出现警告对话框时(该对话框指示您尚未提供电子邮件地址),单击[Yes]

DDF_raid_member是什么意思_oracle_28


Installation Option

Install database software only。

DDF_raid_member是什么意思_oracle_28


Grid Options

Real Application Clusters database installation 单选按钮(此为默认选择),确保选中 Node Name 窗口中的两个 Oracle RAC 节点。

 

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

 



DDF_raid_member是什么意思_oracle_30


 

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

 

单击 [Test]

DDF_raid_member是什么意思_oracle_28


Product Languages

为您的环境进行合适的选择。

DDF_raid_member是什么意思_oracle_28


Database Edition

Enterprise Edition。

DDF_raid_member是什么意思_oracle_28


Installation Location

指定 Oracle 基目录和软件位置 (Oracle_home),如下所示:

   Oracle Base:/u01/app/oracle 

   Software Location:/u01/app/oracle/product/11.2.0/dbhome_1

DDF_raid_member是什么意思_oracle_28


Operating System Groups

分别为 SYSDBA 和 SYSOPER 权限选择操作系统组:

   Database Administrator (OSDBA) Group: dba 

   Database Operator (OSOPER) Group: oper

DDF_raid_member是什么意思_oracle_28


Prerequisite Checks

 

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

 

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

 

DDF_raid_member是什么意思_oracle_28


Summary

[Finish]

DDF_raid_member是什么意思_oracle_28


Install Product

安装程序在两个 Oracle RAC 节点上执行 Oracle Database 软件安装过程。

DDF_raid_member是什么意思_oracle_28


Execute Configuration scripts

/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

 

DDF_raid_member是什么意思_oracle_28


Finish

[Close]

DDF_raid_member是什么意思_oracle_28


 


25. 安装 Oracle Database 11g

仅在集群中的一个 Oracle RAC 节点 (racnode1) 上执行以下 Oracle Database 11g

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

验证终端 Shell 环境

oracle)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

安装 Oracle Database 11g

oracle

[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

DDF_raid_member是什么意思_ORACLE_02

Prerequisite Checks

 

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

 

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

 

DDF_raid_member是什么意思_ORACLE_02

Summary

[Finish]

DDF_raid_member是什么意思_ORACLE_02

Install Product

安装程序在两个 Oracle RAC 节点上执行 Oracle Database Examples 软件安装过程。

DDF_raid_member是什么意思_ORACLE_02

Finish

[Close]

DDF_raid_member是什么意思_ORACLE_02

 


26. 创建 Oracle 集群数据库

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

Database Configuration Assistant

$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 环境

oracle)登录到 racnode1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH 或 Telnet 连接到 racnode1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

创建集群化数据库

oracle

[oracle@racnode1 ~]$ dbca &

 

屏幕名称

响应

屏幕截图

Welcome 屏幕

Oracle Real Application Clusters database。

DDF_raid_member是什么意思_ORACLE_02

Operations

Create a Database。

DDF_raid_member是什么意思_ORACLE_02

Database Templates

Custom Database。

DDF_raid_member是什么意思_ORACLE_02

Database Identification

集群数据库配置。 

   Configuration Type: Admin-Managed

 

数据库命名。 

   Global Database Name: racdb.idevelopment.info

   SID Prefix: racdb

 

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

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

DDF_raid_member是什么意思_ORACLE_02

Management Options

Configure Enterprise Manager / Configure Database Control for local management。

DDF_raid_member是什么意思_ORACLE_02

Database Credentials

Use the Same Administrative Password for All Accounts。输入口令(两次)并确保此口令不是以数字开头。

DDF_raid_member是什么意思_ORACLE_02

Database File Locations

指定数据库文件的存储类型和存储位置。 

   Storage Type: Automatic Storage Management (ASM) 

   Storage Locations: Use Oracle-Managed Files 

     Database Area: +RACDB_DATA

DDF_raid_member是什么意思_ORACLE_02

Specify ASMSNMP Password

指定 ASM 实例的 ASMSNMP 口令。

DDF_raid_member是什么意思_ORACLE_02

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。

DDF_raid_member是什么意思_ORACLE_02

Database Content

Sample Schemas 也完全可以。自从我们安装了 Oracle Database 11g

DDF_raid_member是什么意思_ORACLE_02

Initialization Parameters

根据您的环境更改任意参数。我保留了所有这些参数的默认设置。

DDF_raid_member是什么意思_ORACLE_02

Database Storage

根据您的环境更改任意参数。我保留了所有这些参数的默认设置。

DDF_raid_member是什么意思_ORACLE_02

Creation Options

Create Database。我还始终选择 Generate Database Creation Scripts。单击 Finish 启动数据库创建过程。确认数据库创建报告和脚本生成对话框后,开始创建数据库。

OK。

DDF_raid_member是什么意思_ORACLE_02

End of Database Creation

在数据库创建结束时,退出 DBCA。

DDF_raid_member是什么意思_ORACLE_02



完成 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),可以用它查看数据库的配置和当前状态。

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



DDF_raid_member是什么意思_IP_60

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


 


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

为了增强可用性和数据库管理,本节提供几个可在新的 Oracle 11g

重新编译无效对象

utlrp.sql

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



在 RAC 环境中启用存档日志

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

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

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

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.
  1. oracle 用户身份关闭所有 访问集群化数据库的实例:
[oracle@racnode1 ~]$ srvctl stop database -d racdb
  1. 挂载 数据库:
[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
SQL> alter database archivelog;  

Database altered.
  1. cluster_database 修改为 TRUE,重新启用对集群的支持:
SQL> alter system set cluster_database=true scope=spfile sid='racdb1';  

System altered.
SQL> shutdown immediate  
ORA-01109: database not open   

Database dismounted. 
ORACLE instance shut down.
  1. oracle 帐户身份使用 srvctl 命令重启所有实例:
[oracle@racnode1 ~]$ srvctl start database -d racdb
[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@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_PATH) 已设置为相应的目录,现在您登录到 SQL*Plus 后应该能够运行 $ORACLE_BASE/common/oracle/sql

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.

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 操作系统用户身份只从 racnode1

服务器控制实用程序 (SRVCTL) 来进行,并且这些检查可以作为 oracle 或grid

 

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



Oracle 集群件控制

g 第 2 版 (11.2) 引进了可识别集群的

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

 

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



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

crsctl check cluster



g

 

  • 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: <crs>
/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: <crs>
/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. 启动/停止集群

g 第 2 版进行了所有安装和配置。Oracle Grid Infrastructure 已由 grid 用户安装,Oracle RAC 软件已由 oracle 用户安装。一个名为 racdb

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

racnode1) 上停止和启动 Oracle Clusterware 系统提供所需命令。

root

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

racnode1 节点上使用 crsctl stop cluster

[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

-all 选项在集群中所有服务器上停止 Oracle Clusterware 系统。以下命令将在racnode1 和 racnode2

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



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

racnode1 节点上使用 crsctl start cluster

[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

[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 — 逻辑卷在引导时未激活

/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 驱动器出现了该问题!

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

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

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...

racnode1 和 racnode2)。

方法 2

该方法由 Martin Jones 友情提供。他的变通方法包括修改 /etc/rc.sysinit 脚本,主要是等待 USB 磁盘(在本例中为 /dev/sda)得到检测。对 /etc/rc.sysinit

/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
..............................................................

racnode1 和 racnode2)。

 


32. 总结

g RAC 允许 DBA 配置一个拥有优越的容错和负载平衡功能的数据库解决方案。然而,对于那些希望深入了解 Oracle11g

g 第 2 版 RAC 集群。本文介绍的 RAC 解决方案总共需要大约 2,700 美元,可以为 DBA 提供一个功能完善的 Oracle 11g

 


33. 致谢

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

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

特别感谢 K Gopalakrishnan 的帮助,他提供了本文的 Oracle RAC 11g一节。本节中有关 Oracle RAC 历史的很多内容可以在他的畅销书《Oracle Database 10g》中找到。此书受到希望成功实施 Oracle RAC 以及完全理解缓存融合 和全局资源目录

最后,我想表达对以下供应商的感谢,他们慷慨地为本文提供了硬件:SeagateAvocent 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 分校,获得了计算机科学学士学位。