我的风格大家也熟悉了我也不多废话也不愿意写什么手册我认为搞稍微复杂一点技术的工程技术人员的最基本的能力就是去做调研和信息搜集什么 事情光靠别人很详细的喂给你你是永远无法成为高手的过程本身很麻烦有时候甚至很让人痛苦和气恼但是这才是真正能够把你推动到一个高手的位置的 真正动力 动手越少水平越糟
下面是我前几天做的一个简明步骤不想写复杂的我觉得已经足够帮有动手能力的同学过关了
********************************************
Oracle gR RAC + RHEL ASU +VMWare GSX
Deployment brifing guide
Author: nntp
转载不得修改请注明作者时间和出处
********************************************
环境
自用的测试工作站一台如果你的配置环境和我差很远你就不要玩乐你会很痛苦的
硬件环境
CPU: AMD Althon + x
Mem: G DDR
Storage: xGB ATA for Host OS xG SATA for application
Host 的环境
SuSE Enterprise Linux Server SP with latest errata Kernel from Novell YOU
(AMD/EMT version)
GB上安装的是我的上面的这个OS用来做Host OS 并且已经调优过 (不会这种环境下linux调优的同学你做出来的性能会和我有不少差距)
个GB硬盘我用linux MD 做软RAID RAID level 是 并且作了调优(不会这种环境下linux阵列配置和优化的同学你做出来的性能会和我有不少差距)
VMWare gsx 安装在 GB硬盘上也作了一些小的优化工作(你在VTN上查得到怎么做优化)
GB做RAID就变成一个GB的LUN 我划乐GB出来 mount 到 /vmegg上
我用的这个文件系统是ReiserFS 并作了文件系统级的性能优化
vmegg的结构如下
/vmegg
/rac
/rhel
/n
/n
/share
各位同学自己建好上面这些目录
安装的大概步骤
步骤一: 安装前准备及Guest OS安装配置
步骤二: 安装Oracle gR clusterware
步骤三: 安装Oracle gR database
步骤四: 配置netca
步骤五: 配置dbca创建数据库
步骤六: 校验RAC
============ 步骤一 安装前准备及Guest OS安装配置=======
Host OS 准备
从Oracle OTN下载 oracle gR for x linux下个zip 一个是clusterware zip一个是database zip comp CD你可以下我是懒的弄
准备的RHEL ASU(x) 你也可以用CentOS (x)
搞清楚你的linux的kernel version
从Oracle OTN下载 ocfs ocfs tools ocfs console ASMLib ASMLib support & utility记住这些都是针对你的kernel的不要下错
VMWare gsx for linux
我的工作站是没有显示器的我的工作都是在笔记本上作的 大家都知道Oracle的安装是需要X的所以你可以VNC过去也可以在本地用Xserver
我用的是ReflectionX因为还可用来连其他的Unix(HPUX AIX等) 这个完全是个人喜好你搞得定什么用什么
在笔记本上配置好RelfectionX做好连接host上的vmware console
Guest OS安装
泡杯茶会耗不少时间 我一边安装一边看DVD的当中会有很多等待时间 虽然我后来用了几个自动化的方式
在vmware console 创建你的 vmware guest OS 取名 node node 选择 custome create> Redhat Enterprise Linux 其它都是默认 内存选择G(>MB你就看 不到warning乐) 硬盘选择 LSI bus controller 大小选择GB 建立方式选择 preallocated 也就 是马上就创建这个vmdk 我不喜欢split to GB就把默认的打勾给去掉了因为我的Host OS以及mount filesystem 已经做过优化我喜欢一个独立的大文件你们按照自立的路子来做不要盲目跟我
创建好后vmware guest OS之后 给每一个guest 加上一块NIC
关掉vmware console 这个时候你的两个vmware guest OS都创建好了分别在n n目录下面而且每个都加了个NIC硬盘都是LSI 并且大小GB而且都预创建好了并且没有分割成GB一块
看到很多cluster in vmware的介绍在创建share disk的时候都是什么用一个vmware guest OS添 加vmdk然后修改vmx然后把另外一个vmware guest的vmx再添加进去我很不喜欢这种套路我很少用 vmware workstation所以不知道最新版本是否有vdiskmanager反正我在gsx里面一直用vdiskmanager
ssh到你的 Host OS里面(现在是我的SLESSP) 到 /vmware/rac/rhel/share下面运行 vmwarevdiskmanager 创建几个vmdk 这里就有点讲究了
如果你在看我的这个文章之前还没有搞清楚ORACLE RAC的基本结构 raw ASM ocfs的概念你就不要看下去了浪费时间
Oracle RAC 本质上是借鑒了很多Alpha TruCluster的技术但是也有了很多折衷的设计 它需要存放OCR CRS voting 信息的共享空间 还需要空间给ASM for oracle data 所以
在存储的布局上有两种方式要么是 raw for OCR CRS voting ASM for data 要么是 ocfs for OCR CRS voting ASM for data
至于以前那种 raw for OCR CRS voting CRS for data的做法我是不考虑了做做学习用途还可以用在production环境是给自己吃药
所以如果你选择第一种你的vmdk这样建
vmwarevdiskmanager 创建 preallocated并且是lsi contoller的硬盘 MB 一个 for raw for OCR
vmwarevdiskmanager 创建 preallocated并且是lsi contoller的硬盘 MB 一个 for raw for CRS voting
vmwarevdiskmanager 创建 preallocated并且是lsi contoller的硬盘 GB 四个 个 for ASM Oracle data 个for flash recovery area 你不玩flash recovery也可以省略掉
如果你选择第二种你的vmdk这样建
vmwarevdiskmanager 创建 preallocated并且是lsi contoller的硬盘 GB一个 for ocfs for OCR + CRS voting
vmwarevdiskmanager 创建 preallocated并且是lsi contoller的硬盘 GB 四个for ASM for Oracle data & flash recovery area (同上)
raw没有什么有意思的我因为还要在这个环境作其他的test所以就选择第二种
这样做好后你的 /vmware/rac/rhel/share目录就会产生你刚才创建的这些vmdk了
分别到 n和n的目录打开nodevmx 和nodevmx 在最后空白处添加这几段内容
scsipresent = TRUE
scsivirtualDev = lsilogic
scsisharedBus = virtual
这段是打开 scsi上的使用并且设置成virtual controller设置成lsilogic
然后依次添加
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/ocfsvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
scsi:present = TRUE
scsi:mode = independentpersistent
scsi:filename = /vmegg/rac/rhel/share/asmvmdk
scsi:deviceType = plainDisk
这样就把刚才创建的那几个vmdk添加好了
最后添加这个
disklocking = false
diskLibdataCacheMaxSize =
diskLibdataCacheMaxReadAheadSize =
diskLibDataCacheMinReadAheadSize =
diskLibdataCachePageSize =
diskLibmaxUnsyncedWrites =
这段是对vmware使用共享硬盘的方式进行定义我经常看到很多同学在装RHCS in vmware的时候说这个不正常那个不正常你们也可以借鑒一下这个配置
大多数人都知道设置 disklocking =false 却漏掉dataCache
保存退出之后重新打开你的vmwareconsole你就可以看到个vmware guest OS的配置中都有这些硬盘出现了
其实到现在为止还是一个超级简单的工作
在你的vmwareconsole里面edit config 点进看看但是不要修改和save !切记而且之前修改vmx的时候关掉你的vmwareconsole
然后就安装你的vmware guest OS 安装的时候包选择default然后点custom进去加几个必需的 Development Tools Legacy Software Development Libraries Kernel Development Editor System tools
配置你的个网卡的固定IPhostname DNS gateway time server (NTP)
node:
hostname nodepub
eth
eth
node
hostanme nodepub
eth
eth
gateway DNS就按照自己的需要配
NTP我强烈建议你们配一个不知道NTP的后面有古怪事情不要问我
安装结束后进入guest OS
修改 /etc/hosts
如下
localhost (必须要这样)
nodepub
nodepub
nodeprv
nodeprv
nodevip
nodevip
两个node都要一样
修改后要确认这个hosts 都正确 (ping)
sshkeygen for root dsa/rsa bit 我选择空的 passphase你可以加你的passphase但是后面你要sshagent $SHELL建立等效我怕麻烦就省略掉了
cd ~/ssh
cat *rsapub >> authorized_keys
cat *dsapub >> authorized_keys
copy ssh/下面这些到 node 的 ~/ssh下面
这些都是基本功我就不废话了不熟悉这个的就不要往下看了
分别在每个node 上做这些事情
ssh localhost
ssh nodepub
ssh nodepub
ssh nodeprv
ssh nodeprv
这个步骤和RAC没有关系但是也是好习惯之一检查你的service 状况disable掉所有不需要用的service 腾出resource给你的RAC 什么cups之类乱七八糟的
group add dba oinstall 组在两个node上 创建oracle 用户 主组oinstall 附加组是dba和disk
然后和前面执行root ssh的操作完全一样执行一次这步非常重要漏掉了肯定过不下去
mkdir /u/app/oracle 在个node上
chown R oracleoinstall
chmod R
这个目录给oracle和clusterware系统的
mkdir /u/oradata/orcl
chown R oracledba
这个目录给 ocfs用来装OCR CRS voting 的
修改你的 /etc/nf 添加这些kernel 参数这些都是老一套了大家应该都很熟悉了
rermem_default=
rewmem_default=
rermem_max=
rewmem_max=
kernelshmall =
kernelshmmax =
kernelshmmni =
kernelsem =
fsfilemax =
netipvip_local_port_range =
修改 ulimits 如果你想要修改的话
vi /etc/sysconfig/nf
oracle soft nproc
oracle hard nproc
oracle soft nofile
oracle hard nofile
修改 pamd login
vi /etc/pamd/login
最后添加 session required /lib/security/pam_limitsso
增加 hanchecktimer 模块在个node上
先看一下有没有 find /lib/modules name hangchecktimerko
然后加上去 echo options hangchecktimer hangcheck_tick= hangcheck_margin= >> /etc/nf
然后把这个模块调起来 modprobe hangchecktimer
然后检查是否工作正常了 grep Hangcheck /var/log/messages | tail
看到类似这个的信息就表明工作正常了 Jan :: npub kernel: Hangcheck: starting hangcheck timer (tick is seconds margin is seconds)
安装ocfs ocfs的console的rpm
在每个node 上这样操作
进入X 然后运行 ocfsconsole 把你的个node都添加进去
然后编辑 /etc/initd/ocb 删除掉 靠近配置开头的那些带 #的配置行
然后 /etc/initd/ocb offline ocfs
/etc/initd/ocb unload ocfs
/etc/initd/ocb configure ocfs 回答y 就可以了
在一个 node上 mkfsocfs b k C k L oradatafiles /dev/sdb (就是前面创建的第一个vmdk)
在每个node上
mount t ocfs o datavolume /dev/sdb /u/oradata/orcl
修改你的 /etc/fstab 添加 类似这样的行
/dev/sdb /u/oradata/orcl ocfs _netdevdatavolume
到这里我们的ocfs for OCR CRS voting 就OK了
修改 /etc/sysconfig/ocb
把threshhold 的 值设置成
在每个node上
安装你的 ASMLibs tools support 三个rpm文件
然后运行 /etc/initd/oracleasm configure
回答 oracle dba y y 就可以了
创建ASM
在一个node上:
/etc/initd/oracleasm createdisk VOL /dev/sdc
/etc/initd/oracleasm createdisk VOL /dev/sdd
/etc/initd/oracleasm createdisk VOL /dev/sde
/etc/initd/oracleasm createdisk VOL /dev/sdf
记住ASM在linux下面处理的对象是 partition不是disk 所以你那些vmdk要linux 下面partition好才能用fdisk 就用type 就可以了
创建好后 在这个node 上运行 /etc/initd/oracleasm listdisks 查看
在另外一个node 上
/etc/initd/oracleasm scandisks
/etc/initd/oracleasm listdisks 查看
在每个node上
修改 oracle用户家目录下的 bash_profile
修改成大概这个样子
# bash_profile
# Get the aliases and functions
if [ f ~/bashrc ]; then
~/bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product//db_
export ORA_CRS_HOME=$ORACLE_BASE/product/crs
export ORACLE_SID=orcl
export PATH=:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
第二个节点的 ORACLE_SID=orcl 其他都一样
=============步骤二: 安装Oracle gR clusterware========
unset 一些环境变量
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS
$ unset TNS_ADMIN
检查你的变量
$ env | grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u/app/oracle
ORACLE_TERM=xterm
用oracle 用户login 然后运行你的unzip 之后的那个clusterware目录下的runInsaller 进入图形安装
确认你的安装目录是/u/app/oracle/product/crs
修改 你的clustername 从crs到一个随便你想要的名字
然后增加
nodepub nodeprv nodevip
nodepub nodeprv nodevip
然后指定 eth 的类型时public
然后制定你的OCR 和mirror
/u/oradata/orcl/OCRFile
/u/oradata/orcl/OCRFile_mirror
然后指定你的voting
/u/oradata/orcl/VotingFile
/u/oradata/orcl/VotingFile_mirror
/u/oradata/orcl/VotingFile_mirror
然后就开始安装了当众会让你用完全的root身份在每个节点上运行orainstRootsh你就一个节点一个节点运行不要抢时间一个个来
然后要求你在每个节点上用完全的root权限执行 rootsh你也一样一个个来一定要等一个做好了然后做另外一个
做第二个时候如果告诉你你的eth不是public你就在第二个节点用oracle用户在 X里面运行vipca 然后配置好你的vip 信息(虚拟IP的信息很容易配的)
clusterware 就安装好了
确认一下
$ /u/app/oracle/product/crs/bin/olsnodes n
nodepub
nodepub
或
$ ls l /etc/initd/init*
rxrxrx root root Oct : /etc/initd/initcrs*
rxrxrx root root Oct : /etc/initd/initcrsd*
rxrxrx root root Oct : /etc/initd/initcssd*
rxrxrx root root Oct : /etc/initd/initevmd*
===============步骤三: 安装Oracle gR database=======
unset 一些环境变量
$ unset ORA_CRS_HOME
$ unset ORACLE_HOME
$ unset ORA_NLS
$ unset TNS_ADMIN
检查你的变量
$ env | grep ORA
ORACLE_SID=orcl
ORACLE_BASE=/u/app/oracle
ORACLE_TERM=xterm
用oracle用户运行你unzip之后的那个database目录下的runInstaller
ORACLE安装目录指定到 /u/app/oracle/product//db_
把个node选择上
选择 Install database Software only
会要求你用完全的root权限运行 rootsh 分别在个node上一一运行不要抢时间
安装完毕
==================步骤四: 配置netca=================
oracle 用户在一个node上运行 netca
选择所有node
选择 Listener configuration
添加一个LISTEN port
回到开始界面选择Naming Methods configuration
把Local Naming和Easy Naming 添加进去然后结束配置
确认一下
$ ps ef | grep lsnr | grep v grep | grep v ocfs | awk {print $}
LISTENER_NODEPUB
==============步骤五: 配置dbca创建数据库=============
用oracle用户运行 dbca
选择custom database
输入数据库的全局名比如orcl
给你的系统的不同角色建立密码我都选择same as
选择用ASM管理数据库
输入你前面设定的管理员密码并把SPFILE 设定成/u/oradata/orcl/dbs/spfile+ASMora
进入ASM配置界面 create NEW 名字叫做DATA
然后下面你会看到你前面创建的个ASM VOL 你选择 和 Redundancy 选择 Normal
这样 DATA diskgroup就创建好了
回到ASM界面后 仍旧选择create new 然后名字叫做FLASH_RECOVERY_AREA 选择第和两个卷然后Redundancy 选择External
然后OK结束ASM配置
Database File Locations 选择DATA
Recovery Configuration 选择刚才创建的 FLASH_RECOVERY_AREA diskgroup
接下来默认的就可以了
Database Services 这里你选择Add你一个新的service 随便叫名字比如ractest
然后选择 TAF Policy是Basic
开始创建数据库
===================步骤六: 校验RAC===============
用oracle用户login 运行
$ srvctl status database d orcl
Instance orcl is running on node nodepub
Instance orcl is running on node nodepub
$ srvctl status service d orcl s ractest
Service orcltest is running on instance(s) orcl orcl
$ srvctl status nodeapps n nodepub
VIP is running on node: nodepub
GSD is running on node: nodepub
Listener is running on node: nodepub
ONS daemon is running on node: nodepub
$ srvctl status asm n nodepub
ASM instance +ASM is running on node nodepub
$ srvctl config nodeapps n nodepub a g s l
VIP exists: /nodevip///eth:eth
GSD exists
ONS daemon exists
Listener exists
运行 sqlplus /nolog
SQL> connect /as sysdba
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
orcl YES OPEN ACTIVE NORMAL nodepub
orcl YES OPEN ACTIVE NORMAL nodepub
其他的测试测试方法n多你用sqlplus asmcmd 或者通过Web进 enterprise manager都可以
随便你了