分类: Oracle
2010-11-12 15:25:29
上
一.前期虚拟机共享磁盘设置
该环境在此选择lsilogic
创建共享磁盘
略
在node1,node2 vmx虚拟机配置文件中添加
用于虚拟机打开磁盘用
scsi1.present = "TRUE"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "ocr.vmdk"
scsi1:1.mode = "independent-persistent"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "voting.vmdk"
scsi1:2.mode = "independent-persistent"
scsi1:3.present = "TRUE"
scsi1:3.fileName = "date.vmdk"
scsi1:3.mode = "independent-persistent"
scsi1.virtualDev = "lsilogic"
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
将共享磁盘挂载与node1,node2
二.安装centos系统及所需配置
关掉不需要的服务(测试机)
# chkconfig cups off
# chkconfig sendmail off
# chkconfig isdn off
# chkconfig smartd off
# chkconfig iptables off
Linux补丁
rpm -Uvh setarch-2*
rpm -Uvh make-3*
rpm -Uvh glibc-2*
rpm -Uvh libaio-0*
rpm -Uvh compat-libstdc++-33-3*
*rpm -Uvh compat-gcc-34-3*
*rpm -Uvh compat-gcc-34-c++*
*rpm -Uvh gcc-4*
rpm -Uvh libXp-1*
rpm -Uvh openmotif-2*
rpm -Uvh compat-db*
修改机器名,固定IP,hostname,dns,gateway,
修改机器名,ip,网关
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.19.129
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
Eth1 配置同理
配置如下:
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0C:29:E0:C2:DE
ONBOOT=yes
DHCP_HOSTNAME=node1
IPADDR=192.168.19.129
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
HWADDR=00:0c:29:e0:c2:e8
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.86.135
GATEWAY=192.168.86.2
USERCTL=no
IPV6INIT=no
PEERDNS=yes
修改主机名
#vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1
修改后重启生效
/etc/rc.d/init.d/network restart
编辑/etc/hosts
# (必须要这样)
127.0.0.1 localhost
#public eth0,eth0 必须指定public
192.168.19.129 node1
192.168.19.130 node2
#pri eth1
192.168.86.135 node1-priv
192.168.86.136 node2-priv
#vip
192.168.19.140 node1-vip
192.168.19.141 node2-vip
两个节点要一样,将公网放前,eth0
编辑添加/etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
使配置生效:
/sbin/sysctl –p
编辑添加/etc/security/limits.conf
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
编辑添加/etc/pam.d/login
session required /lib/security/pam_limits.so
编辑/etc/selinux/config
SELINUX=disabled
安装hangcheck-timer.ko模块
Hangcheck-timer 是Linux 提供的一个内核级的IO-Fencing 模块, 这个模块会监控Linux 内核运行状态, 如果长时间挂起, 这个模块会自动重启系统。 这个模块在Linux 内核空间运行, 不会受系统负载的影响。 这个模块会使用CPU的Time Stamp Counter(TSC) 寄存器,这个寄存器的值会在每个时钟周期自动增加, 因此使用的是硬件时间,所以精度更高。
配置这个模块需要2个参数: hangcheck_tick 和 hangcheck_margin。
hangcheck_tick用于定义多长时间检查一次,缺省值是30秒。 有可能内核本身很忙, 导致这个检查被推迟, 该模块还允许定义一个延迟上限,就是hangcheck_margin, 它的缺省值是180秒。
Hangcheck-timer 模块会根据hangcheck_tick 的设置,定时检查内核。只要2次检查的时间间隔小于 hangcheck_tick + hangchec_margin, 都会认为内核运行正常,否则就意味着运行异常,这个模块会自动重启系统。
CRS本身还有一个MissCount 参数,可以通过crsctl get css miscount 命令查看。
当RAC结点间的心跳信息丢失时, Clusterware 必须确保在进行重构时,故障结点确实是Dead 状态,否则结点仅是临时负载过高导致心跳丢失,然后其他结点开始重构,但是结点没有重启,这样会损坏数据库。 因此MissCount 必须大于 hangcheck_tick+hangcheck_margin的和
hangcheck-timer 最初只由 Oracle 提供;不过,从内核版本 2.4.9-e.12 和更高版本开始,此模块目前包含在 Red Hat Linux 中
# find /lib/modules -name "hangcheck-timer.ko"
设置并加载
配置文件
#echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
手动加载hangcheck模块进行测试
oracle 负责在需要时加载hangcheck-timer模块,不必在所有启动文件(/etc/rc.local)中执行每次启动时设置hangcheck-timer内核的加载
设置系统启动自动加载模块
#echo "/sbin/modprobe hangcheck-timer" >> /etc/rc.local
(注:你不必在每次重新启动后使用 modprobe 或 insmod 手动加载 hangcheck-timer 内核模块。Oracle 将在需要时自动加载 hangcheck-timer 模块。)
测试hangcheck-timer内核模块是否使用/etc/modprobe.conf 文件中定义的正确擦数使用modprobe命令
尽管能通过向其传递相应的参数(如 insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180)
确认模块加载成功
验证使用modprobe.conf 文件中的参数
modprobe hangcheck-timer
grep Hangcheck /var/log/messages | tail -2
即:
#echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
#echo "/sbin/modprobe hangcheck-timer" >> /etc/rc.local
modprobe hangcheck-timer
grep Hangcheck /var/log/messages | tail -2
用户组账号
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/useradd -u 501 -d /home/oracle -g "oinstall" -G "dba" -m -s /bin/bash oracle
id oracle
账号密码
Passwd oracle
注意:uid..节点需要相同
挂载目录
mkdir -p /u01/app/oracle/product/10.2.0/db
mkdir -p /u01/app/oracle/product/10.2.0/crs
chown -R oracle:oinstall /u01
chmod -R 755 /u01
配置用户环境(rac集群中红色字体需要修改不同的SID)
#vi /etc/profile
if [ $USER = "oracle" ];then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
#source /etc/profile
#vi /home/oracle/.bash_profile添加下列语句:
#user specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:ORACLE_HOME/rdbms/admin
#each RAC node must have a unique ORACLE_SID.(ie. Ocr1,ocr2,..)
export ORACLE_SID=node1
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/X11R6:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS10=$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
export LANG=en_US
##################################################
# Oracle Alias
##################################################
alias ls="ls -FA"
alias vi=vim
alias base='cd $ORACLE_BASE'
alias home='cd $ORACLE_HOME'
alias alert='tail -200f $ORACLE_BASE/admin/RACDB/bdump/alert_$ORACLE_SID.log'
alias tnsnames='vi $ORACLE_HOME/network/admin/tnsnames.ora'
alias listener='vi $ORACLE_HOME/network/admin/listener.ora'
设计共享磁盘
磁盘 | 容量 | 用途 | 分区 |
Sdb | 100M | OCR | Sdb1 |
Sdc | 100M | VOTE | Sdc1 |
sdd | 1G | 暂无 | Sdd1 |
sde | 3G | DATE | Sde1 |
Sde | 3G | RECO | Sde2 |
配置raw设备+ASM(Linux下,asm的对象是分区,不是disk)
Redhat5之前系统通过etc/sysconfig/rawdevices (略)
Redhat5之后取消,通过udev规则进行配置
在node1上
进行格式化
Sdb 100M ocr /sdb1
Sdc 100M voting /sdc1
在格式化的时候,在另一个节点要重启系统,如果另一个节点无法识别,在clusterware安装节点2执行root.sh会报错误
编辑vi /etc/udev/rules.d/60-raw.rules 这个文件。
格式化磁盘fdisk /sdn
ACTION=="add", KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
重启服务
Start_udev
查看
Ls -lrt /dev/raw
Raw -aq
[root@localhost dev]# raw -aq
/dev/raw/raw1: bound to major 8, minor 17
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"
同理对sdc1进行同样操作
最终配置为:
ACTION=="add", KERNEL=="sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", KERNEL=="sdc1",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m"
配置为raw设备,以字符方式访问设备,读写设备不需要缓冲区
设置raw设备用户和权限
oracle oinstall 640
ACTION=="add", KERNEL=="raw[1-2]", OWNER="oracle", GROUP="oinstall", MODE="660"
重启服务及查询
Start_udev
ls -lrt /dev/raw
Raw -aq
在格式化的时候,重启另一个节点node2
ASM 设置
Sdd 1G
Sde1 3G
Sde2 3G
Asm所需包
oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-92.el5xen-2.0.5-1.el5.i686.rpm
oracleasmlib-2.0.4-1.el5.i386.rpm
oracleasm-support-2.1.3-1.el5.i386.rpm
Rpm -ivh *rpm --nodeps --force
在两个节点上正常安装
运行/etc/init.d/oracleasm configure
Answer:oracle,dba,y,y
在node1
#oracleasm createdisk VOL1 /dev/sde1
#oracleasm createdisk VOL2 /dev/sde2
#oracleasm scandisks
#oracleasm listdisks
在node2进行识别
#oracleasm scandisks
#oracleasm listdisks
/****节点一结束,通过虚拟机,create节点2*****/
修改hostname
将node1改成node2
[root@node1 ~]# hostname node2
[root@node1 ~]# vi /etc/sysconfig/network
这样重启之后机器名称就会变成node2了。
[]#/etc/rc.d/init.d/network restart
修改机器名,固定IP,hostname,dns,gateway,
/etc/sysconfig/network-script/ifcfg-eth0
/etc/sysconfig/network-script/ifcfg-eth1
修改机器名,ip,网关
#vi /etc/sysconfig/network-script/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.19.130
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
/////////////////////////////////////////以上node1,node2都要做////////////////////////////////////////////////////
为用户等效配置配置ssh
Node1
Oracle用户登录
cd home
mkdir .ssh
Chmod 755 .ssh
/usr/bin/ssh-keygen -t rsa //在.ssh目录下生成id_rsa.pub
/usr/bin/ssh-keygen -t dsa //在.ssh 目录下生成id_dsa.pub
//生成authorized_keys文件
Cat id_rsa.pub>> authorized_keys
Cat id_dsa.pub>> authorized_keys
在node2上
cd home
mkdir .ssh
Chmod 755 .ssh
/usr/bin/ssh-keygen -t rsa //在.ssh目录下生成id_rsa.pub
/usr/bin/ssh-keygen -t dsa //在.ssh 目录下生成id_dsa.pub
//生成authorized_keys文件
在node1上
[oracle@node1 ~]$ ssh node2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
[oracle@node1~]$ ssh node2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
Chmod 644 ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys node2:~/.ssh/
在node2
chmod 644 ~/.ssh/authorized_keys
测试连通性
Ssh node1 date
Ssh node2 date
Ssh node1-priv date
Ssh node2-priv date
/********************************配置时间同步*******************************/
节点node1做ntp服务器,节点node2做ntp客户端。
Node1:vi /etc/ntp.conf
restrict 192.168.19.0 mask 255.255.255.0 nomodify
restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery notrust
server 127.127.1.0
server 192.168.19.129 prefer
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
authenticate no
keys /etc/ntp/keys
运行:
chkconfig ntpd on
/etc/init.d/ntpd restart
Node2:vi /etc/ntp.conf
restrict 0.0.0.0 mask 0.0.0.0 nomodify
server 192.168.19.129 prefer
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
authenticate no
keys /etc/ntp/keys 运行:
ntpdate node1
注意: ntp服务器启动后,需要5分钟左右才能提供服务。
Note2定时执行同步时间计划:
每一分钟进行同步一次
crontab –e
*/1 * * * * /usr/sbin/ntpdate 10.10.10.138
解决虚拟机时间过快的问题:
1)vi /boot/grub/grub.conf
添加kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet clock=pit nosmp noapic nolapic
2)gui运行:
#/usr/lib/vmware-tools/bin32/vmware-toolbox
补充
Linux下修改时间
Date
Clock -w 立即写入cmos
时间同步方式二
运行下来脚本
#! /bin/bash
while true
do
/usr/bin/rdate -s 192.168.19.129
sleep 3
done
chinaunix网友2011-06-05 02:08:31
大连法律咨询在线 http://www.fabowang.com 大连律师在线咨询 http://www.fabowang.com 大连法律顾问网 http://www.fabowang.com 大连律师咨询 http://www.fabowang.com