在 RHEL 5 x86-64 安装Oracle RAC 10G with iscsi and raw

RAC 结点数,2个结点
oracle 版本号 10.2.0.1 for x86-64
pathc 10.2.0.5
os RedHat AS5.4 x84-64

安装需要软件包 软件包 下载地址:
10201_database_linux_x86_64.cpio.gz database http://www.oracle.com/technology/global/cn/software/products/database/index.html
10201_clusterware_linux_x86_64.cpio.gz 集群件 http://www.oracle.com/technology/global/cn/software/products/database/index.html
p8202632_10205_Linux-x86-64.zip 10.2.0.5补丁包 http://www.oracledatabase12g.com/archives/oracle%e5%ae%89%e8%a3%85%e4%bb%8b%e8%b4%a8%e5%8f%8a%e8%a1%a5%e4%b8%81%e9%9b%86%e4%b8%8b%e8%bd%bd%e5%9c%b0%e5%9d%80%e8%a1%a5%e5%85%a8%e7%89%88.html
p4679769_10201_Linux-x86-64.zip 解决安装clusterware时候错误补丁包 http://www.itpub.net/redirect.php?tid=1275008&goto=lastpost#

网卡配置如下:
node1 eth0 192.168.19.161/255.255.255.0 #Public
192.168.19.166/255.255.255.0 #Virtual
eth1 169.254.100.160/255.255.255.0 #ShareStore
eth2 10.10.10.161/255.255.255.0 #Private

node2 eth0 192.168.19.162/255.255.255.0 #Public
192.168.19.167/255.255.255.0 #Virtual
eth1 169.254.100.162/255.255.255.0 #ShareStore
eth2 10.10.10.162/255.255.255.0 #Private

硬盘配制如下:
/dev/sda 本地磁盘
/dev/raca 共享磁盘raw存放数据文件
/dev/racb
/dev/racc
/dev/racd


一、操作系统安装注意事项

1.RedHat AS 5.4 操作系统选项

桌面环境 GNOME 桌面环境
应用程序 图形化互联网
开发 开发工具
开发库
老的软件开发
服务器 网络服务器(可选)
基本系统 Java
X 窗口系统
基本
拨号联网支持
管理工具
系统工具
老的软件支持
杂项选项:
全部不要选择;
请大家一要安装好以上所列出的软件包,否则安装Oracle系统时,会出现一些不必须要的错误信息!


2.同时检查以下包是否被安装

rpm -q binutils
rpm -q compat-db
rpm -q compat-libstdc++-33
rpm -q control-center
rpm -q gcc
rpm -q gcc-c++
rpm -q glibc
rpm -q glibc-common
rpm -q gnome-libs
rpm -q libstdc++
rpm -q libstdc++-devel
rpm -q make
rpm -q pdksh
rpm -q sysstat
rpm -q xscreensaver
rpm -q libaio
rpm -q libXp

查询版本号可以用以下语句
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})n'
binutils
compat-libstdc++-33
compat-db
control-center
gcc
gcc-c++
glibc
glibc-common
glibc-devel-2.5
libstdc++
libstdc++-devel
make
sysstat
libaio
libXp

注意,libaio要确认是x86_64位版本软件包,如果是装了32位版本,用
rpm -q libaio也能查询出来,如果已经装了libaio,如果保险启见,我们先用下面命令删除
rpm -e libaio
然后在挂载第4张光盘,转到/media/cdrom/RedHat/RPMS目录下,用以下命令安装64位的libaio包
rpm -i libaio-devel-0.3.105-2.x86_64.rpm

本人就碰到装了32位本后,用rpm -q libaio查询包都在,但最后用以上方法把包装上去的,如果包没装,在创建数据库的时候会报
ORA-12547:TNS:lost contact 错误

兼容性体系开发支持 也要全部选择,否则会在装clusterware软件时候报错误,本人就没装报过运行vipca 总是报PRKH-1010 Unable to communicate with CRS services错误

libXp 包需要32位的,否则启动不了安装界面
glibc 包括32位
glibc-devel-2.5 包括32位
compat-libstdc 包括32位和64位


二、网络配置

oracle RAC需要两块网卡,每个结点需要3个IP地址,一个公用,一个虚拟,一个私有

其中Public和虚拟绑定在同一网卡上,需要规划到网络当中,于企业的现有网络能连通
私有的网络是oracle专用网络,最好能提供一个专用交换机和专用网端,可以不和现有网络连通,只要保证所连接几台结点能连通就行了
同时oracle Clusterware规定所有结点网络配制要一制,也就是eth0为公用和虚拟,eth1为私有,所有结点都需要这样配置

下面是我每个结点配置如下
node1 eth0 192.168.19.161/255.255.255.0 #Public
eth2 10.10.10.161/255.255.255.0 #Virtual
node2 eth0 192.168.19.162/255.255.255.0
eth2 10.10.10.162/255.255.255.0

配置/etc/hosts文件,文件内容如下

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost

#Public
192.168.19.161 node1
192.168.19.162 node2

#Virtual
192.168.19.166 node1-vip
192.168.19.167 node2-vip

#Private
10.10.10.161 node1-priv
10.10.10.162 node2-priv

#shareStore
169.254.100.160 sharestore

其中192.168.19.166...1662个IP是虚拟IP,等下安装Clusterware时候会自动绑定到网卡eth0上面的。
而127.0.0.1 localhost.localdomain localhost 这行信息也不能删除,否则在以后执行vipca的时候会报CRS-0215错误
有些 Linux 发行版本将主机名与回送地址 (127.0.0.1) 相关联。 如果出现这种情况,则从回送地址中删除主机名。


三、建立ntp时间同步
选用一台节点充当ntpd服务,这里我们选用node1做为ntpd服务

如果是联互联网,可以用ntpdate 133.100.11.8同步最新全球时间,如果没有可以调过此步骤。
在node1节点上启动ntpd服务
chkconfig ntpd on
service ntpd restart

然后在其另一个节点自动同步时间,在/etc/rc.local加入以下内容

while [ 1 ]; do ntpdate node1 1>/dev/null 2>&1; sleep 2; done &

同时确保这两个节点ntpd要关闭


四、操作系统内核设置等参数

1、配置系统内核参数,以root用户登录,修改在/etc/sysctl.conf文件,在该文件中添加以下参数:
#Install oracle setting
#kernel.shmall = 4294967296
#kernel.shmmax = 68719476736
#kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144


完成后,运行以下命令激活更改:
/sbin/sysctl -p


2、Setting Shell Limits for the oracle User

1.在文件 /etc/security/limits.conf 加以下参数:
#Install oracle setting
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

2.如果以下内容在文件 /etc/pam.d/login 中不存在,请加以下内容
#Install oracle setting
session required pam_limits.so

Disable secure linux by editing the /etc/selinux/config file, making sure the SELINUX flag is set as follows
SELINUX=disabled


3.设置oracle 用户打开文件限制
在以下文件 /etc/profile 加入以下内容:
#Install oracle setting
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi


4.Set the hangcheck kernel module parameters by adding the following line to the /etc/modprobe.conf file.

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

To load the module immediately, execute "modprobe -v hangcheck-timer".

5、创建安装数据库时所需要使用的用户组oinstall,dba及Oracle用户,并将oinstall,dba组定义成oracle用户的主次组。命令参考如下:
这里确保所有节点oracle用户的id和onstall,dba等gid要相同
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle (设定oracle用户为oinstall、dba用户组的成员)
# passwd oracle (设定oracle用户的密码)


6.为了方面管理,我们同时需要设置root用户的环境变量

vi .bash_profile (执行vi命令来修改.bash_profile) ,在文件最后面加入以下内容

export ORA_CRS_HOME=/home/oracle/app/oracle/product/10.2.0/crs
export PATH=$PATH:$ORA_CRS_HOME/bin

7、配置oracle用户环境,以oracle用户登录,修改oracle用户下的 .bash_profile 文件。增加以下参数:
vi .bash_profile (执行vi命令来修改.bash_profile)
# Get the aliases and functions
  
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
  
# User specific environment and startup programs
  
PATH=$PATH:$HOME/bin
  
export PATH
unset USERNAME

# 以下是我们所需配置的内容

#Install oracle setting
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8
export ORACLE_SID=raw10g1
export ORA_CRS_HOME=/home/oracle/app/oracle/product/10.2.0/crs
stty erase ^H
export LANG=zh_CN.UTF-8

五、在所有结点配置ssh

设置oracle用户配置所有结点的相互信任,以oracle用户登录,在每个节点上执行以下语句
mkdir ~/.ssh
chmod 700 ~/.ssh
/usr/bin/ssh-keygen -t rsa # 接受默认设置

在node1上执行
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
scp authorized_keys node2:/home/oracle/.ssh/

在node2上执行
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
scp authorized_keys node1:/home/oracle/.ssh/


以上步骤不能换,否则用以下测试不成功


所有结点相互执行,看看是否还需要输入密码,在oracle用户下所有结点都执行以下命令
ssh node1 date
ssh node2 date
ssh node1-priv date
ssh node2-priv date

自己的节点也需要在自己节点上执行
如node1节点上也需要执行
ssh node1 date
ssh node1-priv date

六、创建iscsi共享存储系统


本来这次测试环境挡建,本以为公司为买专业级或企业级的iscsi存储器的,没想到后来公司买来的iscsi存储器是QNAP公司的Turbo nas是一个家庭里用用的nas存储器,晕了。
没办法,只能用这个来做iscsi服务器了,最可恶是这个iscsi target服务在aix平台不能使用。


我在 Turbo nas创建了四个iscsi target.别名(IQN)如下,每个target有100G硬盘。
iqn.2004-04.com.qnap:ts-459:iscsi.racdata1.c5cfdd
iqn.2004-04.com.qnap:ts-459:iscsi.racdata2.c5cfdd
iqn.2004-04.com.qnap:ts-459:iscsi.racdata3.c5cfdd
iqn.2004-04.com.qnap:ts-459:iscsi.racdata4.c5cfdd


下面步骤在node1和node2上安装和配置iscsi-initiator


1、检查环境和是否安装

首先确认iscsi-initiator-utils包是否安装


# rpm -q iscsi-initiator-utils

如果没有安装,请到光盘里的Server目录下查找iscsi-initiator-utils-6.2.0.871-0.10.el5.x86_64.rpm文件,把文件复制到linux机器,
使用以下命令安装:


# rpm -ivh iscsi-initiator-utils-6.2.0.871-0.10.el5.x86_64.rpm

安装好后,确认iscsi服务随系统启动而启动

用chkconfig检查iscsi和iscsid服务在运行级别3和5中随系统的启动而自动启动

# chkconfig --list |grep iscsi
iscsi 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
iscsid 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭

如果iscsid和iscsi没有随系统的启动而启动,则用chkconfig设置这两个服务在系统运行级别为3和5时随系统启动而启动

# chkconfig iscsi --level 345 on
# chkconfig iscsid --level 345 on


2、配置initiatorname.iscsi

initiatorname.iscsi文件的功能作用是配置iscsi发起方的InitiatorName名,
进入/etc/iscsi 目录,编辑文件initiatorname.iscsi

在节点node1
# cd /etc/iscsi/
# vi initiatorname.iscsi
InitiatorName=iqn.2011-01.com.unimas:rac.node1

在节点node2
# cd /etc/iscsi/
# vi initiatorname.iscsi
InitiatorName=iqn.2011-01.com.unimas:rac.node2


注意:
1、InitiatorName这个单词必须注意大小写,同时,必须顶格写,xxxx代表要设 置的initiator名称,请遵循iqn命名规范。
2、iqn规范定义的InitiatorName格式为iqn.domaindate. reverse.domain.name:optional name,例如:iqn.2006-11.com.h3c:dbserver。

3、启动iscsi,iscsid服务

# service iscsi start

一般情况下启动这个服务,iscsid服务会自动启动。

Open-iSCSI是通过以下iSCSI数据库文件来实现永久配置的:

Discovery (/var/lib/iscsi/send_targets):在/var/lib/iscsi/send_targets目录下包含iSCSI portals的配置信息,每个portal对应一个文件,文件名为“iSCSI portal IP,端口号”(例如“200.200.10.200,3260”)。

Node (/var/lib/iscsi/nodes):在/var/lib/iscsi/nodes目录下,生成一个或多个以iSCSI存储服务器上的Target名命名的文件夹,在该文件夹下有一个文件名为“iSCSI portal IP,端口号” (例如“200.200.10.200,3260”)的配置参数文件,该文件中是initiator登录target时要使用的参数,这些参数的设置是从/etc/iscsi/iscsi.conf中的参数设置继承而来的,可以通过iscsiadm对某一个参数文件进行更改(需要先注销到target的登录)。

iscsiadm是用来管理(更新、删除、插入、查询)iSCSI配置数据库文件的命令行工具,用户能够用它对iSCSI nodes、sessions、connections和discovery records进行一系列的操作。


4、分配存储资源,在Linux上执行target的发现

RHEL 5上当前的iSCSI Initiator版本只支持sendtargets 的发现方式,不支持SLP和iSNS
我手动用iscsiadm命令来添加iscsi target
iscsiadm -m node -T iqn.2004-04.com.qnap:ts-459:iscsi.racdata1.c5cfdd -p 169.254.100.160:3260 -o new
iscsiadm -m node -T iqn.2004-04.com.qnap:ts-459:iscsi.racdata2.c5cfdd -p 169.254.100.160:3260 -o new
iscsiadm -m node -T iqn.2004-04.com.qnap:ts-459:iscsi.racdata3.c5cfdd -p 169.254.100.160:3260 -o new
iscsiadm -m node -T iqn.2004-04.com.qnap:ts-459:iscsi.racdata4.c5cfdd -p 169.254.100.160:3260 -o new

加好以后,重新启动iscsi服务

# service iscsi stop
Stopping iSCSI daemon:
# service iscsi start


由于iscsi加载上来硬盘会随着加载顺序会变化盘符,我们需要使用一种用udev方法来固定
首先我们查看/dev/disk/by-id和/dev/disk/by-path下面信息

# ll /dev/disk/by-id/*
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-id/scsi-360014054328b248dc0dbd412bd9c77d9 -> ../../sdc
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-id/scsi-36001405da872b5edfa8ad4f38db2fdd6 -> ../../sdd
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-id/scsi-36001405e0811de5dffafd427cdbc81d4 -> ../../sde
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-id/scsi-36001405e59d3346d1606d41b5db451de -> ../../sdb
lrwxrwxrwx 1 root root 9 01-20 15:31 /dev/disk/by-id/scsi-SATA_WDC_WD1002FAEX-_WD-WCATR3548604 -> ../../sda
lrwxrwxrwx 1 root root 10 01-20 15:31 /dev/disk/by-id/scsi-SATA_WDC_WD1002FAEX-_WD-WCATR3548604-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 01-20 15:31 /dev/disk/by-id/scsi-SATA_WDC_WD1002FAEX-_WD-WCATR3548604-part2 -> ../../sda2


# ll /dev/disk/by-path/*
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-path/ip-169.254.100.100:3260-iscsi-iqn.2004-04.com.qnap:ts-459:iscsi.racdata1.c5cfdd-lun-0 -> ../../sdd
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-path/ip-169.254.100.100:3260-iscsi-iqn.2004-04.com.qnap:ts-459:iscsi.racdata2.c5cfdd-lun-0 -> ../../sdb
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-path/ip-169.254.100.100:3260-iscsi-iqn.2004-04.com.qnap:ts-459:iscsi.racdata3.c5cfdd-lun-0 -> ../../sde
lrwxrwxrwx 1 root root 9 01-21 09:47 /dev/disk/by-path/ip-169.254.100.100:3260-iscsi-iqn.2004-04.com.qnap:ts-459:iscsi.racdata4.c5cfdd-lun-0 -> ../../sdc


以上内容是/dev/disk目录下面信息软件连接生成本地目录,但这两个目录下的软连接文件名,是不会变化的。

在这里,我们就需要使用udev的动态管理工具。udev 提供了一个动态设备目录,使用一组可配置的规则通过符号链接指向实际设备。
当 udev 收到设备事件(例如,客户端登录到 iSCSI 目标)时,就会根据 sysfs 中提供的可用设备属性匹配其配置好的规则以便识别设备。
匹配规则可以提供其他设备信息或指定设备节点名和多个符号链接名,并指示 udev 运行其他程序(例如,一个 SHELL 脚本)作为设备事件处理过程的一部分

对udev详细了解,可以查看ibm网站上一篇文章。http://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html?ca=drs-cn-0304

# /etc/udev/rules.d/55-openiscsi.rules
KERNEL=="sd*", BUS=="scsi",PROGRAM="scsi_id -g -s %p",RESULT=="36001405da872b5edfa8ad4f38db2fdd6",NAME="raca%n",SYMLINK="iscsi/raca%n"
KERNEL=="sd*", BUS=="scsi",PROGRAM="scsi_id -g -s %p",RESULT=="36001405e59d3346d1606d41b5db451de",NAME="racb%n",SYMLINK="iscsi/racb%n"
KERNEL=="sd*", BUS=="scsi",PROGRAM="scsi_id -g -s %p",RESULT=="36001405e0811de5dffafd427cdbc81d4",NAME="racc%n",SYMLINK="iscsi/racc%n"
KERNEL=="sd*", BUS=="scsi",PROGRAM="scsi_id -g -s %p",RESULT=="360014054328b248dc0dbd412bd9c77d9",NAME="racd%n",SYMLINK="iscsi/racd%n"


文件内容说明如下
PROGRAM="scsi_id -g -s %p" 是获取scsi_id号,这个号是唯一的,RESULT是返回值,==两个等号是比较,NAME是在 /dev下产生的设备文件名,SYMLINK:为 /dev/下的设备文件产生符号链接
scsi_id号可以使用scsi_id命令来获取,如下

# scsi_id -g -s /block/sdb
36001405e59d3346d1606d41b5db451de

然后重新启动iscsi服务
service iscsi stop
service iscsi start

查看连接
# ll /dev/iscsi/*
lrwxrwxrwx 1 root root 7 01-29 15:37 /dev/iscsi/raca -> ../raca
lrwxrwxrwx 1 root root 7 01-29 15:37 /dev/iscsi/racb -> ../racb
lrwxrwxrwx 1 root root 7 01-29 15:37 /dev/iscsi/racc -> ../racc
lrwxrwxrwx 1 root root 7 01-29 15:37 /dev/iscsi/racd -> ../racd
查看设备文件名
# ll /dev/rac*
brw-r----- 1 root disk 8, 48 01-29 15:37 /dev/raca
brw-r----- 1 root disk 8, 16 01-29 15:37 /dev/racb
brw-r----- 1 root disk 8, 64 01-29 15:37 /dev/racc
brw-r----- 1 root disk 8, 32 01-29 15:37 /dev/racd

七、划分和创建裸设备


1.用lvm创建逻辑分区

创建裸设备需要做一个规划,由于这里只有一块硬盘,一块硬盘目前只能最多分成16个区,为了管理方便,这里采用linux逻辑盘卷管理(LVM,Logical Volume Manager)

下面简单介绍一下
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,
来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volume group),形成一个存储池。
管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,
并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名
“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越
磁盘即可。

用多个物理磁盘组成一个逻辑卷组,然后在逻辑卷组上创建一个逻辑卷,相档硬盘分区。如果硬盘空间满了不足,然后在往逻辑卷组增加一块硬盘,然后可以动态调整逻辑卷大小。

存储规划lvm分逻辑卷如下:
/dev/mapper/oradata-voting_disk 52m
/dev/mapper/oradata-crs_configuration 152m
/dev/mapper/oradata-orapwd 8m
/dev/mapper/oradata-spfile 8m
/dev/mapper/oradata-control1 156m
/dev/mapper/oradata-control2 156m
/dev/mapper/oradata-system01 1G
/dev/mapper/oradata-sysaux01 1G
/dev/mapper/oradata-redo01 1G
/dev/mapper/oradata-redo02 1G
/dev/mapper/oradata-redo03 1G
/dev/mapper/oradata-redo04 1G
/dev/mapper/oradata-redo05 1G
/dev/mapper/oradata-redo06 1G
/dev/mapper/oradata-undotbs01 32g
/dev/mapper/oradata-undotbs02 32g
/dev/mapper/oradata-temp01 32g
/dev/mapper/oradata-users01 32g
/dev/mapper/oradata-users02 32g
/dev/mapper/oradata-users03 32g
/dev/mapper/oradata-users04 32g

首先用进入lvm管理器,然后用pvcreate命令创建物理pv,用有4块iscsi硬盘。
#lvm
lvm> pvcreate /dev/raca /dev/racb /dev/racc /dev/racd
Physical volume "/dev/raca" successfully created
Physical volume "/dev/racb" successfully created
Physical volume "/dev/racc" successfully created
Physical volume "/dev/racd" successfully created

创建卷组oradata,把上面4块创建起来加入此卷。

lvm> vgcreate oradata /dev/raca /dev/racb /dev/racc /dev/racd
Volume group "oradata" successfully created

用lvcreate创建逻辑卷组,

lvcreate -L 52m -n voting_disk oradata
lvcreate -L 152m -n crs_configuration oradata
lvcreate -L 8m -n orapwd oradata
lvcreate -L 8m -n spfile oradata
lvcreate -L 156m -n control1 oradata
lvcreate -L 156m -n control2 oradata
lvcreate -L 1g -n system01 oradata
lvcreate -L 1g -n sysaux01 oradata
lvcreate -L 1g -n redo01 oradata
lvcreate -L 1g -n redo02 oradata
lvcreate -L 1g -n redo03 oradata
lvcreate -L 1g -n redo04 oradata
lvcreate -L 1g -n redo05 oradata
lvcreate -L 1g -n redo06 oradata
lvcreate -L 32g -n undotbs01 oradata
lvcreate -L 32g -n undotbs02 oradata
lvcreate -L 32g -n temp01 oradata
lvcreate -L 32g -n users01 oradata

在node1节点划分好以后,在node2节点执行
vgchange -a y oradata
激活oradata逻辑卷组。


2.用raw绑定逻辑分区

在每个节点加入/etc/sysconfig/rawdevices文件内容

/dev/raw/raw1 /dev/mapper/oradata-voting_disk
/dev/raw/raw2 /dev/mapper/oradata-crs_configuration
/dev/raw/raw3 /dev/mapper/oradata-orapwd
/dev/raw/raw4 /dev/mapper/oradata-spfile
/dev/raw/raw5 /dev/mapper/oradata-control1
/dev/raw/raw6 /dev/mapper/oradata-control2
/dev/raw/raw7 /dev/mapper/oradata-system01
/dev/raw/raw8 /dev/mapper/oradata-sysaux01
/dev/raw/raw9 /dev/mapper/oradata-undotbs01
/dev/raw/raw10 /dev/mapper/oradata-undotbs02
/dev/raw/raw11 /dev/mapper/oradata-redo01
/dev/raw/raw12 /dev/mapper/oradata-redo02
/dev/raw/raw13 /dev/mapper/oradata-redo03
/dev/raw/raw14 /dev/mapper/oradata-redo04
/dev/raw/raw15 /dev/mapper/oradata-redo05
/dev/raw/raw16 /dev/mapper/oradata-redo06
/dev/raw/raw21 /dev/oradata/redo11
/dev/raw/raw22 /dev/oradata/redo12
/dev/raw/raw23 /dev/oradata/redo13
/dev/raw/raw24 /dev/oradata/redo14
/dev/raw/raw25 /dev/oradata/redo15
/dev/raw/raw26 /dev/oradata/redo16
/dev/raw/raw30 /dev/oradata/temp01
/dev/raw/raw31 /dev/mapper/oradata-users01


在都rehad 5管理raw已经采用udev来管理权限,编辑如下文件/etc/udev/rules.d/60-raw.rules

加入以下内容


ACTION=="add", KERNEL=="raw1", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw2", OWNER="root", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw3", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw4", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw5", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw6", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw7", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw8", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw9", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw10", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw11", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw12", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw13", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw14", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw15", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw16", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw17", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw18", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw19", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw20", OWNER="oracle", GROUP="oinstall", MODE="0660"
ACTION=="add", KERNEL=="raw21", OWNER="oracle", GROUP="oinstall", MODE="0660"

然后在每个结点执行以下命令
# chkconfig --level 345 rawdevices on
# service rawdevices restart
用以下命令查询是否已经绑定,权限是否正确
# ll /dev/raw/raw*
crw-rw---- 1 oracle oinstall 162, 1 02-18 11:06 /dev/raw/raw1
crw-rw---- 1 oracle oinstall 162, 10 02-17 09:30 /dev/raw/raw10
crw-rw---- 1 oracle oinstall 162, 11 02-17 09:30 /dev/raw/raw11
crw-rw---- 1 oracle oinstall 162, 12 02-17 09:31 /dev/raw/raw12
crw-rw---- 1 oracle oinstall 162, 13 02-17 16:11 /dev/raw/raw13
crw-rw---- 1 oracle oinstall 162, 14 02-18 11:06 /dev/raw/raw14
crw-rw---- 1 oracle oinstall 162, 15 02-17 16:15 /dev/raw/raw15
crw-rw---- 1 oracle oinstall 162, 16 02-18 11:06 /dev/raw/raw16
crw-rw---- 1 oracle oinstall 162, 17 02-17 22:03 /dev/raw/raw17
crw-rw---- 1 oracle oinstall 162, 18 02-17 16:15 /dev/raw/raw18
crw-rw---- 1 oracle oinstall 162, 19 02-17 16:15 /dev/raw/raw19
crw-rw---- 1 root oinstall 162, 2 02-17 09:30 /dev/raw/raw2
crw-rw---- 1 oracle oinstall 162, 20 02-17 16:15 /dev/raw/raw20
crw-rw---- 1 oracle oinstall 162, 21 02-17 16:15 /dev/raw/raw21
crw-rw---- 1 oracle oinstall 162, 22 02-17 16:15 /dev/raw/raw22
crw-rw---- 1 oracle oinstall 162, 23 02-17 16:15 /dev/raw/raw23
crw-rw---- 1 oracle oinstall 162, 24 02-17 16:15 /dev/raw/raw24
crw-rw---- 1 oracle oinstall 162, 25 02-17 16:15 /dev/raw/raw25
crw-rw---- 1 oracle oinstall 162, 26 02-17 16:15 /dev/raw/raw26
crw-rw---- 1 oracle oinstall 162, 27 02-17 16:15 /dev/raw/raw27
crw-rw---- 1 oracle oinstall 162, 28 02-17 16:15 /dev/raw/raw28
crw-rw---- 1 oracle oinstall 162, 29 02-17 16:15 /dev/raw/raw29
crw-r----- 1 oracle oinstall 162, 3 02-17 09:30 /dev/raw/raw3
crw-rw---- 1 oracle oinstall 162, 30 02-17 16:15 /dev/raw/raw30
crw-rw---- 1 oracle oinstall 162, 31 02-17 17:32 /dev/raw/raw31
crw-rw---- 1 oracle oinstall 162, 32 02-17 16:15 /dev/raw/raw32
crw-rw---- 1 oracle oinstall 162, 33 02-17 16:15 /dev/raw/raw33
crw-rw---- 1 oracle oinstall 162, 34 02-17 16:15 /dev/raw/raw34
crw-rw---- 1 oracle oinstall 162, 35 02-17 16:15 /dev/raw/raw35
crw-rw---- 1 oracle oinstall 162, 36 02-17 16:15 /dev/raw/raw36
crw-rw---- 1 oracle oinstall 162, 37 02-17 16:15 /dev/raw/raw37
crw-rw---- 1 oracle oinstall 162, 38 02-17 16:15 /dev/raw/raw38
crw-rw---- 1 oracle oinstall 162, 39 02-17 16:15 /dev/raw/raw39
crw-rw---- 1 oracle oinstall 162, 4 02-17 09:31 /dev/raw/raw4
crw-rw---- 1 oracle oinstall 162, 40 02-17 16:15 /dev/raw/raw40
crw-rw---- 1 oracle oinstall 162, 41 02-17 16:15 /dev/raw/raw41
crw-rw---- 1 oracle oinstall 162, 5 02-18 11:06 /dev/raw/raw5
crw-rw---- 1 oracle oinstall 162, 6 02-18 11:06 /dev/raw/raw6
crw-rw---- 1 oracle oinstall 162, 7 02-18 11:06 /dev/raw/raw7
crw-rw---- 1 oracle oinstall 162, 8 02-18 11:06 /dev/raw/raw8
crw-rw---- 1 oracle oinstall 162, 9 02-17 09:30 /dev/raw/raw9


由于本机使用iscsi存储,硬盘分析采用lvm,而lvm启动先于tcpip协议服务,所以要设置一个激活卷组服务
# vi /etc/init.d/lvm2-oradata

#!/bin/sh
#
# chkconfig: 345 14 86
# description: 激活卷组oradata
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin
RETVAL=0


start()
{
sleep 2
vgchange -a y oradata #激活卷组oradata

}

stop()
{
vgchange -a n oradata
}

status()
{
lvscan
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL

设置自动启动
# chmod a+x /etc/init.d/lvm2-oradata
# chkconfig --level 345 lvm2-oradata on


八、安装clusterware软件

安装clusterware软件以oracle用户登录

然后用ftp把软件包上传到node1
10201_clusterware_linux_x86_64.cpio.gz
10201_database_linux_x86_64.cpio.gz

用以下命令解压两个文件
gunzip 10201_clusterware_linux_x86_64.cpio.gz
cpio -idmv < 10201_clusterware_linux_x86_64.cpio

gunzip 10201_database_linux_x86_64.cpio.gz
cpio -idmv < 10201_database_linux_x86_64.cpio

在节点node1上安装
cd clusterware
./runInstaller
欢迎页面:单击 Next。
指定 Inventory 目录和证书:
输入 inventory 目录的完整路径:/home/oracle/app/oracle/oraInventory。
组名:oinstall。
指定 Home 详细内容:
名称:OraCrs10g_home
/home/oracle/app/oracle/product/10.2.0/crs
特定于产品的必要条件检查
指定集群配置:单击 Add。
公共节点名称:node2
专用节点名称:node2-priv
虚拟主机名称:node2-vip
指定网络接口用法:
接口名称:eth0
子网: 192.168.19.0
接口类型:Public
接口名称:eth1
子网: 10.10.10.0
接口类型:Private
指定 Oracle 集群注册表 (OCR) 位置:选择 External Redundancy。
指定 OCR 位置:/dev/raw/raw2 注意!这里/dev/raw/raw2是要oracle所用户所有者,等上root.sh权限执行后,在变成root用户。
指定表决磁盘位置:选择 External Redundancy。
表决磁盘位置:/dev/raw/raw1
摘要:单击 Install。
执行配置脚本:以 root 用户身份按顺序执行以下脚本(一次执行一个)。在当前脚本完成后,再继续执行下一个脚本。
在 node1 上执行 /home/oracle/app/oracle/oraInventory/orainstRoot.sh。
在 node2 上执行 /home/oracle/app/oracle/oraInventory/orainstRoot.sh。

执行完以后,打上p4679769_10201_Linux-x86-64.zip补丁,把补包p4679769_10201_Linux-x86-64.zip文件clsfmt.bin替换 /home/oracle/app/oracle/product/10.2.0/crs/bin/clsfmt.bin
同时更改添加执行权限
# chmod 755 /home/oracle/app/oracle/product/10.2.0/crs/bin/clsfmt.bin
然后在执行以下脚本,否则会报"Failed to upgrade Oracle Cluster Registry configuration "错误。

在 node1 上执行 /home/oracle/app/oracle/product/10.2.0/crs/root.sh。
在 node2 上执行 /home/oracle/app/oracle/product/10.2.0/crs/root.sh。


node2 上的 root.sh 脚本会自动调用 VIPCA,但会因为“ error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory”错误而失败。需要手动运行 VIPCA。
解决此方法有两种: 详细请看http://blog.chinaunix.net/space.php?uid=7249348&do=blog&cuid=1848843
方法1.不去理会,选择继续,然后安装10.2.0.4及以上版本的patchsets,然后在来手工执行vipca完成vip配置工作,因为这个错误在10.2.0.4版本中已经得到修复
方法2.手工配置
/bin # ./oifcfg setif -global eth0/192.168.1.0:public
/bin # ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
/bin # ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.10.10.0 global cluster_interconnect

/bin # ./oifcfg iflist
eth0 192.168.1.0
eth1 10.10.10.0

然后修改vipca和srvctl ,搜索LD_ASSUME_KERNEL
在下方添加如下
unset LD_ASSUME_KERNEL

再执行./vipca
然后选择图形界面里的重新验证,这样就可以通过了

我这里选择方法1,不去理会,继续走下一步,安装database软件,然后升级10.2.0.5后在调用vipca。

九、安装database软件

cd /u02/orasoft/database
./runInstall


欢迎页面:单击 Next。
选择安装类型:
选择 Enterprise Edition。
指定 Home 详细内容:
名称:OraDb10g_home1
路径:/home/oracle/app/oracle/product/10.2.0/db_1
指定硬件集群安装模式:
选择 Cluster Installation。
单击 Select All。
特定于产品的必要条件检查
选择只安装软件
最后在每个结点运行root.sh这个脚本,注意先后顺序。


十、升级到10.2.0.5

以上安装时候只安装软件,所以此时先打上补丁,不需要升级数据库,这是最快和最安全的方法

以oracle用户先解压以下命令
$ unzip p8202632_10205_Linux-x86-64.zip
$ cd Disk1
$ ./runInstaller
选择name: OraCrs10g_home
path:/home/oracle/app/oracle/product/10.2.0/crs
一直点下一步直到完成。安装好后会提示执行
/home/oracle/app/oracle/product/10.2.0/crs/root102.sh
node2执行:/home/oracle/app/oracle/product/10.2.0/crs/root102.sh

在次执行./runInstaller ,这次选择
name:OraDb10g_home1
path:/home/oracle/app/oracle/product/10.2.0/db_1
一直点下一步到完成,最后在每个节点执行
/home/oracle/app/oracle/product/10.2.0/db_1/root.sh文件。

在安装clusterware软件时候,在node节点执行root.sh报错误,现在已经升级10.2.0.5,现在可以手工调用vipca来执行配置vip资源了。
以 root 用户身份在第node2 节点上手动调用 VIPCA,注意这里需要图形界面
# vipca
欢迎页面:单击 Next。
网络接口:选择 eth0。
集群节点的虚拟 IP:
节点名称:node1
IP 别名:node1-vip
IP 地址: 192.168.19.166
子网掩码: 255.255.255.0
节点名称:node2
IP 别名:node2-vip
IP 地址: 192.168.19.167
子网掩码: 255.255.255.0
摘要:单击 Finish。
配置助手进度对话框:配置完成后,单击 OK。
配置结果:单击 Exit。
返回到 node1 的执行配置脚本屏幕,然后单击 OK。最后点 Exit。

接下来验证安装是否成功,并以 oracle 用户身份重新运行以下命令:
/home/oracle/app/oracle/product/10.2.0/crs/bin/cluvfy stage -post crsinst -n node1,node2
crs_stat -t
用ifconfig查看网络


十一、配置Listener

在用dbca创建数据库之前,需要先配置Listener,否则在创建数据时候也会报


在node1节点oracle用户下输入netca命令。

netca

选择集群配置
选择全部
选择配置监听
接下来全部默认,最后点完成。


十二、创建数据库

以下操作在node1节点下完成
首先创建在/home/oracle/raw10g_raw.conf文件,内容如下:

system=/dev/raw/raw7
sysaux=/dev/raw/raw8
users=/dev/raw/raw31
temp=/dev/raw/raw30
undotbs1=/dev/raw/raw9
undotbs2=/dev/raw/raw10
redo1_1=/dev/raw/raw11
redo1_2=/dev/raw/raw12
redo2_1=/dev/raw/raw14
redo2_2=/dev/raw/raw15
control1=/dev/raw/raw5
control2=/dev/raw/raw6
spfile=/dev/raw/raw4
pwdfile=/dev/raw/raw3


用oracle用户登录

在每个节点上执行下面创建目标命令
$ mkdir -p ~/archvelog/raw10g

在node1节点上创建数据库
$ dbca

选择"Oracle Real Application Clusters数据库"
选择"创建数据库"
点全选
选择"定制数据库"
全局数据库名"raw10g"
默认
输入口令
选择"Raw Devices"
打上钩Specify Raw Devices Mapping File,输入/home/oracle/raw10g_raw.conf
启用归档打上钩
点编辑归档模式参数按钮
在归档日志目标输入
/home/oracle/archvelog/raw10g
选择组件
数据服务直接点下一步
内存大小和字符集这里注意选择一下,最后对redo文件大小改写250m;
一直点下一步,最后点完成。接下来数据库在创建库进度条

数据库创建成功后,需要在每个结点上执行如下语句,解决负载均衡器
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.166)(PORT = 1521))' scope=both sid='raw10g1';
alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.167)(PORT = 1521))' scope=both sid='raw10g2';

添加redo日志文件,如果创建数据库时候没有指定,可能需要调整redo组号
alter database add logfile thread 1 group 3 '/dev/raw/raw11' size 250m;
alter database add logfile thread 2 group 6 '/dev/raw/raw14' size 250m;

添加users表空间大小
ALTER TABLESPACE USERS ADD DATAFILE '/dev/raw/raw19' SIZE 5M AUTOEXTEND ON next 1m MAXSIZE UNLIMITED;
ALTER TABLESPACE USERS ADD DATAFILE '/dev/raw/raw20' SIZE 5M AUTOEXTEND ON next 1m MAXSIZE UNLIMITED;
ALTER TABLESPACE USERS ADD DATAFILE '/dev/raw/raw21' SIZE 5M AUTOEXTEND ON next 1m MAXSIZE UNLIMITED;

十三、客户端启用负载均衡器Transparent Application Failover (TAF)配置tnsname.ora文件

RAW10G =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.19.166)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.19.167)(PORT = 1521))
(LOAD_BALANCE = yes)
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = raw10g)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
(RETRIES=20)
(DELAY=15)
)
)
)

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/236283/viewspace-1058417/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/236283/viewspace-1058417/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值