Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104617371
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-30 13:42:52

第四章. 确定共享磁盘设备
4.1 单机文件系统上安装RAC
文件系统如ext2,ext3等,可以在单机上模拟RAC。

假定我们划分/u01分区为ext3文件系统,首先,我们创建新的分区

#fdisk /dev/sda

假定化出的新分区是/dev/sda6,那我们格式化该分区,如果是As 2.1

#mkfs.ext2 -j /dev/sda6

其中的-j参数是以ext3格式化文件系统,如果是3.0系统,则直接可以调用mkfs.ext3命令。

#mkfs.ext3 /dev/sda6

然后我们创建一个挂装点

#mkdir /u01;chmod 777 /u01

授予用户权限

#chown oracle:dba /u01

可以用mount挂装上

#mount -t ext3 /dev/sda6 /u01

如果想在启动的时候自动挂装,修改/etc/fstab

/dev/sda6 /u01 ext3 defaults 1 1

那么我们用df就可以发现类似如下的信息

/dev/sda6 17820972 2860164 14055548 17% /u01

4.2 Ocfs文件系统上单机模拟与多节点共享安装
OCFS是Oracle cluster file system,适合单节点与多节点的RAC安装。在安装前,我们需要从

下载最新的安装包,并注意安装包与当前核心是否匹配。如果是AS 2.1 enterprise核心下载的版本为。

ocfs-2.4.9-e-enterprise-1.0.10-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpm

ocfs-tools-1.0.10-1.i386.rpm

所要求的核心版本为2.4.9-e.12或者以上

如果是AS3.0 smp核心下载的版本为

ocfs-2.4.21-EL-smp-1.0.10-1.i686.rpm

ocfs-support-1.0.10-1.i386.rpm

ocfs-tools-1.0.10-1.i386.rpm

我们可以用rpm来安装软件,如

#rpm -ivh ocfs*

可以用如下的命令查看安装是否成功

# rpm -qa | grep -i ocfs

检查服务是否安装成功

# chkconfig --list |grep ocfs

ocfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off

配置/etc/ocfs.conf文件,结果大致如下

# Ensure this file exists in /etc directory #

node_name = dbrac

ip_address = 10.0.29.162

ip_port = 7000

comm_voting = 1

然后运行ocfs_uid_gen -c获得gid,之后,文件变得如下所示

[root@dbrac root]# more /etc/ocfs.conf

node_name = dbrac

ip_address = 10.0.29.162

ip_port = 7000

comm_voting = 1

guid = 7F2311E5DABE42FBCD86000D56BAC410

如果换过网卡之后,需要重新运行ocfs_uid_gen -c获得gid

最后,加载ocfs启动Oracle Cluster Manager,这个命令在一个节点上,安装后只需要运行一次,在以后系统启动的时候,将由ocfs服务自动从/etc/fstab中加载。

su - root

# /sbin/load_ocfs

注意:所有以上步骤,需要在所有节点上进行,如果是单节点,就在一个节点上运行即可。以下的操作,在一个节点上进行即可。

为了利用ocfs文件系统,我们先划分两个分区来,一个用于CM的检查文件(quorum file),一个用于存放共享的数据库包括控制文件,数据文件,日志文件,归档文件,服务器配置文件(srvm configuration file)等。

# fdisk /dev/sdb

划分一个/dev/sdb1与/dev/sdb5

然后创建一个挂装点

mkdir /shared;chmod 777 /shared

mkdir /ocfs01;chmod 777 /ocfs01

现在,我们格式化该分区。

# mkfs.ocfs -b 128 -C -g 500 -u 500 -L ocfs01 -m /ocfs01 -p 0775 /dev/sdb5

其中的-g -u分别是组与用户编号

各个参数意义如下

-F强制格式化现有的ocfs分区

-b 块的大小(KB),必须是多个ORACLE块大小,Oracle建议128K

-L 卷的标签

-m 挂装点 (本文 "/ocfs01")

-u根路径的所有者的UID (本文是"oracle")

-g 根路径所有者组的GID (本文是 "dba")

-p 根路径的权限许可

现在,我们可以挂装该分区

#services ocfs start #如果已经启动,就不必了

#mount -t ocfs /dev/sdb1 /shared

#mount -t ocfs /dev/sdb5 /ocfs01

也可以在/etc/fstab中增加如下条目,在系统启动的时候,会自动加载

/dev/sda1 /shared ocfs _netdev 0 0

/dev/sda5 /cfs01 ocfs _netdev 0 0

我们用df就可以看到类似如下的信息

/dev/sdb1 1026144 24288 1001856 3% /shared

/dev/sdb5 34529760 1153120 33376640 4% /ocfs01

以上所有步骤做完,建议重新启动一次,让多个节点确认到共享设备。

4.3 Raw裸设备
首先需要划分一系列的分区,需要注意的是,每个设备不能多于15个分区,Linux总共不能超过255个裸设备。

裸设备一般用于共享磁盘系统。可以用如下的方法挂装

#su - root

raw /dev/raw/raw1 /dev/sda2 # Used for the Cluster Manager Quorum File

raw /dev/raw/raw2 /dev/sda3 # Used for the Shared Configuration file for srvctl

# /dev/sda4: Used for creating the Extended Partition which starts as /dev/sda5.

raw /dev/raw/raw3 /dev/sda5 # spfileorcl.ora

raw /dev/raw/raw4 /dev/sda6 # control01.ctl

raw /dev/raw/raw5 /dev/sda7 # control02.ctl

raw /dev/raw/raw6 /dev/sda8 # indx01.dbf

raw /dev/raw/raw7 /dev/sda9 # system01.dbf

raw /dev/raw/raw8 /dev/sda10 # temp01.dbf

raw /dev/raw/raw9 /dev/sda11 # tools01.dbf

raw /dev/raw/raw10 /dev/sda12 # undotbs01.dbf

raw /dev/raw/raw11 /dev/sda13 # undotbs02.dbf

raw /dev/raw/raw12 /dev/sda14 # undotbs03.dbf

raw /dev/raw/raw13 /dev/sda15 # users01.dbf

raw /dev/raw/raw14 /dev/sdb5 # redo01.log (Group# 1 Thread# 1)

raw /dev/raw/raw15 /dev/sdb6 # redo02.log (Group# 2 Thread# 1)

raw /dev/raw/raw16 /dev/sdb7 # redo03.log (Group# 3 Thread# 2)

raw /dev/raw/raw17 /dev/sdb8 # orcl_redo2_2.log (Group# 4 Thread# 2)

raw /dev/raw/raw18 /dev/sdb9 # orcl_redo3_1.log (Group# 5 Thread# 3)

raw /dev/raw/raw19 /dev/sdb10 # orcl_redo3_2.log (Group# 6 Thread# 3)

如果检查连接,用如下命令

su - root

raw -qa

或者

more /dev/raw/raw1类似的方法检查。

如果想在启动的时候,自动挂载,请把以上的命令写到/etc/rc.local中,或者编写/etc/sysconfig下的rawdevices文件,如

# more rawdevices

/dev/raw/raw1 /dev/sda2

/dev/raw/raw2 /dev/sda3

……

如果需要对裸设备授权,可以运行如下脚本,其中n表示裸设备分区数目

su - root

for i in `seq 1 n`

do

chmod 660 /dev/raw/raw$i

chown oracle.dba /dev/raw/raw$i

done

再用如下的方法建立软联结,那么就可以和文件系统一样使用裸设备了。

su - oracle

ln -s /dev/raw/raw1 /var/opt/oracle/oradata/orcl/CMQuorumFile

ln -s /dev/raw/raw2 /var/opt/oracle/oradata/orcl/SharedSrvctlConfigFile

ln -s /dev/raw/raw3 /var/opt/oracle/oradata/orcl/spfileorcl.ora

……

注意:以上操作除了分区外,需要在每个节点完成

4.4 其它,如nfs文件系统
注意启动nfs,nfslock服务

Mount该文件系统的方法如下

mount 10.0.29.152:/vol/vol1/fas250 /netapp nfs

rw,hard,nointr,tcp,noac,vers=3,timeo=600,rsize=32768,wsize=32768

也可以放到fstab中,与以上类似

其它的地方与ocfs类似,不再额外描述

第五章. 安装OCM(Oracle Cluster Manager)
5.1生成一个CM管理文件
如果是单节点文件系统,可以用如下命令模拟

su - oracle

$dd if=/dev/zero of=/u01/oracle/oradata/rac/RacQuorumDisk bs=1024 count=1024

如果是多节点ocfs或raw设备,可以同样用dd生成相应的文件,放到准备好的共享磁盘设备上,大小1M即可。

5.2 安装OCM管理软件
1、如果是9201 for linux,先安装9201 OCM,安装选项的最后一项,然后升级到9204

2、如果是9204 for linux,直接选中9204 OCM安装即可

3、如果在AS 3.0上安装,请在安装前进行如下操作


先链接gcc

su - root

mv /usr/bin/gcc /usr/bin/gcc323

ln -s /usr/bin/gcc296 /usr/bin/gcc

mv /usr/bin/g++ /usr/bin/g++323 # if g++ doesn t exist, then gcc-c++ was not installed

ln -s /usr/bin/g++296 /usr/bin/g++


然后打补丁3006854,可以去下载补丁并参考补丁更多的信息

su - root

# unzip p3006854_9204_LINUX.zip

Archive: p3006854_9204_LINUX.zip

creating: 3006854/

inflating: 3006854/rhel3_pre_install.sh

inflating: 3006854/README.txt

# cd 3006854

# sh rhel3_pre_install.sh

Applying patch...

Patch successfully applied



如果在本地X Win拒绝图形界面,注意设置

$xhost +本机名或IP



在公共节点与私有节点输入机器名称,与/etc/hosts的内容一致,如果不添写也可以,这个可以再配置

在需要我们输入这个磁盘分区的时候, 我们输入我们生成的文件名称,如果不输入也可以再配置

/u01/oracle/oradata/rac/RacQuorumDisk

5.3配置OCM文件
1、cmcfg.ora配置文件
[oracle@appc2 admin]$ cp cmcfg.ora.tmp cmcfg.ora

查看配置文件的内容,可以发现有如下内容

[oracle@appc2 admin]$ more cmcfg.ora

HeartBeat=15000

ClusterName=Oracle Cluster Manager, version 9i

PollInterval=1000

MissCount=210

PrivateNodeNames=dbrac

PublicNodeNames=dbrac

ServicePort=9998

#WatchdogSafetyMargin=5000

#WatchdogTimerMargin=60000

HostName=dbrac

CmDiskFile=/home/oracle/oradata/rac/RacQuorumDisk

因为我们不再用watchdog去检测系统,而是用hangcheck-timer,所以,我们需要注释Watchdog的两行,增加如下一行

KernelModuleName=hangcheck-timer

以上的单节点RAC的一个例子,可以看到,在安装界面要求输入的节点名称,文件名称,都有对应的项目,这个因为是单节点,所有公用节点与私有节点都只有一个。

如果是多节点的RAC,公用节点与私有节点应当类似如下

PrivateNodeNames=dbrac1-eth1 dbrac2-eth1

PublicNodeNames=dbrac1 dbrac2

其中,私有节点是网卡2配置的地址,用于两台节点直接的通信

公用节点是网卡1配置的地址,用于外部访问数据库。

2、ocmargs.ora配置文件
注释$ORACLE_HOME/oracm/admin/ocmargs.ora中包含watchdogd的行

more $ORACLE_HOME/oracm/admin/ocmargs.ora

# Sample configuration file $ORACLE_HOME/oracm/admin/ocmargs.ora

#watchdogd

oracm

norestart 1800

3、ocmstart.sh启动文件
注释$ORACLE_HOME/oracm/bin/ocmstart.sh中的以下行

# watchdogd s default log file

# WATCHDOGD_LOG_FILE=$ORACLE_HOME/oracm/log/wdd.log

# watchdogd s default backup file

# WATCHDOGD_BAK_FILE=$ORACLE_HOME/oracm/log/wdd.log.bak

# Get arguments

# watchdogd_args=`grep ^watchdogd $OCMARGS_FILE |\

# sed -e s+^watchdogd *++ `

# Check watchdogd s existance

# if watchdogd status | grep Watchdog daemon active >/dev/null

# then

# echo ocmstart.sh: Error: watchdogd is already running

# exit 1

# fi

# Backup the old watchdogd log

# if test -r $WATCHDOGD_LOG_FILE

# then

# mv $WATCHDOGD_LOG_FILE $WATCHDOGD_BAK_FILE

# fi

# Startup watchdogd

# echo watchdogd $watchdogd_args

# watchdogd $watchdogd_args

5.4启动ocm
$ cd $ORACLE_HOME/oracm/bin

$ su

# ./ocmstart.sh

启动完用ps -ef|grep oracm看一下有没进程,如果没有到$ORACLE_HOME/oracm/log目录下查出错信息

阅读(781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~