在写本博文之前,详细阅读了dave大神的博客http://blog.csdn.net/tianlesoftware/article/details/8212349,得到很多启发。
软件环境
prise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
more /etc/redhat-release
系统环境
Linux rac1.localdomain 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
集群数据库准备前的工作
网络配置
format : .
rac1
10.37.4.120 rac1.localdomain rac1
192.168.56.120 rac1-pri.localdomain rac1-pri
10.37.4.122 rac1-vip.localdomain rac1-vip
rac2
10.37.4.121 rac2.localdomain rac2
192.168.56.121 rac2-pri.localdomain rac2-pri
10.37.4.124 rac2-vip.localdomain rac2-vip
scan ip
10.37.4.131 rac-scan.localdomain rac-scan
**问题:
1、 Error: No suitable device found: no device found for connection ‘ System eth0′.[FAILED]
1、删除/etc/udev/rules.d/70-persistent-net.rules文件,重启系统。
2、如果上面的不起作用,那么去看ifcfg-eth0文件中的HWADDR是否正确,改成正确的HWADDR。
系统内核配置
1、
vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
sysctl -p
2、
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
用户权限
2、用户组规划:
userdel oracle
groupdel oinstall
groupdel dba
groupdel oper
groupdel asmdba
groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
groupdel asmadmin
groupdel asmoper
userdel grid
userdel oracle
useradd -u 5002 -g oinstall -G dba,oper,asmadmin,asmoper,asmdba -d /home/grid grid
useradd -u 5001 -g oinstall -G dba,oper,asmdba -d /home/oracle oracle
修改用户参数文件:
—-oracle
PATH=$PATH:$HOME/bin
export PATH
export PS1="`/bin/hostname -s`-> "
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node2.localdomain
export ORACLE_SID=jhdb1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=devdb
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
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 EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
umask 022
—-grid
PATH=$PATH:$HOME/bin
export PATH
export PS1="`/bin/hostname -s`-> "
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_TERM=xterm
export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
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 EDITOR=vi
export LANG=en_US
export NLS_LANG=american_america.AL32UTF8
umask 022
—目录权限:
mkdir -p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/11.2.0
chmod -R 775 /u01
系统服务配置
1.停止NTP服务
grid 时间同步服务:grid提供了cluster time synchronization service(cssd),使用此功能就需要关闭NTP服务。
service ntpd stop
chkconfig ntpd off
cp /etc/ntp.conf /etc/ntp.conf.bak
rm -rf /etc/ntp.conf
2.开启vsftpd服务
service iptables stop
setenforce 0
3.关闭防火墙
vi /etc/selinux/config
4.开启VNC服务
centos 开启VNC
查看vncserver配置文件
rpm -qc tigervnc-server
SSH对等性设置
SSH对等性配置:
双节点:
rm -rf ~/.ssh
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cat ~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:~/.ssh/keys
rac2 :
cat ~/.ssh/keys >> authorized_keys
scp authorized_keys rac1:/home/grid/.ssh/authorized_keys
精简
对等性验证:
ssh rac1 date
ssh rac2 date
DNS服务器配置
1.软件包:
bind-9.3.6-4.Pl.el5_4.2.x86_64.rpm
bind-chroot-9.3.6-4.Pl.el5_4.2.x86_64.rpm
caching-nameserver-9.3.6-4.Pl.el5_4.2.x86_64.rpm
2.配置/var/named/chroot/etc/named.conf文件
由拷贝而来
cp -p named.caching-nameserver.conf named.conf
把 127.0.0.1 改成 “ any; ”允许所有的ip去访问
3.配置ZONE文件
修改/var/named/chroot/etc/named.rfrc1912.zons文件
主要目的是为了能正确解析SCAN-IP,
正向zone文件
zone “localdomain” IN {
type master;
file “localdomain.zone”;
allow-update { none; };
};
scan:
192.168.56.140 rac.scan.localdomain rac-scan
反向zone文件
zone “56.168.192.in-addr.arpa” IN{
type master;
file “56.168.192.in-addr.arpa”;
allow-update { none; };
};
配置正反向解析数据库文件:
/var/named/chroot/var/named
正向解析数据库文件 localdomain.zone
rac-scan IN A 192.168.56.140
反向解析数据库文件 cp -p named.local 56.168.192.in-addr.arpa
140 IN PTR rac-scan.localdomain.
启动DNS服务器 /etc/init.d/named start
校验
rac1:
配置 /etc/resolv.conf
search localdomain
nameserver 192.168.56.120
rac2:
配置 /etc/resolv.conf
search localdomain
nameserver 192.168.56.120
验证 nslookup rac-scan、nslookup rac-scan.localdomain nslookup 10.37.4.173
centos 6 DNS配置:
1:yum -y install bind-chroot.x86_64 bind.x86_64
2: vi /etc/named.conf
把 127.0.0.1 、localhost 改成 any
//反向解析
zone “4.37.10.in-addr.arpa” IN {
type master;
file “4.37.10.in-addr.arpa.zone”;
allow-update { none; };
};
//正向解析
zone “localdomain” IN {
type master;
file “named.localhost”;
allow-update { none; };
};
3:
//正向解析DNS库
vi /var/named/named.localhost
$TTL 86400
@ IN SOA @ root.localdomain. (
42 ; serial
3H ; refresh
15M ; retry
15W ; expire
1D ) ; minimum
NS @
A 10.37.4.170
rac-scan IN A 10.37.4.173
//反向解析DNS库
vi /var/named/4.37.10.in-addr.arpa.zone
$TTL 86400
@ IN SOA 4.37.10.in-addr.arpa. localhost.localdomain. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 10.37.4.170
173 IN PTR rac-scan.localdomain.
重启DNS服务器
service named restart
**CentOS DNS resolv重启无效的解决方法
在此要强调一点的是,直接修改/etc/resolv.conf这个文件是没用的,网络服务重启以后会根据/etc/sysconfig/network-scripts/ifcfg-eth0来重载配置,如果ifcfg-eth0没有配置DNS,那么resolv.conf会被冲掉,重新变成空值。
解决方案:在/etc/sysconfig/network-scripts/ifcfg-eth0单独增加一行“DNS=10.37.4.170”
查看会话端口 netstat -ltunp |grep named
ASM共享存储配置
在11g 之前,可以直接使用裸设备安装rac。
11g之后,必须用asm,所以这里就会涉及到设备持久话的问题,持久化有3种方法:
(1) udev
(2) multipath
(3) Oracle asmlib
udev 绑定raw裸磁盘:
raw挂载:
这里是使用客户端链接ISCIS共享的磁盘:
1. 1. 检查系统是否已安装iSCSI initiator
2. 因为安装iSCSI 驱动需要配合核心来编译,所以会使用到内核源代码,此外, 也需要编译器(compiler)的帮助,因此,确认Linux 系统当中存有下列软件 kernel-source 、kernel、gcc、perl、Apache。打开一个终端,使用命令检查:
3. [root@rac1 mnt]# rpm -qa|grep iscsi
4. iscsi-initiator-utils-6.2.0.872-6.el5
5. 2. 查看Initiator IQNname IQN写入盘阵里
6. [root@rac1 mnt]# more /etc/iscsi/initiatorname.iscsi
7. InitiatorName=iqn.1994-05.com.redhat:e9cbe2cae7e4 写入iscsi target
8. 3.开启ISCSI服务
9. [root@rac1 mnt]# service iscsid start
10. Starting iSCSI daemon:
11. [ OK ]
12. 4.监测ISCSI target(节点)
13. #iscsiadm -m discovery -t sendtargets -p ipaddress(盘阵的IP地址)
14. root@rac1 mnt]# iscsiadm -m discovery -t sendtargets -p 10.37.55.2
15.
16. 5. 登录target
17. #iscsiadm -m node -T targetname -p ipaddress –login(盘阵的IP地址)
18. # iscsiadm -m node -T iqn.1991-05.com.microsoft:jhzg-cc01-data-55.2-target -p 10.37.55.2:3260 -l
19.
20. 6.查看ISCSI
21. [root@rac1 mnt]# iscsiadm -m node -p 10.37.55.2 - l
22. 7.设置ISCSI target自动挂载
23. # iscsiadm -m node -T iqn.1991-05.com.microsoft:jhzg-cc01-data-55.2-target -p 10.37.55.2:3260 –op update -n node.startup -v automatic
24. (iqn.1991-05.com.microsoft:jhzg-cc01-4.100-target)
25. 检查iscsi服务是否开机自动启动 : chkconfig –list|grep iscsi
26. 8重启系统,然后fdisk -l 查看ISCSI挂载的磁盘。
27. mkfs.ext3 /dev/sdj
28. mount -t /dev/sdj /mnt
29. vi /etc/fstab
30. /dev/sdj mnt ext3 defaults 0 0
31. 卸载命令:
32. 1:删除/var/lib/iscsi/nodes和/var/lib/iscsi/sendtargets目录下所有信息
33. /var/lib/iscsi/nodes 目录下存放的是所有iscsi挂载的iqn
34. /var/lib/iscsi/sendtargets 目录下存放的是iscsi挂载存储IP
35. 2:重启服务器
36. [root@node1 /]# reboot
37. 3:如果不想重启服务器卸载就使用卸载命令
38. iscsiadm -m node -T iqn.1991-05.com.microsoft:jhzg-cc01-datastore-55.2-target -u
39. iscsiadm -m node -T iqn.1991-05.com.microsoft:jhzg-cc01-data-55.2-target -u
40. 卸载命令:
41. iscsiadm -m node -T iscsi存储iqn -u
udev绑定
(猜想:是不是只有iscsi设备才能使用scsi_id获取uuid)
:使用udev把设备编号跟设备物理ID绑定,从而实现固化效果。
udev配置文件
主要的udev配置文件是/etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
42. udev_root=“/dev/”
udev_rules=“/etc/udev/rules.d/”
udev_log=“err“
43. 上面的第二行非常重要,因为他表示udev规则存储的目录,这个目录存储的是以.rules结束的文件。每一个文件处理一系列规则来帮助udev分配名字给设备文件以保证能被内核识别。
你的/etc/udev/rules.d下面可能有好几个udev规则文件,这些文件一部分是udev包安装的,另外一部分则是可能是别的硬件或者软件包 生成的。
RHEL5:
for i in b c d e f ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\", RESULT==\"`/sbin/scsi_id -g -u -s /dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\", GROUP=\"asmadmin\", MODE=\"0660\"" >> /etc/udev/rules.d/99-oracle-asmdevices.rules
done
- 运行结果如下:
- KERNEL==”sd*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name”, RESULT==”36001438009b01c320000300000500000”, NAME=”asm-arch1”, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660”
-
- RHEL6
- for i in b c d e f ;
- do
- echo “KERNEL==\”sd*\”, BUS==\”scsi\”, PROGRAM==\”/sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name\”, RESULT==\”
/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i
\”, NAME=\”asm-disk$i\”, OWNER=\”grid\”, GROUP=\”asmadmin\”, MODE=\”0660\”” >> /etc/udev/rules.d/99-oracle-asmdevices.rules - done
为了避免系统在重启后磁盘路径改变从而导致外部应用无法读取的问题,通过磁盘RESULT编码来识别磁盘并逻辑固定。
-
- (2) 对于磁盘子分区的绑定
-
- 62.
- Redhat Enterprise Linux 5 用如下参数
- KERNEL==”sd?[1-2]”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -s %p”, RESULT==”1ATA_VBOX_HARDDISK_VBaef9fa71-c32978c8”, NAME=”asm-ocr%n”, OWNER=”grid”, GROUP=”asmdba”, MODE=”0660”
-
- Redhat Enterprise Linux 6 用如下参数
- KERNEL==”sd?[1-2]”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u /dev/$name”, RESULT==”1ATA_VBOX_HARDDISK_VBaef9fa71-c32978c8”, NAME=”asm-ocr%n”, OWNER=”grid”, GROUP=”asmdba”, MODE=”0660”
- Or
- KERNEL==”sdb1”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent” RESULT==”1ATA_VBOX_HARDDISK_VB8383313d-441fd502”, NAME=”asm-crs1”, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660”
-
- more /etc/udev/rules.d/99-oracle-asmdevices.rules 如下:
- KERNEL==”sd*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name”, RESULT==”360003ff44dc75adc9f3304ea673307c8”, NAM
- E=”asm-diskc”, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660”
- KERNEL==”sd*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name”, RESULT==”360003ff44dc75adc8055e84e9f6c5362”, NAM
- E=”asm-diskd”, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660”
- KERNEL==”sd*”, BUS==”scsi”, PROGRAM==”/sbin/scsi_id –whitelisted –replace-whitespace –device=/dev/$name”, RESULT==”360003ff44dc75adc8479b2efc6d42b45”, NAM
- E=”asm-diskb”, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660”
- start_udev会自动加载/etc/udev/rules.d/99-oracle-asmdevices.rules
- On SLES10:
- # /etc/init.d/boot.udev stop
/etc/init.d/boot.udev start
-
On RHEL5/OEL5/OL5: - # /sbin/udevcontrol reload_rules
/sbin/start_udev
- On RHEL6/OL6:
- #/sbin/udevadm control –reload-rules
/sbin/start_udev
-
- ls -al /dev/asm* //验证udev是否正确
- brw-rw—-. 1 grid asmadmin 8, 64 Apr 25 09:00 /dev/asm-diskb
- brw-rw—-. 1 grid asmadmin 8, 80 Apr 25 09:00 /dev/asm-diskc
- brw-rw—-. 1 grid asmadmin 8, 96 Apr 25 09:00 /dev/asm-diskd
- 自此udev绑定磁盘完毕!!
如果ORACLE不提供相应的asmlib包,那么我们需要使用raw裸盘来创建asmdiskgroup
oracle asmlib
第三种方案:
oracle asmlib:
7.1 ASMlib驱动包安装:
7.1.1 :确定