- 论坛徽章:
- 0
|
http://blogimg.chinaunix.net/blog/upfile/070905105250.pdf 这是在找的一个集群文档pdf的
ORACLE 架构RAC方案 希望转来对大家有所帮助吧 那个笑脸为 : $ 中间没有空格
http://www.itpub.net/viewthread. ... a=&page=1ORACLE
架构RAC方案
小弟从事ORACLE维护N年,潜水更多!
最近在搞ORACLE的RAC方案,也试一下写一个,水平有限,请勿见怪!
平台如下:因为使用方是国企,所以操作系统有点不一样,是REDFLAG的4.1,数据库则是ORACLE 9204;硬件是IBM的X366,SAN也是IBM的4300.
先看此!!!!!!!!!!!!
正在整理中......
1:小弟的作息时间较为怪,一般晚上10点半就休息,因此请各位大哥大姐们原谅.
2:如果大家喜欢的,下个月我再写个HA的方案出来以供大家参考!
3:关于lx_csut所讲的,我正在改进
关于WSNY所讲的,REDFLAG的4.1用的是2.4的内核,而REDFLAG的5.0用的是2.6的内核,因为软件是由使用方提供的,因此我无能为力;
4:关于YXYUP所讲的:我只能说:要是搞成文件,被发现会给客户严重投诉的!!! 饭碗要紧呀!
继2:
安装操作系统,原本这个是没有什么好说的,但是红旗的驱动做得比较差,HBA卡的驱动要重新安装才可以使用(现场由于使用双HBA卡进行容错处理)
可以用fdisk -l 的命令查对是否认出磁盘柜的磁盘
配置/etc/inittab文件,把原来的参数由3改为5,使其开机进入X登录介面.安装红旗的oracle9i补丁包。配置xinted服务为自动启动.配置自动启动rsh,rlogin(进入/etc/xinetd.d目录修改rlogin和rsh两文件,修改disable = no)
更改外部网卡IP地址DB1=10.0.0.1DB2=10.0.0.2更改内部心跳网卡IP地址DB1=192.168.0.1/255.255.255.0DB2=192.168.0.2/255.255.255.0
修改双机的/etc/hosts文件,用以解释主机名(让双机可以通过计算机名解析外部和外部IP地址).
修改/etc/sysctl.conf文件
内容如下:
# Default setting in bytes of the socket receive buffer
net.core.rmem_default=262144
# Default setting in bytes of the socket send buffer
net.core.wmem_default=262144
# Maximum socket receive buffer size which may be set by using
# the SO_RCVBUF socket option
net.core.rmem_max=262144
# Maximum socket send buffer size which may be set by using
# the SO_SNDBUF socket option
net.core.wmem_max=262144
kernel.sem=500 64000 100 128
kernel.shmmax=2147483648
fs.file-max=131072
配置操作系统网络参数,修改配置文件后,操作系统将在重启后生效,为立即生成,请执行:
sysctl -w net.core.rmem_default=262144
sysctl -w net.core.wmem_default=262144
sysctl -w net.core.rmem_max=262144
sysctl -w net.core.wmem_max=262144
生成dba组和oracle用户(双机的用户ID号一定要一致)
groupadd -g 115 dbauseradd -u 175 -g 115 -d /home/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oraclepasswd oracle
完成后,修改/home/oracle/.bash_profile文件
DB1内容如下:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
# User specific environment and startup programs
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
# Each RAC node must have a unique ORACLE_SID. (i.e. DB1, DB2,...)
export ORACLE_SID=DB1
export PATH=$ORACLE_HOME/bin {PATH}
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/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
export LANG=en_US
export LD_ASSUME_KERNEL=2.4.21
DB2
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
# User specific environment and startup programs
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
# Each RAC node must have a unique ORACLE_SID. (i.e. DB1, DB2,...)
export ORACLE_SID=DB2
export PATH==$ORACLE_HOME/bin {PATH}
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/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
export LANG=en_US
export LD_ASSUME_KERNEL=2.4.21
继3
而在本案例中使用的是裸设备,因此还需要建RAW
生成操作系统磁盘逻辑卷
pvcreate -d /dev/sdc(其中sdc的"c"是由逻辑磁盘数所决定的,在不同的案例也有不同)
vgcreate -l 256 -p 256 -s 4096k /dev/vg1 /dev/sdc(这样建立的VG1的大小将等于256X256X4096K,)
vgscan
lvcreate -L 5m -n lvol1 /dev/vg1 # 1 CMQuorumFile (Oracle RAC仲裁分区)
lvcreate -L 100m -n lvol2 /dev/vg1 # 2 SharedSrvctlConfigFile (RAC集群信息)
lvcreate -L 10m -n lvol3 /dev/vg1 # 3 spfiledb.ora 二进制参数文件
lvcreate -L 50m -n lvol4 /dev/vg1 # 4 control01.ctl 控制文件1
lvcreate -L 50m -n lvol5 /dev/vg1 # 5 control02.ctl 控制文件2
lvcreate -L 50m -n lvol6 /dev/vg1 # 6 control03.ctl 控制文件3
lvcreate -L 1025m -n lvol7 /dev/vg1 # 7 system01.dbf (1024 MB)
lvcreate -L 5121m -n lvol8 /dev/vg1 # 8 temp01.dbf (5120 MB)
lvcreate -L 501m -n lvol9 /dev/vg1 # 9 tools01.dbf (500 MB)
lvcreate -L 5121m -n lvol10 /dev/vg1 # 10 undotbs01.dbf (5120 MB)回滚段1
lvcreate -L 5121m -n lvol11 /dev/vg1 # 11 undotbs02.dbf (5120 MB)回滚段2
lvcreate -L 101m -n lvol12 /dev/vg1 # 12 redo01_a.log (100 MB)重做日志1_A
lvcreate -L 101m -n lvol13 /dev/vg1 # 13 redo02_a.log (100 MB)重做日志2_A
lvcreate -L 101m -n lvol14 /dev/vg1 # 14 redo03_a.log (100 MB)重做日志3_A
lvcreate -L 101m -n lvol15 /dev/vg1 # 15 redo01_b.log (100 MB)重做日志1_B
lvcreate -L 101m -n lvol16 /dev/vg1 # 16 redo02_b.log (100 MB)重做日志2_B
lvcreate -L 101m -n lvol17 /dev/vg1 # 17 redo03_b.log (100 MB)重做日志3_B
lvcreate -L 20481m -n lvol18 /dev/vg1 # 18 data01.dbf (4096 mb)
数据文件
lvcreate -L 10241m -n lvol19 /dev/vg1 # 19 index01.dbf (4096 mb)
索引文件
lvcreate -L 151m -n lvol20 /dev/vg1 # 20 xdb01.dbf (150 MB)
lvcreate -L 101m -n lvol21 /dev/vg1 # 21 perfstat01.dbf (100 MB)
lvcreate -L 51m -n lvol22 /dev/vg1 # 22 cwmlite01.dbf (50 MB)
lvcreate -L 21m -n lvol23 /dev/vg1 # 23 drsys01.dbf (20 MB)
lvcreate -L 5121m -n lvol24 /dev/vg1 # 24 users01.dbf (5120 MB)
lvcreate -L 51m -n lvol25 /dev/vg1 # 25 odm01.dbf (50 MB)
(以上几个没有啥好说的,只不过是建库的不同所引起的!)
lvscan
(使用裸设备时,划分裸设备的空间一定要比其相应的表空间略大,否则会引起溢出报错!小弟曾几何时范此错误,结果是死得好难睇!!!)
绑定裸设备脚本
/usr/bin/raw /dev/raw/raw1 /dev/vg1/lvol1
/usr/bin/raw /dev/raw/raw2 /dev/vg1/lvol2
/usr/bin/raw /dev/raw/raw3 /dev/vg1/lvol3
/usr/bin/raw /dev/raw/raw4 /dev/vg1/lvol4
/usr/bin/raw /dev/raw/raw5 /dev/vg1/lvol5
/usr/bin/raw /dev/raw/raw6 /dev/vg1/lvol6
/usr/bin/raw /dev/raw/raw7 /dev/vg1/lvol7
/usr/bin/raw /dev/raw/raw8 /dev/vg1/lvol8
/usr/bin/raw /dev/raw/raw9 /dev/vg1/lvol9
/usr/bin/raw /dev/raw/raw10 /dev/vg1/lvol10
/usr/bin/raw /dev/raw/raw11 /dev/vg1/lvol11
/usr/bin/raw /dev/raw/raw12 /dev/vg1/lvol12
/usr/bin/raw /dev/raw/raw13 /dev/vg1/lvol13
/usr/bin/raw /dev/raw/raw14 /dev/vg1/lvol14
/usr/bin/raw /dev/raw/raw15 /dev/vg1/lvol15
/usr/bin/raw /dev/raw/raw16 /dev/vg1/lvol16
/usr/bin/raw /dev/raw/raw17 /dev/vg1/lvol17
/usr/bin/raw /dev/raw/raw18 /dev/vg1/lvol18
/usr/bin/raw /dev/raw/raw19 /dev/vg1/lvol19
/usr/bin/raw /dev/raw/raw20 /dev/vg1/lvol20
/usr/bin/raw /dev/raw/raw21 /dev/vg1/lvol21
/usr/bin/raw /dev/raw/raw22 /dev/vg1/lvol22
/usr/bin/raw /dev/raw/raw23 /dev/vg1/lvol23
/usr/bin/raw /dev/raw/raw24 /dev/vg1/lvol24
/usr/bin/raw /dev/raw/raw25 /dev/vg1/lvol25
继4:(如果不使用RAW的,该操作可略过;)
/bin/chmod 600 /dev/raw/raw1
/bin/chmod 600 /dev/raw/raw2
/bin/chmod 600 /dev/raw/raw3
/bin/chmod 600 /dev/raw/raw4
/bin/chmod 600 /dev/raw/raw5
/bin/chmod 600 /dev/raw/raw6
/bin/chmod 600 /dev/raw/raw7
/bin/chmod 600 /dev/raw/raw8
/bin/chmod 600 /dev/raw/raw9
/bin/chmod 600 /dev/raw/raw10
/bin/chmod 600 /dev/raw/raw11
/bin/chmod 600 /dev/raw/raw12
/bin/chmod 600 /dev/raw/raw13
/bin/chmod 600 /dev/raw/raw14
/bin/chmod 600 /dev/raw/raw15
/bin/chmod 600 /dev/raw/raw16
/bin/chmod 600 /dev/raw/raw17
/bin/chmod 600 /dev/raw/raw18
/bin/chmod 600 /dev/raw/raw19
/bin/chmod 600 /dev/raw/raw20
/bin/chmod 600 /dev/raw/raw21
/bin/chmod 600 /dev/raw/raw22
/bin/chmod 600 /dev/raw/raw23
/bin/chmod 600 /dev/raw/raw24
/bin/chmod 600 /dev/raw/raw25
改变使用者
chown oracle:dba /dev/raw/raw1
chown oracle:dba /dev/raw/raw2
chown oracle:dba /dev/raw/raw3
chown oracle:dba /dev/raw/raw4
chown oracle:dba /dev/raw/raw5
chown oracle:dba /dev/raw/raw6
chown oracle:dba /dev/raw/raw7
chown oracle:dba /dev/raw/raw8
chown oracle:dba /dev/raw/raw9
chown oracle:dba /dev/raw/raw10
chown oracle:dba /dev/raw/raw11
chown oracle:dba /dev/raw/raw12
chown oracle:dba /dev/raw/raw13
chown oracle:dba /dev/raw/raw14
chown oracle:dba /dev/raw/raw15
chown oracle:dba /dev/raw/raw16
chown oracle:dba /dev/raw/raw17
chown oracle:dba /dev/raw/raw18
chown oracle:dba /dev/raw/raw19
chown oracle:dba /dev/raw/raw20
chown oracle:dba /dev/raw/raw21
chown oracle:dba /dev/raw/raw22
chown oracle:dba /dev/raw/raw23
chown oracle:dba /dev/raw/raw24
chown oracle:dba /dev/raw/raw25
映射裸设备配置文件/etc/sysconfig/rawdevices的内容
vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/vg1/lvol1
/dev/raw/raw2 /dev/vg1/lvol2
/dev/raw/raw3 /dev/vg1/lvol3
/dev/raw/raw4 /dev/vg1/lvol4
/dev/raw/raw5 /dev/vg1/lvol5
/dev/raw/raw6 /dev/vg1/lvol6
/dev/raw/raw7 /dev/vg1/lvol7
/dev/raw/raw8 /dev/vg1/lvol8
/dev/raw/raw9 /dev/vg1/lvol9
/dev/raw/raw10 /dev/vg1/lvol10
/dev/raw/raw11 /dev/vg1/lvol11
/dev/raw/raw12 /dev/vg1/lvol12
/dev/raw/raw13 /dev/vg1/lvol13
/dev/raw/raw14 /dev/vg1/lvol14
/dev/raw/raw15 /dev/vg1/lvol15
/dev/raw/raw16 /dev/vg1/lvol16
/dev/raw/raw17 /dev/vg1/lvol17
/dev/raw/raw18 /dev/vg1/lvol18
/dev/raw/raw19 /dev/vg1/lvol19
/dev/raw/raw20 /dev/vg1/lvol20
/dev/raw/raw21 /dev/vg1/lvol21
/dev/raw/raw22 /dev/vg1/lvol22
/dev/raw/raw23 /dev/vg1/lvol23
/dev/raw/raw24 /dev/vg1/lvol24
/dev/raw/raw25 /dev/vg1/lvol25
建立数据文件目录
mkdir /home/oracle/oradata
mkdir /home/oracle/oradata/db
mkdir /home/oracle/racdata
创建数据库设备文件软链接,内容如下:
ln -s /dev/raw/raw1 /home/oracle/RACdata/CMQuorumFile
ln -s /dev/raw/raw2 /home/oracle/RACdata/SharedSrvctlConfigFile
ln -s /dev/raw/raw3 /home/oracle/oradata/db/spfiledb.ora
ln -s /dev/raw/raw4 /home/oracle/oradata/db/control01.ctl
ln -s /dev/raw/raw5 /home/oracle/oradata/db/control02.ctl
ln -s /dev/raw/raw6 /home/oracle/oradata/db/control03.ctl
ln -s /dev/raw/raw7 /home/oracle/oradata/db/system01.dbf
ln -s /dev/raw/raw8 /home/oracle/oradata/db/temp01.dbf
ln -s /dev/raw/raw9 /home/oracle/oradata/db/tools01.dbf
ln -s /dev/raw/raw10 /home/oracle/oradata/db/undotbs01.dbf
ln -s /dev/raw/raw11 /home/oracle/oradata/db/undotbs02.dbf
ln -s /dev/raw/raw12 /home/oracle/oradata/db/redo01_a.log
ln -s /dev/raw/raw13 /home/oracle/oradata/db/redo02_a.log
ln -s /dev/raw/raw14 /home/oracle/oradata/db/redo03_a.log
ln -s /dev/raw/raw15 /home/oracle/oradata/db/redo01_b.log
ln -s /dev/raw/raw16 /home/oracle/oradata/db/redo02_b.log
ln -s /dev/raw/raw17 /home/oracle/oradata/db/redo03_b.log
ln -s /dev/raw/raw18 /home/oracle/oradata/db/data01.dbf
ln -s /dev/raw/raw19 /home/oracle/oradata/db/index01.dbf
ln -s /dev/raw/raw20 /home/oracle/oradata/db/xdb01.dbf
ln -s /dev/raw/raw21 /home/oracle/oradata/db/perfstat01.dbf
ln -s /dev/raw/raw22 /home/oracle/oradata/db/cwmlite01.dbf
ln -s /dev/raw/raw23 /home/oracle/oradata/db/drsys01.dbf
ln -s /dev/raw/raw24 /home/oracle/oradata/db/users01.dbf
ln -s /dev/raw/raw25 /home/oracle/oradata/db/odm01.dbf
再改变属主
chown -R oracle:dba /home/oracle/oradata
chown -R oracle:dba /home/oracle/racdata
最好在完成以上操作后重启一下.
继5:
修改/etc/modules.conf文件增加心跳模块,在文件中增加一行内容如下:
options hangcheck-timer hangcheck_tick=3 hangcheck_margin=15(该参数需要根据实际而定)
其它参数设定(主要用于在不重启linux操作系统的情况下,设定合适的运行参数以及加载必须的系统模块):
#echo 2147483648 > /proc/sys/kernel/shmmax
#echo "250 32000 100 128" > /proc/sys/kernel/sem
#echo "65536" > /proc/sys/fs/file-max#/sbin/insmod hangcheck-timer hangcheck_tick=3 hangcheck_margin=15service xinetd reloadtouch /etc/hosts.equiv
chmod 600 /etc/hosts.equiv
echo "+DB1 oracle" >> /etc/hosts.equiv
echo "+DB2 oracle" >> /etc/hosts.equiv
echo "+testDB1 oracle" >> /etc/hosts.equiv
echo "+testDB2 oracle" >> /etc/hosts.equiv
cd /usr/kerberos/bin
mv rsh rsh.original
mkdir -p /var/opt/oracle
接下来的就是装ORACLE软件了,但是要先安装它的CLUSTER模块,然后再安装ORACLE软件(安装CLUSTER模块后,要选择两台DB,软件会自动安装在两台DB上).
CLUSTER INSTALL:
安装oracle cluster manager设置参数如下:
Public Node Information(DB1和DB2)
Private Node Information(testDB1和testDB2)
Quorum Disk Information(/home/oracle/racdata/CMQuorumFile)
ORACLE INSTALL:
mkdir $ORACLE_BASE/product
mkdir $ORACLE_BASE/product/9204
对于不同的压缩包有不同的方案(不再罗列),解压后运行./runInstall.sh
安装完成后,
在安装oracle软件的那台机上,执行以下语句:
srvconfig –init
而在另一台机上执行以下语句:
mkdir -p $ORACLE_HOME/network/log
mkdir -p $ORACLE_HOME/network/agent/log
mkdir -p $ORACLE_HOME/network/agent/jobout
mkdir -p $ORACLE_HOME/network/agent/reco
并在两台DB上运行:
gsdctl start
先吃饭,下午再写
吃完了,
继6:
配置OCM,由于使用操作系统心跳模块,因此修改$ORACLE_HOME/oracm/admin/cmcfg.ora,增加一行KernelModuleName=hangcheck-timer
并且需要修改MissCount的值=30(一般来说该值是30-90,主要是要看要求).
启动OCM模块:
ocm日志文件是$ORACLE_HOME/oracm/log/cm.log,启动ocm后如果要重新启动,可以先pkill oracm,
再删除$ORACLE_HOME/oracm/log/ocmstart.ts(这个文件在启动ocm后短时间内再启动ocm时需要删除)文件,然后再启动OCM。
ps -ef | grep oracm可查看到ORACM的启动情况.
修改两台DB的/etc/rc.local增加/sbin/modprobe hangcheck-timer。
如果你选红旗的DC系列。为何不选DC5,那个版本要好的多。当然如果选5那么oracle最好也是选10G。
继7
然后在X环境下执行dbca,配置数据库实例。执行如下:
su - root
xhost +
su - oracle
dbca
如果在执行dbca时出现报错找不到java与jre的链接,那么就手动做一个ln就行了:
cd /home/oracle/报错路径/
ln -s /报错路径/java jre
配置参数:
数据库名=db
SIDprefix=db服务器共享配置文件位置=/home/oracle//oradata/racdata/SharedSrvctlConfigFile
字符集=zhs16gbkspfile位置=/home/oracle/oradata/db/spfiledb.ora
需要修改controlfile、datafile、redolog、spfile等文件的位置,使之与裸设备软链接文件对应;
需要修改各个数据文件的大小为在生成逻辑卷中注释部分的大小定义;
数据文件不自动增长;
要定义redo的个数是每个实例3个Group;
#是系统定义,不用修改,thread#1表示DB实例1,thread#2表示DB实例2;
文件名需要确认与裸设备链接文件名一一对应。
继8
建库完成后,修改SYS与SYSTEM的密码则可.
继9:
安装完成后以system登陆,查看vg$instance,看看两个实例的状态是否为OPEN
SELECT INSTANCE_NAME,HOST_NAME,STATUS FROM VG$INSTANCE;
以下为另一文章,,
适用客户:应用系统以服务器、操作系统、数据库、应用软件为基础构建,单点故障多,系统宕机影响大(收入损失、生产力下降、丢失商业机会)。不同客户有不同的投资收益要求,可靠性程度的需求不同。单一客户的应用系统可能基于多种平台(服务器、操作系统、数据库)
基于红旗、TBLinux、Redhat Linux操作系统
支持Orcale、MySQL、Sybase、Informix等Linux版本的数据库
Active-Standby(主从热备)/Active-Active(对等热备)两种工作模式
增购Oracle 9i Enterprise其他模块,实现:数据备份、复制、容灾等
设备
数量
服务器
2
NS8800磁盘阵列
1
硬盘
若干
心跳线
网线*1
LC-LC光纤电缆
2
HBA卡
2
操作系统
2
Oracle 9i Enterprise RAC
1
[ 本帖最后由 @oracle@ 于 2007-12-29 16:40 编辑 ] |
|