打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在 Linux 和 FireWire 上构建您自己的 Oracle RAC 10g 集群 ( 3 )
第 1 页第 2 页 第 3 页
在 Linux 和 FireWire 上构建您自己的 Oracle RAC 10g 集群(续)
仅用于开发和测试
19. 安装 Oracle 集群就绪服务软件
仅在集群的一个节点上执行下列安装过程!Oracle CRS 软件将被 Oracle Universal Installer 安装到集群的所有其他节点。
我们准备安装该环境的“集群”部分:CRS 软件。在上一节中,我们下载了 CRS 的安装文件并将其解压缩到 linux1 的 /u01/app/oracle/orainstall/crs/Disk1 目录中。这是我们唯一需要从中执行安装的节点。
在 CRS 的安装过程中,系统将提示您提供相关的并要在 RAC 集群中配置的节点。当实际的安装开始时,它将使用我们在第 13 节中配置的远程访问把所需的软件复制到所有节点。
那么,Oracle CRS 究竟负责那些事项呢?
Oracle CRS 包含所有集群和数据库配置元数据以及多个适用于 RAC 的系统管理特性。通过它,数据库管理员可以将一个 Oracle 实例(或多个实例)注册和调用到集群。在通常的操作中,CRS 将向集群中配置的所有节点发送消息(通过一种特殊的 ping 操作)—通常称作“心跳”。如果针对任何节点的心跳检测失败,则它将核对 CRS 配置文件(位于共享磁盘上)以辨别是节点故障还是网络故障。
安装 CRS 后,用于安装 Oracle 数据库 10g 的 Oracle Universal Installer (OUI) 将自动识别这些节点。与我们将在本节中执行的 CRS 安装一样,只需从一个节点运行 Oracle 10g 数据库软件。OUI 将把此软件程序包复制到 RAC 集群中配置的所有节点。
极好的 Metalink 说明“CRS 和 10g 真正应用集群 -(说明:259301.1)”提供了在安装 CRS 和 Oracle RAC 10g 前需要考虑的一些有关这两个软件组件的重要事实:
必须在安装 RAC 10g 前先安装并运行 CRS。
CRS 既可以在供应商集群件(如 Sun Cluster、HP Serviceguard、IBM HACMP、TruCluster、Veritas Cluster、Fujitsu Primecluster 等)上运行也可以在没有它的情况下运行。(供应商集群件在 Oracle9i RAC 中是必需的。)
必须将 CRS HOME 和 ORACLE_HOME 安装在不同的位置。
在安装 CRS 之前,必须提供表决文件和 Oracle 配置信息库 (OCR) 文件的共享位置或设备。表决文件的大小至少应为 20MB,OCR 文件的大小至少应为 100MB。
安装 CRS 或 RAC 之前,CRS 和 RAC 要求配置以下网络接口:  公共接口
专用接口
虚拟(公共)接口
有关此方面内容的更多信息,请参阅“说明 264847.1”
root.sh 脚本在 CRS 安装结束时启动 CRS 堆栈。如果 CRS 堆栈未启动,请参阅说明: 240001.1
每个 RAC 节点只能运行一组 CRS 后台程序。
在 Unix 上,CRS 堆栈通过“respawn”从 /etc/inittab 中的条目运行。
如果存在网络断开(节点之间相互失去通信),则一个或多个节点可以自动重新启动以防数据损坏。
所支持的 CRS 启动方法是启动计算机。
所支持的停止方法是关闭计算机或使用 init.crs stop。
由于标志文件可能不匹配,因此不支持终止 CRS 后台程序,除非您通过说明:239998.1 删除 CRS 安装。
要进行维护,请转到操作系统的单用户模式。
启动堆栈后,您可以使用 ps -ef 命令查看所有后台程序进程: $ ps -ef | grep crs
root 4661 1 0 14:18 ?00:00:00 /bin/su -l oracle -c exec /u01/app/oracle/product/10.1.0/crs_1/bin/evmd
root 4664 1 0 14:18 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/crsd.bin
root 4862 4663 0 14:18 ?00:00:00 /bin/su -l oracle -c /u01/app/oracle/product/10.1.0/crs_1/bin/ocssd || exit 137
oracle 4864 4862 0 14:18 ?00:00:00 -bash -c /u01/app/oracle/product/10.1.0/crs_1/bin/ocssd || exit 137
oracle 4898 4864 0 14:18 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/ocssd.bin
oracle 4901 4661 0 14:18 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmd.bin
root 4908 4664 0 14:18 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/crsd.bin -1
oracle 4947 4901 0 14:18 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmd.bin
oracle 4949 4898 0 14:18 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/ocssd.bin
...
oracle 4958 4949 0 14:19 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/ocssd.bin
oracle 4959 4947 0 14:19 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmd.bin
...
oracle 4983 4947 0 14:19 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmd.bin
oracle 4984 4983 0 14:19 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmlogger.bin \
-o /u01/app/oracle/product/10.1.0/crs_1/evm/log/evmlogger.info \
-l /u01/app/oracle/product/10.1.0/crs_1/evm/log/evmlogger.log
oracle 4985 4947 0 14:19 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmd.bin
...
oracle 4990 4947 0 14:19 ?00:00:00 /u01/app/oracle/product/10.1.0/crs_1/bin/evmd.bin
CRS 共享文件
由 CRS 使用的两个共享文件将存储到我们前面创建的 OCFS 中。这两个共享 CRS 文件是:
Oracle 集群注册表 (OCR) 位置:/u02/oradata/orcl/OCRFile
大小:~ 100MB
CRS 表决磁盘 位置:/u02/oradata/orcl/CSSFile
大小:~ 20MB
注意:对于我们此处的安装而言,无法将 ASM 用于这两个 CRS 文件,即 OCR 或 CRS 表决磁盘。只有这两个文件就绪并可以访问后才可以启动 Oracle 实例。要使 ASM 可用,应首先运行 ASM 实例。但可以将这两个共享文件存储到 OCFS、共享的原始设备或其他供应商的集群化文件系统中。
核实环境变量
启动 OUI 之前,应先从控制台以 root 运行 xhost 命令以允许建立 X Server 服务器连接。然后,取消 ORACLE_HOME 变量的设置并核实 RAC 集群的每个节点定义了唯一的 ORACLE_SID。还应核实我们是以 oracle 用户帐户登录的:
以 oracle 登录
# xhost +
access control disabled, clients can connect from any host
# su - oracle
取消 ORACLE_HOME 的设置 $ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS33
$ unset TNS_ADMIN
核实 linux1 上的环境变量 $ env | grep ORA ORACLE_SID=orcl1 ORACLE_BASE=/u01/app/oracle ORACLE_TERM=xterm 核实 linux2 上的环境变量 $ env | grep ORA
ORACLE_SID=orcl2 ORACLE_BASE=/u01/app/oracle ORACLE_TERM=xterm 安装集群就绪服务
执行以下任务来安装 Oracle CRS:
$ cd ~oracle
$ ./orainstall/crs/Disk1/runInstaller -ignoreSysPrereqs
屏幕名称 回应
Welcome Screen 单击 Next
Specify Inventory directory and credentials 接受默认值:
Inventory directory: /u01/app/oracle/oraInventory
Operating System group name:dba
Root Script Window - Run orainstRoot.sh 在执行安装的节点上以“root”用户帐户打开一个新的控制台窗口。
导航到 /u01/app/oracle/oraInventory 目录,运行 orainstRoot.sh。
返回 OUI 并确认此对话框窗口。
Specify File Locations 保留 Source 目录的默认值。按如下所示设置 ORACLE_HOME 名称和位置的目标:
Name: OraCrs10g_home1
Location:/u01/app/oracle/product/10.1.0/crs_1
Language Selection 我接受了默认值:
Selected Languages: English
Cluster Configuration Cluster Name: crs
Public Node Name:linux1 Private Node Name:int-linux1
Public Node Name:linux2 Private Node Name:int-linux2
Specify Network Interface Usage Interface Name: eth0 Subnet:192.168.1.0   Interface Type:Public
Interface Name:eth1 Subnet:192.168.2.0   Interface Type: Private
Oracle Cluster Registry Specify OCR Location: /u02/oradata/orcl/OCRFile
Voting Disk Enter voting disk file name: /u02/oradata/orcl/CSSFile
Root Script Window - Run orainstRoot.sh 在 RAC 集群的每个节点上以“root”用户帐户打开一个新的控制台窗口。
导航到 /u01/app/oracle/oraInventory 目录,在 RAC 集群的所有节点上运行 orainstRoot.sh。
返回 OUI 并确认此对话框窗口。
Summary 由于某种原因,OUI 没能在开始安装前为安装目录创建“$ORACLE_HOME/log”。您应在单击“Install”按钮前手动创建此目录。
对于此安装,在集群的所有节点上手动创建文件 /u01/app/oracle/product/10.1.0/crs_1/log。OUI 将把所有错误记录到此目录中的一个日志文件上(只有它存在时)。
单击 Install 开始安装!
Root Script Window - Run root.sh 安装完成后,将提示您运行 root.sh 脚本。
在 RAC 集群的每个节点上以“root”用户帐户打开一个新的控制台窗口。
导航到 /u01/app/oracle/product/10.1.0/crs_1 目录,在 RAC 集群的所有节点上依次逐个运行 root.sh。
您在所有节点上运行 root.sh 时将收到多个警告。可以忽略这些警告,没什么问题。
可能需要等一会儿才会运行 root.sh。在最后一个节点上运行 root.sh 时,将显示如下所示的输出:
...
CSS is active on these nodes.
linux1
linux2
CSS is active on all nodes.
Oracle CRS stack installed and running under init(1M)
返回 OUI 并确认此对话框窗口。
End of installation 安装结束时,退出 OUI。
核实 CRS 安装
安装 CRS 后,我们可以执行多个测试来核实安装成功。在 RAC 集群的所有节点上运行下列命令。
检查集群节点
$ /u01/app/oracle/product/10.1.0/crs_1/bin/olsnodes -n
linux1 1
linux2 2
检查 CRS 自动启动脚本 $ ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root 1207 Feb 5 19:41 /etc/init.d/init.crs*
-r-xr-xr-x 1 root root 5492 Feb 5 19:41 /etc/init.d/init.crsd*
-r-xr-xr-x 1 root root 18617 Feb 5 19:41 /etc/init.d/init.cssd*
-r-xr-xr-x 1 root root 4553 Feb 5 19:41 /etc/init.d/init.evmd*
20. 安装 Oracle 数据库 10g 软件
仅在集群的一个节点上执行下列安装过程!Oracle 数据库软件将由 Oracle Universal Installer 安装到集群的所有其他节点。
成功安装 Oracle CRS 软件后,下一步是使用 RAC 安装 Oracle 数据库 10g(10.1.0.3 或更高版本)。(注意:在写本文时,Oracle 10g 的 OUI 无法发现标记为 Linux ASMLib 的磁盘/卷。因此,我们将在安装 Oracle 10g 软件时不使用“创建数据库”选项。取而代之的是,我们将在 Oracle 数据库 10g 安装之后使用数据库创建助手即 DBCA 创建数据库。(有关更多安装信息,请单击此处。)
核实环境变量
启动 OUI 之前,应先从控制台以 root 运行 xhost 命令以允许建立 X Server 服务器连接。然后,取消 ORACLE_HOME 变量的设置并核实 RAC 集群的每个节点定义了唯一的 ORACLE_SID。还应核实我们是以 oracle 用户帐户登录的:
以 oracle 登录
# xhost +
access control disabled, clients can connect from any host
# su - oracle
取消 ORACLE_HOME 的设置
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS33
$ unset TNS_ADMIN
核实 linux1 上的环境变量 $ env | grep ORA ORACLE_SID=orcl1 ORACLE_BASE=/u01/app/oracle ORACLE_TERM=xterm 核实 linux2 上的环境变量 $ env | grep ORA
ORACLE_SID=orcl2 ORACLE_BASE=/u01/app/oracle ORACLE_TERM=xterm 安装 Oracle 数据库 10g 软件
使用以下命令安装 Oracle 数据库 10g 软件:
$ cd ~oracle
$ /u01/app/oracle/orainstall/db/Disk1/runInstaller -ignoreSysPrereqs
屏幕名称 回应
Welcome Screen 单击 Next
Specify File Locations 确保“Source Path:”指向 .../db/Disk1/stage/product.xml 产品安装文件的 products.xml 文件。
按如下所示设置 ORACLE_HOME 名称和位置的目标:
Name: OraDb10g_home1
Location:/u01/app/oracle/product/10.1.0/db_1
Specify Hardware Cluster Installation Mode 选择 Cluster Installation 选项,然后选择所有可用节点。单击 Select All 选择所有服务器:linux1 和 linux2。
如果安装此时停止,且有 RAC 节点的状态显示为“Node not reachable”(无法访问节点),则执行以下检查:
确保 CRS 正在所讨论节点上运行。
确保您能够从执行安装的节点访问所讨论的节点。
Select Installation Type 我选择了 Enterprise Edition 选项。
Select Database Configuration 选择“Do not create a starter database”选项。
还记得吗,10g R1 (10.1) 的 OUI 无法发现标记为 Linux ASMLib 的磁盘?我们将在单独的步骤中使用 dbca 创建集群化的数据库。
Summary 由于某种原因,OUI 没能在开始安装前为安装目录创建“$ORACLE_HOME/log”。您应在单击“Install”按钮前手动创建此目录。
对于此安装,在执行安装的节点上手动创建文件 /u01/app/oracle/product/10.1.0/db_1/log。OUI 将把所有错误记录到此目录中的一个日志文件上(只有它存在时)。
单击 Install 开始安装!
Root Script Window - Run root.sh 安装完成时,将提示您运行 root.sh 脚本。需要记住的是,需要在 RAC 集群的所有节点上依次逐个(从运行数据库安装的节点开始)运行 root.sh 脚本。
首先,从安装 Oracle 10g 数据库软件的节点上打开一个新的控制台窗口。我打开的是 linux1。在第一个 Linux 服务器上运行 root.sh 脚本之前,请确保您使用的控制台窗口可以运行 GUI 实用程序。(请在运行 root.sh 脚本前设置 $DISPLAY 环境变量!)
导航到 /u01/app/oracle/product/10.1.0/db_1 目录,运行 root.sh。
在 root.sh 脚本运行结束时,它将显示名为 VIP 配置助手 (VIPCA) 的 GUI 安装程序。VIPCA 将只在第一个运行 root.sh 的节点上出现。但您仍然需要继续在集群的所有节点上逐个运行 root.sh 脚本。
当 VIPCA 出现时,请回应如下所示的屏幕提示:
Welcome: 单击 Next
Network interfaces:同时选择两个接口 - eth0 和 eth1
Virtual IPs for cluster notes:
Node Name:linux1
IP Alias Name:vip-linux1
IP Address:192.168.1.200
Subnet Mask: 255.255.255.0
Node Name: linux2
IP Alias Name:vip-linux2
IP Address:192.168.1.201
Subnet Mask: 255.255.255.0
Summary: 单击 Finish
Configuration Assistant Progress Dialog:配置完成后单击 OK。
Configuration Results: 单击 Exit
在其余节点上运行 root.sh 脚本时,脚本结束将显示“CRS resources are already configured”(已配置 CRS 资源)。
返回 OUI 并确认此对话框窗口。
End of installation 安装结束时,退出 OUI。
21. 创建 TNS 监听器进程
仅在集群的一个节点上执行下列配置过程!网络配置助手将在集群所有节点上的集群化配置中设置 TNS 监听器。
DBCA 需要在 RAC 集群的所有节点上配置并运行 Oracle TNS 监听器进程,然后它才能创建集群化数据库。
只需在集群的一个节点上执行 TNS 监听器创建过程。所有更改将在该节点上进行并被复制到集群的所有节点上。在一个节点(我将使用 linux1)上,启动网络配置助手 (NETCA) 并执行创建新 TNS 监听器进程的过程,同时配置节点的本地访问权限。
运行 NETCA 前,请确保以 oracle 用户重新登录并确认将 $ORACLE_HOME 环境变量设置为正确的位置。如果要使用前一节中使用的控制台窗口,则请注意,我们取消了 $ORACLE_HOME 环境变量的设置。这将导致在尝试运行 netca 时出现错误。
要启动 NETCA,请以 oracle 用户帐户运行以下 GUI 实用程序:
$ netca &
以下屏幕截图将引导您为我们 RAC 环境创建一个新的 Oracle 监听器。
屏幕名称 回应
Select the Type of Oracle
Net Services Configuration 选择 Cluster Configuration
Select the nodes to configure 选择所有节点:linux1 和 linux2。
Type of Configuration 选择 Listener configuration。
Listener Configuration - Next 6 Screens 后续屏幕现在与其他常规监听器配置的相似。您只需接受后续 6 个屏幕的默认参数即可:
What do you want to do: Add
Listener name:LISTENER
Selected protocols:TCP
Port number:1521
Configure another listener:No
Listener configuration complete![ Next ]
您将返回到此“欢迎”(配置类型)屏幕。
Type of Configuration 选择 Naming Methods configuration。
Naming Methods Configuration 后续屏幕是:
Selected Naming Methods: Local Naming
Naming Methods configuration complete![ Next ]
您将返回到此“欢迎”(配置类型)屏幕。
Type of Configuration 单击 Finish 退出 NETCA。
Oracle TNS 监听器进程现在应在 RAC 集群的所有节点上运行:
$ hostname
linux1
$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_LINUX1
=====================
$ hostname
linux2
$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'
LISTENER_LINUX2
22. 创建 Oracle 集群数据库
数据库创建过程应只在集群的一个节点上执行!
我们将使用 DBCA 创建集群化数据库。
在执行 DBCA 前,请确保为 $ORACLE_BASE/product/10.1.0/db_1 环境正确设置了 $ORACLE_HOME 和 $PATH。
在试图开始创建集群化数据库之前,还应确保已安装的所有服务(Oracle TNS 监听器、CRS 进程等)正在运行。
创建集群化数据库
要开始数据库创建过程,请运行以下命令:
# xhost +
access control disabled, clients can connect from any host
# su - oracle
$ dbca & 屏幕名称 回应
Welcome Screen 选择 Oracle Real Application Clusters database。
Operations 选择 Create a Database。
Node Selection 单击 Select All 按钮选择所有服务器:linux1 和 linux2。
Database Templates 选择 Custom Database
Database Identification 选择:
Global Database Name: orcl.idevelopment.info
SID Prefix:orcl
我将 idevelopment.info 用于数据库域。您可以使用任何域。请记住,此域不必为有效的 DNS 域。
Management Option 保留此处的默认选项,即“Configure the Database with Enterprise Manager”。
Database Credentials 我选择 Use the Same Password for All Accounts。输入口令(两次)并确保此口令不是以数字开头。
Storage Options 对于本指南,我们将选择使用 ASM。
Create ASM Instance 除了我要对此实例使用的 SYS 口令外,我使用的所有其他选项都是默认值。这包括所有 ASM 参数的默认值,然后使用默认参数文件 (IFILE):{ORACLE_BASE}/admin/+ASM/pfile/init.ora。
然后将有一个对话框询问您是否要创建并启动 ASM 实例。选择 OK 按钮确认此对话框。
OUI 将立即在 RAC 集群的所有节点上创建并启动 ASM 实例。
ASM Disk Groups 首先,单击 Create New 按钮。这将弹出“Create Disk Group”窗口,其中显示了我们在前面使用 ASMLib 创建的三个卷。
如果在本文前面部分创建的卷没有显示在“Select Member Disks”窗口中:
ORCL:VOL1, ORCL:VOL2, and ORCL:VOL3 则单击“Change Disk Discovery Path”按钮并输入“ORCL:VOL*”。
对于“Disk Group Name”,我使用了字符串 ORCL_DATA1。
选择“Select Member Disks”窗口中的所有 ASM 卷。这三个卷的状态应全部为“PROVISIONED”。
确认此窗口中的所有值均正确后,单击 OK 按钮。这将显示“ASM Disk Group Creation”对话框。
完成 ASM 磁盘组创建过程时,您将返回到“ASM Disk Groups”窗口。选中新创建的磁盘组名称 ORCL_DATA1 旁边的复选框,并单击 [Next] 继续。
Database File Locations
我选择使用默认值,即使用 Oracle Managed Files:
Database Area: +ORCL_DATA1
Recovery Configuration 恢复选项(如 Flash Recovery Area)的使用超出了本文的讨论范围。我没有选择任何恢复选项。
Database Content 我将所有数据库组件(以及目标表空间)设置为它们的默认值。
Database Services 对于此测试配置,单击 Add,然后输入 orcltest 作为“Service Name”。将这两个实例设置为 Preferred,并为“TAF Policy”选择 Basic。
Initialization Parameters 根据您的环境更改任意参数。我保留了所有这些参数的默认设置。
Database Storage 根据您的环境更改任意参数。我保留了所有这些参数的默认设置。
Creation Options 保留默认选项 Create Database,并单击 Finish 以启动数据库创建过程。
在“Summary”屏幕上单击 OK。
您在安装过程中可能收到一个错误消息。
End of Database Creation 在数据库创建结束时,退出 DBCA。
退出 DBCA 时,将弹出另一对话框,指示它正在启动所有 Oracle 实例以及 HA 服务“orcltest”。这可能需要几分钟的时间才能完成。完成时,所有窗口和对话框将关闭。
完成 DBCA 后,您就启动了一个功能完善的 Oracle RAC 集群!
创建 orcltest 服务
在创建 Oracle 集群化数据库的过程中,我们添加了一个名为 orcltest 的服务,我们将用它来连接启用了 TAF 的数据库。在我的多次安装中,均将此服务添加到了 tnsnames.ora 中,但从未将其作为每个 Oracle 实例的服务更新过。
使用以下命令来核实已成功添加 orcltest 服务:
SQL> show parameter service
NAME TYPE VALUE
-------------------- ----------- --------------------------------
service_names string orcl.idevelopment.info, orcltest
如果定义的唯一服务是用于 orcl.idevelopment.info 的,则您将需要手动将此服务添加到两个实例中: SQL> show parameter service
NAME TYPE VALUE
-------------------- ----------- --------------------------
service_names string orcl.idevelopment.info
SQL> alter system set service_names =
2 'orcl.idevelopment.info, orcltest.idevelopment.info' scope=both;
23. 核实 TNS 联网文件
确保在集群的所有节点上配置 TNS 联网文件!
listener.ora
我们已经在第 21 节中介绍了如何为集群化环境创建 TNS 监听器配置文件 (listener.ora)。应正确配置 listener.ora 文件且无需对它修改。
为清楚起见,我将节点 linux1 的 listener.ora 文件副本包含在了本指南的支持文件中。我还包含了 tnsnames.ora 文件的副本,该文件由 Oracle 配置并可以用于测试透明应用程序故障切换 (TAF)。此文件应已在 RAC 集群的每个节点上进行了配置。
您可以将这些条目中的任何条目包含在需要访问集群化数据库的其他客户端计算机上。
从外部客户端连接集群化数据库
这是一个可选步骤,但我要执行它以便核实正确配置了 TNS 文件。使用其他安装了 Oracle(9i 或 10g)的计算机(例如,连接网络的 Windows 计算机)并从集群的任一节点添加为集群化数据库创建的 TNS 条目(位于 tnsnames.ora 中)。
然后使用在 tnsnames.ora 文件中定义的所有可用服务名称连接集群化数据库:
C:\> sqlplus system/manager@orcl2
C:\> sqlplus system/manager@orcl1
C:\> sqlplus system/manager@orcltest
C:\> sqlplus system/manager@orcl
24. 创建/更改表空间
创建集群化数据库时,我们将所有表空间设置为它们的默认大小。如果您将一个大型驱动器用作共享存储,则可能想创建一个大小可以调整的测试数据库。
以下是几个可为测试数据库修改和创建所有表空间的 SQL 命令。请记住,此示例中使用的数据库文件名称(OMF 文件)可能与 Oracle 为您的环境创建的数据库文件名称不同。
$ sqlplus "/ as sysdba"
SQL> create user scott identified by tiger default tablespace users;
SQL> grant dba, resource, connect to scott;
SQL> alter database datafile '+ORCL_DATA1/orcl/datafile/users.264.1' resize 1024m;
SQL> alter tablespace users add datafile '+ORCL_DATA1' size 1024m autoextend off;
SQL> create tablespace indx datafile '+ORCL_DATA1' size 1024m
2 autoextend on next 50m maxsize unlimited
3 extent management local autoallocate
4 segment space management auto;
SQL> alter database datafile '+ORCL_DATA1/orcl/datafile/system.259.1' resize 800m;
SQL> alter database datafile '+ORCL_DATA1/orcl/datafile/sysaux.261.1' resize 500m;
SQL> alter tablespace undotbs1 add datafile '+ORCL_DATA1' size 1024m
2 autoextend on next 50m maxsize 2048m;
SQL> alter tablespace undotbs2 add datafile '+ORCL_DATA1' size 1024m
2 autoextend on next 50m maxsize 2048m;
SQL> alter database tempfile '+ORCL_DATA1/orcl/tempfile/temp.262.1' resize 1024m;
以下是我为我的测试数据库环境定义的表空间快照: Status Tablespace TS Ext. Seg. Tablespace Used Pct.
Name Type Mgt. Mgt. Size (in bytes) Used
-------- ----------- --------- ----- ------ ------------- ------------- -----
ONLINE INDX PERMANENT LOCAL AUTO 1,073,741,824 65,536 0
ONLINE SYSAUX PERMANENT LOCAL AUTO 524,288,000 227,803,136 43
ONLINE SYSTEM PERMANENT LOCAL MANUAL 838,860,800 449,380,352 54
ONLINE UNDOTBS1 UNDO LOCAL MANUAL 1,283,457,024 184,745,984 14
ONLINE UNDOTBS2 UNDO LOCAL MANUAL 1,283,457,024 4,194,304 0
ONLINE USERS PERMANENT LOCAL AUTO 2,147,483,648 131,072 0
ONLINE TEMP TEMPORARY LOCAL MANUAL 1,073,741,824 22,020,096 2
---------------- ---------------
avg 16
sum 8,225,030,144 888,340,480
7 rows selected.
25. 核实 RAC 集群/数据库配置
应在集群的所有节点上执行以下 RAC 核实检查!对于本指南,我将只从 linux1 中执行这些检查。
本节提供了几个可用于验证 Oracle RAC 10g 配置的 srvctl 命令和 SQL 查询。
有五个为 SRVCTL 定义的节点级任务:
添加和删除节点级应用程序
设置和取消设置节点级应用程序的环境
管理节点应用程序
管理 ASM 实例
启动和停止一组包含虚拟 IP 地址、监听器、Oracle 通知服务和 Oracle 企业管理器代理的程序(出于维护目的)。
所有实例和服务的状态 $ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
单个实例的状态 $ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node linux2
在数据库全局命名服务的状态 $ srvctl status service -d orcl -s orcltest
Service orcltest is running on instance(s) orcl2, orcl1
特定节点上节点应用程序的状态 $ srvctl status nodeapps -n linux1
VIP is running on node:linux1
GSD is running on node:linux1
Listener is running on node:linux1
ONS daemon is running on node:linux1
ASM 实例的状态 $ srvctl status asm -n linux1
ASM instance +ASM1 is running on node linux1.
列出配置的所有数据库 $ srvctl config database
orcl
显示 RAC 数据库的配置 $ srvctl config database -d orcl
linux1 orcl1 /u01/app/oracle/product/10.1.0/db_1
linux2 orcl2 /u01/app/oracle/product/10.1.0/db_1
显示指定集群数据库的所有服务 $ srvctl config service -d orcl
orcltest PREF:orcl2 orcl1 AVAIL:
显示节点应用程序的配置 -(VIP、GSD、ONS、监听器) $ srvctl config nodeapps -n linux1 -a -g -s -l
VIP exists.:/vip-linux1/192.168.1.200/255.255.255.0/eth0:eth1
GSD exists.
ONS daemon exists.
Listener exists.
显示 ASM 实例的配置 $ srvctl config asm -n linux1
+ASM1 /u01/app/oracle/product/10.1.0/db_1
集群中所有正在运行的实例 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 orcl1 YES OPEN ACTIVE NORMAL linux1
2 2 orcl2 YES OPEN ACTIVE NORMAL linux2
位于磁盘组中的所有数据文件 select name from v$datafile
union
select member from v$logfile
union
select name from v$controlfile
union
select name from v$tempfile;
NAME
-------------------------------------------
+ORCL_DATA1/orcl/controlfile/current.256.1
+ORCL_DATA1/orcl/datafile/indx.269.1
+ORCL_DATA1/orcl/datafile/sysaux.261.1
+ORCL_DATA1/orcl/datafile/system.259.1
+ORCL_DATA1/orcl/datafile/undotbs1.260.1
+ORCL_DATA1/orcl/datafile/undotbs1.270.1
+ORCL_DATA1/orcl/datafile/undotbs2.263.1
+ORCL_DATA1/orcl/datafile/undotbs2.271.1
+ORCL_DATA1/orcl/datafile/users.264.1
+ORCL_DATA1/orcl/datafile/users.268.1
+ORCL_DATA1/orcl/onlinelog/group_1.257.1
+ORCL_DATA1/orcl/onlinelog/group_2.258.1
+ORCL_DATA1/orcl/onlinelog/group_3.265.1
+ORCL_DATA1/orcl/onlinelog/group_4.266.1
+ORCL_DATA1/orcl/tempfile/temp.262.1
15 rows selected.
属于“ORCL_DATA1”磁盘组的所有 ASM 磁盘
SELECT path
FROM v$asm_disk
WHERE group_number IN (select group_number
from v$asm_diskgroup
where name = 'ORCL_DATA1');
PATH
----------------------------------
ORCL:VOL1
ORCL:VOL2
ORCL:VOL3
26. 启动和停止集群
此时,我们已经完全安装并配置了 Oracle RAC 10g 并拥有了一个功能完善的集群化数据库。
至此完成所有工作后,您可能会问“那我又怎样启动和停止服务呢?”如果您遵循了本指南中的说明,则所有服务(包括 CRS、所有 Oracle 实例、企业管理器数据库控制台等)应在 Linux 节点每次重新引导时自动启动。
但有时您可能想要关闭某个节点,然后手动重新启动它。或者,您可能发现企业管理器没有而需要启动它。本节提供了启动和停止集群环境的命令(使用 SRVCTL)。
确保您是以 oracle UNIX 用户登录的。我们将从 linux1 运行本节中的所有命令:
# su - oracle$ hostnamelinux1
停止 Oracle RAC 10g 环境
第一步是停止 Oracle 实例。当此实例(和相关服务)关闭后,关闭 ASM 实例。最后,关闭节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。
$ export ORACLE_SID=orcl1
$ emctl stop dbconsole
$ srvctl stop instance -d orcl -i orcl1
$ srvctl stop asm -n linux1
$ srvctl stop nodeapps -n linux1
启动 Oracle RAC 10g 环境
第一步是启动节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。当成功启动节点应用程序后,启动 ASM 实例。最后,启动 Oracle 实例(和相关服务)以及企业管理器数据库控制台。
$ export ORACLE_SID=orcl1
$ srvctl start nodeapps -n linux1
$ srvctl start asm -n linux1
$ srvctl start instance -d orcl -i orcl1
$ emctl start dbconsole
使用 SRVCTL 启动/停止所有实例
启动/停止所有实例及其启用的服务。我只是觉得有意思就把此步骤作为关闭所有实例的一种方法加进来了!
$ srvctl start database -d orcl
$ srvctl stop database -d orcl
27. 管理透明应用程序故障切换
企业通常需要他们的企业应用程序提供 99.99%(甚至 99.999%)的可用性。想一想,要确保全年停机时间不超过 0.5 小时或者甚至没有停机时间得花费多大代价!为了满足众多这种高可用性要求,企业正投资于可以在一个参与系统出现故障时提供自动故障切换的机制。就 Oracle 数据库的可用性而言,Oracle RAC 10g 通过它的高级故障切换机制提供了一个卓越的解决方案。Oracle RAC 10g 包含了提供持续可用性所需的必要组件,这些组件均在一个集群配置中工作;当集群中的某个参与系统出现故障时,用户将被自动移植到其他可用系统。
透明应用程序故障切换 (TAF) 选件是 Oracle RAC 10g 一个负责处理故障切换的主要组件。所有断开的数据库连接(和进程)将被重新连接到集群的其他节点上。故障切换对用户是完全透明的。
这最后一节简短介绍了 TAF 在 Oracle RAC 10g 中的工作方式。请注意,对 Oracle RAC 10g 中的故障切换进行全面介绍可能需要单独的一篇文章,我在此处只想提供一个简短概述。
一个重要的说明是,TAF 自动在 OCI 库中发生。也就是说,您的应用程序(客户端)代码不需要更改便可以利用 TAF。但您需要在 Oracle TNS 文件 tnsnames.ora 中执行某些配置步骤。(请记住,直到编写本文时,由于 Java 瘦客户端从不读取 tnsnames.ora,因此它将无法参与 TAF。)
设置 tnsnames.ora 文件
在演示 TAF 之前,我们需要核实在一个非 RAC 客户端计算机(如果您有一台安装了 Windows 计算机)上的 tnsnames.ora 文件中存在一个有效的条目。确保您安装了 Oracle RDBMS 软件。(实际上,您只需要在客户端上安装 Oracle 软件。)
在本指南的创建集群化数据库过程中,我们创建了一个将用于测试 TAF 命名的 ORCLTEST 的新服务。它为负载平衡和故障切换提供了所有必需的配置参数。可以将此条目的内容复制到客户端计算机(本示例中使用了我的 Windows 便携式计算机)上的 %ORACLE_HOME%\network\admin\tnsnames.ora 文件中:
...
ORCLTEST =
(DESCRIPTION=
(ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = vip-linux2)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA=
(SERVER = DEDICATED)
(SERVICE_NAME = orcltest.idevelopment.info)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
...
查看会话的故障切换信息的 SQL 查询
以下 SQL 查询可以用来查看一个会话的故障切换类型、故障切换方法和是否发生了故障切换。我们将在这个例子中自始至终使用这个查询。
COLUMN instance_name FORMAT a13
COLUMN host_name FORMAT a9
COLUMN failover_method FORMAT a15
COLUMN failed_over FORMAT a11
SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
TAF 演示
从 Windows 计算机(或其他非 RAC 客户端计算机)中,以 SYSTEM 用户登录使用 orcltest 服务的集群化数据库:
C:\> sqlplus system/manager@orcltest
COLUMN instance_name FORMAT a13
COLUMN host_name FORMAT a9
COLUMN failover_method FORMAT a15
COLUMN failed_over FORMAT a11
SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl1 linux1
SELECT BASIC NO
不要注销上面的 SQL*Plus 会话!
我们已经运行了上面的查询,现在我们应该使用 abort 选项来关闭 linux1 上的 orcl1 实例。要执行这一操作,我们可以使用 srvctl 命令行实用程序,如下所示:
# su - oracle
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
$ srvctl stop instance -d orcl -i orcl1 -o abort
$ srvctl status database -d orcl
Instance orcl1 is not running on node linux1
Instance orcl2 is running on node linux2
现在让我们返回到我们的 SQL 会话,然后重新运行缓冲中的 SQL 语句: COLUMN instance_name FORMAT a13
COLUMN host_name FORMAT a9
COLUMN failover_method FORMAT a15
COLUMN failed_over FORMAT a11
SELECT
instance_name
, host_name
, NULL AS failover_type
, NULL AS failover_method
, NULL AS failed_over
FROM v$instance
UNION
SELECT
NULL
, NULL
, failover_type
, failover_method
, failed_over
FROM v$session
WHERE username = 'SYSTEM';
INSTANCE_NAME HOST_NAME FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------- ------------- --------------- -----------
orcl2 linux2
SELECT BASIC YES
SQL> exit
从上面的演示中,我们可以看到上述会话现在已经被故障切换到了 linux2 上的实例 orcl2 上。
|
28. 结论
理想情况下,本指南提供了一个经济实惠的解决方案,即使用 White Box Enterprise Linux(或 Red Hat Enterprise Linux 3)和 FireWire 技术设置和配置低成本的 Oracle RAC 10g 集群。本文介绍的 RAC 解决方案总共需要大约 1,700 美元,但可以数据库管理员提供一个功能完善的 Oracle RAC 集群。
请记住,尽管此解决方案的稳定性足以进行测试和开发,但绝不应考虑将其用于生产环境。
29. 鸣谢
像这样篇幅和复杂程度的文章通常并非出自一人之手。尽管本人能够编写并成功演示构成此配置的组件的有效性,但我还是要感谢其他几个帮助我成功编写本文的人。
首先,我要感谢 Werner Puschitz 在“在 Red Hat Enterprise Linux Advanced Server 3 上安装具有真正应用服务器集群 (RAC) 的 Oracle 数据库 10g”一文中所做的杰出贡献。本文以及他撰写的其他几篇文章提供的有关 Oracle RAC 10g 的信息在任何其他 Oracle 文档中都是无法找到的。没有他的辛苦工作以及对配置和安装 hangcheck-timer 内核模块、正确配置 Unix 共享内存以及配置 ASMLib 等问题的研究,本指南也许根本无法完成。如果您有兴趣拜读 Werner Puschitz 撰写的有关 Linux 内部结构以及 Oracle 深入配置方面的技术文章,请访问他出色的网站www.puschitz.com
接下来,我要感谢 Wim Coekaerts、Manish Singh 以及 Oracle Linux 项目开发组的整个团队。该组中的专家把升级 Linux 内核以支持 IEEE1394 设备的多重登录(和其他几个重要修改)做得天衣无缝。该组在oss.oracle.com 上为 Hat Enterprise Linux 3.0 提供了一个预编译内核(还可用于 White Box Enterprise Linux)以及许多其他有用的工具和文档。
Jeffrey Hunter (www.idevelopment.info) 是一位拥有 11 年以上工作经验的高级数据库管理员和软件工程师。他是一位 Oracle 认证专家、Java 开发认证专家和作家,当前就职于The DBA Zone, Inc.。Jeff 的工作包括高级性能调节、Java 编程、容量规划、数据库安全性以及 Unix、Linux 和 Windows NT 环境中的物理/逻辑数据库设计。Jeff 的其他兴趣还涉及数学加密理论、Java 和 C 的编程语言处理器(编译器和解释器)、LDAP、编写基于 Web 的数据库管理工具,当然还有 Linux。
第 1 页第 2 页 第 3 页
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
基于iSCSI和Openfiler构建自己的Oracle RAC(三)
在64位RHEL4 U6上安装Oracle 10g RAC
RAC 安装数据库软件与创建数据库 图解
YH12:一篇文章读懂SCAN
DRM引发RAC的故障分析
使用 VMware Server 在 Oracle Enterprise Linux 上安...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服