Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1402542
  • 博文数量: 556
  • 博客积分: 12626
  • 博客等级: 上将
  • 技术积分: 5799
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-11 15:56
个人简介

从事IT基础架构多年,发现自己原来更合适去当老师……喜欢关注新鲜事物,不仅限于IT领域。

文章分类

全部博文(556)

文章存档

2019年(6)

2018年(15)

2017年(17)

2016年(11)

2015年(2)

2014年(2)

2013年(36)

2012年(54)

2011年(100)

2010年(41)

2009年(72)

2008年(14)

2007年(82)

2006年(104)

分类: Oracle

2007-08-31 11:25:53

作者:Vincent Chan

学习如何在 Red Hat Enterprise Linux 3 上将单一实例数据库转换为 Oracle 真正应用程序集群 (RAC) 10g

内容







本文相关下载:


对于那些具有有限操作经验的用户而言,实施 Oracle RAC 10g 的前景令人生畏。但事情并不一定如此。

本指南将提供明确的步骤,引导您在 RHEL3 上将单一实例 Oracle 10g 数据库转换为 Oracle RAC。我将 Oracle 自动存储管理 (ASM)(一个构建到 Oracle 数据库内核中的集成文件系统和卷管理解决方案)用于 RAC 数据库存储,因为它不但提供了存储可靠性和高性能,还简化了数据库存储管理。

总的说来,有多种方法可以将数据库转换为 RAC。如果数据库比较小,则可以考虑在 ASM 上安装一个新的 RAC 数据库,并将当前数据库中的数据导出/导入到 RAC 数据库。对于较大的数据库,首选的方法是使用 RMAN 将数据库文件移植到 ASM。这里所要说明的方法是一个分为两个阶段的方法:首先,将数据移植到 ASM,然后将单一实例数据库转换为 RAC。如果您是对 ASM 不了解,建议您采用此移植方法,先熟悉 ASM,然后再进一步运用 ASM 和 RAC。(有关 Oracle ASM 的更多信息,请访问 或参考。)

本指南要求您对 RAC 体系结构有一个基本了解,对 Oracle 数据库和 Red Hat Enterprise Linux 的管理较为熟悉。有关详细信息,请参考。


概述

RAC 集群由两台运行 RHEL3(内核 2.4.21-27)的 Intel x86 服务器组成。每个节点都可以访问共享存储器并可以连接到公共网络和专用网络。

本指南分为以下步骤:

  1. 准备安装
  2. 将数据库移植到 ASM
  3. 安装 Oracle 集群就绪服务 (CRS) 软件
  4. 安装 Oracle RAC 软件
  5. 后续安装
  6. 测试透明应用程序故障切换 (TAF)
除非另行指定,否则应在两个节点上执行所有步骤。

以下是在转换到 RAC 之前的单一实例数据库环境的情况介绍:

主机名
实例名
数据库名
$ORACLE_BASE
数据库文件存储
salmon1 prod1 prod1 /u01/app/oracle ext3

和 RAC 数据库环境情况介绍:

主机名
实例名
数据库名
$ORACLE_BASE
数据库文件存储
OCR 和 CRS Voting Disk
salmon1 prod1a prod1 /u01/app/oracle ASM 原始
salmon2 prod1b prod1 /u01/app/oracle ASM 原始

您将在每个节点上安装 Oracle Home 以实现冗余。ASM 和 RAC 实例在每个节点上共享同一 Oracle Home。

第 1 步:准备安装

1a.检验软件程序包版本。

安装所需的程序包。其他信息可以从中获得。

[root@salmon1]# rpm -qa | grep -i compat
compat-libstdc++-7.3-2.96.128
compat-gcc-c++-7.3-2.96.128
compat-libstdc++-devel-7.3-2.96.128
compat-db-4.0.14-5
compat-glibc-7.x-2.2.4.32.6
compat-slang-1.4.5-5
compat-gcc-7.3-2.96.128
compat-pwdb-0.62-3
[root@salmon1]# 
[root@salmon1]# rpm -qa | grep openmotif
openmotif-2.2.3-3.RHEL3
[root@salmon1]# 
[root@salmon1]# rpm -qa | grep -i gcc
gcc-gnat-3.2.3-42
gcc-c++-ssa-3.5ssa-0.20030801.48
compat-gcc-c++-7.3-2.96.128
libgcc-ssa-3.5ssa-0.20030801.48
gcc-3.2.3-42
gcc-g77-3.2.3-42
gcc-java-3.2.3-42
gcc-ssa-3.5ssa-0.20030801.48
gcc-g77-ssa-3.5ssa-0.20030801.48
gcc-objc-ssa-3.5ssa-0.20030801.48
libgcc-3.2.3-42
gcc-c++-3.2.3-42
gcc-objc-3.2.3-42
gcc-java-ssa-3.5ssa-0.20030801.48
compat-gcc-7.3-2.96.128

1b.检验内核参数。

检验以下内核参数。其他信息可以从中获得。

[root@salmon1]# sysctl -a | grep shm
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 2147483648
[root@salmon1]# sysctl -a | grep sem
kernel.sem = 250        32000   100     128
[root@salmon1]# sysctl -a | grep -i ip_local
net.ipv4.ip_local_port_range = 1024     65000
[root@salmon1]# sysctl -a | grep -i file-max
fs.file-max = 65536
1c.创建 Oracle Base 目录、oracle 用户和组。

在第一个节点上使用下面的信息,在第二个节点上创建 oracle 用户以及 oinstall 和 dba 组。

[oracle@salmon1]$ hostname
salmon1.dbsconsult.com
[oracle@salmon1]$ 
[oracle@salmon1]$ id
uid=500(oracle) gid=500(dba) groups=500(dba),501(oinstall)
[oracle@salmon1]$ 
[oracle@salmon1]$ echo $ORACLE_BASE
/u01/app/oracle
1d.编辑 oracle 用户环境文件。
[oracle@salmon1]$ more .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

export PATH=$PATH:$HOME/bin
export ORACLE_SID=prod1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
umask 022
1e.配置 oracle 用户 shell 限制。
[root@salmon1]# more /etc/security/limits.conf
*                soft    nproc           2047
*                hard   nproc           16384
*                soft    nofile           1024
*                hard   nofile           65536
[root@salmon1]# grep pam_limits /etc/pam.d/login
session    required     /lib/security/pam_limits.so				 
1f.配置公共网络和专用网络。

使用下面的信息对网络接口设备 eth0(公共)和 eth1(专用)进行必需的更改。

[root@salmon1]# redhat-config-network
主机名
IP 地址
类型
salmon1.dbsconsult.com 192.168.0.184 公共 (eth0)
salmon2.dbsconsult.com 192.168.0.185 公共 (eth0)
salmon1.dbsconsult.com 10.10.10.84 专用 (eth1)
salmon2.dbsconsult.com 10.10.10.85 专用 (eth1)
salmon1-vip.dbsconsult.com 192.168.0.186 虚拟
salmon2-vip.dbsconsult.com 192.168.0.187 虚拟

1g.编辑 the /etc/hosts 文件。

127.0.0.1        localhost.localdomain   localhost
10.10.10.84     sallocal1.dbsconsult.com         sallocal1
10.10.10.85     sallocal2.dbsconsult.com         sallocal2
192.168.0.184   salmon1.dbsconsult.com           salmon1
192.168.0.185   salmon2.dbsconsult.com           salmon2
192.168.0.186   salmon1-vip.dbsconsult.com       salmon1-vip
192.168.0.187   salmon2-vip.dbsconsult.com       salmon2-vip
验证主机名和配置的网络接口设备。
[root@salmon1]# hostname
salmon1.dbsconsult.com
[root@salmon1]# /sbin/ifconfig

1h.使用 SSH 建立用户等效性。

在集群就绪服务 (CRS) 和 RAC 安装过程中,Oracle Universal Installer (OUI) 必须能够以 oracle 的身份将软件复制到所有 RAC 节点,而不提示输入口令。在 Oracle 10g 中,可以使用 ssh 代替 rsh 完成此操作。

要建立用户等效性,请在两个节点上以 oracle 用户的身份生成用户的公钥和私钥。

[oracle@salmon1]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Created directory '/home/oracle/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
5d:8c:42:97:eb:42:ae:52:52:e9:59:20:2a:d3:6f:59 oracle@salmon1.dbsconsult.com
在每个节点上测试连接。验证当您再次运行以下命令时,系统是否不提示您输入口令。
ssh salmon1 date
ssh salmon2 date 
ssh sallocal1 date
ssh sallocal2 date
ssh salmon1.dbsconsult.com date
ssh salmon2.dbsconsult.com date
ssh sallocal1.dbsconsult.com date
ssh sallocal2.dbsconsult.com date
1i.配置 hangcheck timer 内核模块。

hangcheck timer 内核模块监控系统的运行情况,并重新启动出现故障的 RAC 节点。它使用两个参数,即 hangcheck_tick(定义系统检查频率)和 hangcheck_margin(定义在重置 RAC 节点前的最大挂起延时)来确定节点是否出现故障。

在 /etc/rc.d/rc.local 中添加以下行以自动加载 hangcheck 模块。

[root@salmon1]# grep insmod /etc/rc.d/rc.local 
insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
1j.重新创建数据库控制文件。

在转换到 RAC 之前,确保在控制文件中正确调整以下项的大小。如果需要,请使用正确的设置重新创建数据库控制文件。

MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
1k.调整数据库缓冲区高速缓存。

从单一实例数据库转换到 RAC 时,数据库缓冲区高速缓存需要额外的内存。在 RAC 中,为每个块缓冲区高速缓存中的全局高速缓存服务 (GCS) 分配空间。所需的额外内存量取决于应用程序访问数据的方式,即同一个块是否高速缓存到多个实例中。

在演示实验中,我观察到缓冲区高速缓存的使用率增加了大约 8%。使用缓冲区高速缓存顾问确定最佳的缓冲区高速缓存大小,或切换到 Oracle 自动共享内存管理 (ASMM) 让 Oracle 进行控制。


第 2 步:将数据库移植到 ASM

ASM 实例与数据库实例之间的同步需要 Oracle 集群同步服务 (CSS) 后台程序。要启动 ASM 实例,必须启动 CSS 后台程序。安装或升级到 Oracle 数据库 10g 时,应该已经为单节点版本配置了 CSS,并且 CSS 应在系统重新启动时自动启动。

 
[root@salmon1]# ps a                                   
阅读(2006) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~