准备环境的时 ,要4个对外IP,2个对内IP
不超过2T,,一般都用OCFS
高端存储适合用ASM
linux10G安装的时候,安装的机器时间要小于等于(如果是等于要严格等于)第二个机器的时间(只有linux10G会有这个问题),不然会报错,拷贝空值什么的。
出现此错误,说明是时间问题,
hosts里面要注意的地方:
1)127.0.0.1 那一行不能删除。
2)主机名要小写,不能大写。
3)不能加下划线。
1.安装系统,把所有的开发包全部安装上
关掉防火墙和SELinux
yum -y install compat-libstdc++*
yum -y install elfutils-libelf-devel*
yum -y install elfutils-libelf-devel-static*
yum -y install gcc*
yum -y install gcc-c++*
yum -y install glibc*
yum -y install glibc-common*
yum -y install glibc-devel*
yum -y install glibc-headers*
yum -y install kernel-headers*
yum -y install ksh*
yum -y install libaio*
yum -y install libaio-devel*
yum -y install libgcc*
yum -y install libgomp*
yum -y install libstdc++*
yum -y install libstdc++-devel*
yum -y install make*
yum -y install sysstat*
yum -y install unixODBC*
yum -y install unixODBC-devel*
yum -y install libXp*
2.配置核心参数
vi /etc/sysctl.conf
kernel.core_uses_pid = 1
fs.file-max = 65536
fs.aio-max-nr = 1048576
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
kernel.shmmni = 4096
kernel.sem = 500 64000 100 128
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
修改完执行此命令 : sysctl -p
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
fi
之后,执行:$ulimit验证一下.
vi /etc/csh.login
if ( $USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
vi /etc/pam.d/login
session required pam_limits.so
vi /etc/security/limits.conf
oracle soft nofile 655360
oracle hard nofile 635360
oracle soft nproc 10240
oracle hard nproc 16384
3.配置网络
127.0.0.1 linux1 localhost.localdomain localhost
需要将其删除成如***意上面的linux1被删除):
127.0.0.1 localhost.localdomain localhost
如果 RAC 节点名出现在回送地址中,您在 RAC 安装期间将接收到以下错误信息:
ORA-00603:ORACLE server session terminated by fatal error
或
ORA-29702:error occurred in Cluster Group Service operation
在RAC1中,需要配置两个网段(RAC2也一样)
192.168.56.101 是公有网段
10.10.10.11 是私有网段
在RAC1中,配置两个文件可以达到修改IP的目的(RAC2中也如此类似操作)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
HWADDR=08:00:27:65:d4:be
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR=192.168.56.101
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=08:00:27:5f:b7:85
IPADDR=10.10.10.11
NETMASK=255.255.255.0
之后,重启IP,使之生效。
service network restart
vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
#rac1
192.168.56.101 rac1
192.168.56.111 rac1vip
10.10.10.11 rac1priv
#rac2
192.168.56.102 rac2
192.168.56.222 rac2vip
10.10.10.22 rac2priv
4.创建用户,用户组
/usr/sbin/groupadd -g 1000 oinstall
/usr/sbin/groupadd -g 1200 dba
/usr/sbin/useradd -u 555 -g oinstall -G dba oracle
两边的用户id,组id 要一样
mkdir -p /u01/app/oracle/product/10.2/db_1
mkdir -p /u01/app/oracle/product/10.2/crs
chown -R oracle:oinstall /u01
chmod -R 775 /u01
vi /home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2/crs
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATH
5.配置raw或 ocfs2
首先,添加共享存储。
从oss.oracle.com下载ocfs2软件
注意:两个节点都要装这三个软件
使用此命令查看 uname -a 注意下载的内核要一致,一个字母都不要差
安装ocfs2
ocfs2-2.6.9-22.ELsmp-1.0.7-1.x86_64.rpm
还将需要下载以下两个支持文件(这两个与内核版本无关):
ocfs2console-1.0.2-1.x86_64.rpm
ocfs2-tools-1.0.2-1.x86_64.rpm
root用户到文件所在的目录 rpm -Uvh *.rpm 即可安装
使用root用户配置ocfs2
/etc/init.d/o2cb configure //一直回车,有失败也不用管
/etc/init.d/o2cb enable //一直回车,有失败也不用管
使用root用户调出图形界面添加节点信息,配置节点,会弹出图形界面(在一个节点配置即可,一定要先加节点才能mount)
/usr/sbin/ocfs2console
注意:
1)name 一定要是主机名
2)ip 一定要是内部通讯的
可以手工配置,也可以在图形界面设置
通过如下命令可以查看是否两边是否一定
cd /etc/ocfs2
more *
/etc/init.d/o2cb config //后台服务器
(如果之前没有格式化,可以在ocfs2界面格式化,)
使用root用户格式化磁盘为ocfs2格式(在一个节点上格式化就可以了)
mkfs.ocfs2 -L "clusterfiles" /dev/sdb //只需要一个节点运行此命令即可
(
之前一定要把防火墙关闭,要不然,mount不上
chkconfig --list|grep ip
此命令一定要是off的
chkconfig --level 2345 ip6tables off
chkconfig --level 2345 iptables off
service iptables stop
service ip6tables stop
)
mkdir /oradata //两个节点都要操作此命令
之后要改权限,改成oracle所有。
mount -o datavolume,nointr -t ocfs2 /dev/sdb /oradata //两个节点都要操作此命令
df -h 查看是否成功挂载
再到另外一个节点查看 mount
之后运行如下命令使其 online (两个节点都要运行此命令)
cd /etc/init.d/
./o2cb online
可以通过 如下查看是online(两个节点都要online才行)
cd /etc/init.d/
./o2cb //命令可以不记全,只输入此,随后又提示。
将 OCFS 配置为在启动时自动载入
我们需要在集群中的所有节点上以 root 用户帐户的身份运行以下命令
export PATH=$PATH:/sbin:/usr/sbin
6.配置Hangcheck 计时器
[[email protected] /]# vi /etc/rc.local
增加:
modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=180
这个增加后,记住一定要重新或者执行生效啊!
要立即加载模块,执行
[[email protected] ~]# modprobe -v hangcheck-timer
查看是否执行成功,下面为成功
[[email protected] ~]# lsmod | grep hangcheck_timer
hangcheck_timer 8153 0
7.
使用root用户mount集群文件系统
echo "mount -o datavolume,nointr -t ocfs2 /dev/sdb /oradata" >> /etc/rc.local
echo "chown –R oracle:dba /oradata" >> /etc/rc.local
echo "chmod –R 775 /oradata" >> /etc/rc.local
8 . 配置互信(一定要是oracle用户,两个节点都要做。)
/usr/bin/ssh-****** -t rsa
/usr/bin/ssh-****** -t dsa
把4个文件合成一个文件
注意权限要是是644
chmod 644 authorized_keys
在节点RAC2进行的操作
[[email protected] ~]$ ls -a
. .bash_history .bash_profile .emacs .mozilla .viminfo
.. .bash_logout .bashrc .kde .ssh .Xauthority
[[email protected] ~]$ cd .ssh
[[email protected] .ssh]$ ls
id_dsa id_dsa.pub id_rsa id_rsa.pub
[[email protected] .ssh]$ scp id_dsa.pub rac1:/home/oracle/.ssh/id_dsa.pub2
[email protected]'s password:
id_dsa.pub 100% 601 0.6KB/s 00:00
[[email protected] .ssh]$ ls
id_dsa id_dsa.pub id_rsa id_rsa.pub known_hosts
[[email protected] .ssh]$ scp id_rsa.pub rac1:/home/oracle/.ssh/id_rsa.pub2
[email protected]'s password:
id_rsa.pub
再到RAC1节点
cat id_dsa.pub id_dsa.pub2 id_rsa.pub id_rsa.pub2 > authorized_keys
scp authorized_keys rac2:/home/oracle/.ssh
之后要测试一下(如果都不需要密码,得到时间后。就说明ssh 对等性配置成功。)
[[email protected] ~]$ ssh rac1 date
[[email protected] ~]$ ssh rac2 date
Sat Sep 14 16:03:58 CST 2013
[[email protected] ~]$ ssh rac1priv date
Sat Sep 14 16:04:59 CST 2013
[[email protected] ~]$ ssh rac2priv date
The authenticity of host 'rac2priv (10.10.10.22)' can't be established.
RSA key fingerprint is db:ad:62:77:5a:b5:d6:8f:c6:55:a9:64:61:9b:39:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2priv,10.10.10.22' (RSA) to the list of known hosts.
Sat Sep 14 16:05:09 CST 2013
[[email protected] ~]$ ssh rac1 date
Sat Sep 14 16:06:54 CST 2013
[[email protected] ~]$ ssh rac2 date
Sat Sep 14 16:09:30 CST 2013
[[email protected] ~]$ ssh rac1priv date
Sat Sep 14 16:09:55 CST 2013
[[email protected] ~]$ ssh rac2priv date
The authenticity of host 'rac2priv (10.10.10.22)' can't be established.
RSA key fingerprint is db:ad:62:77:5a:b5:d6:8f:c6:55:a9:64:61:9b:39:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2priv,10.10.10.22' (RSA) to the list of known hosts.
Sat Sep 14 16:10:03 CST 2013
请注意,当您使用 ssh 第一次访问远程主机时,其 RSA **将是未知的,从而将提示您确认是否希望连接该主机。 SSH 将记录该远程主机的 RSA **,并在以后连接该主机时不再做出相关提示。
在第一个主机上,以 oracle 用户身份登录
ssh rac1
ssh rac1priv
ssh rac2
ssh rac2priv
在第二个主机上,以 oracle 用户身份登录
ssh rac1
ssh rac1priv
ssh rac2
ssh rac2priv
9.安装crs(一个节点安装就可以了)
path要改一下,不能放在同一个目录
上面这里看到,要与hosts要严格一致
上面的文件名字可以随便取,但是必须要有这个目录,文件可以他会自己生成。
之后会有提示执行两个脚本,两个节点都要执行这两个脚本
执行的顺序是:RAC1执行第一个脚本,RAC2执行第一个脚本,RAC1执行第二个脚本,RAC2执行第二个脚本
出现如下,则为正常:
执行完两个脚本后,
用root用户
cd /u01/app/oracle/product/10.2/crs/bin
vi vipca加一行(两个节点都要做 )
unset LD_ASSUME_KERNEL
[[email protected] bin]# ./oifcfg getif //查看是否有信息
[[email protected] bin]# ./oifcfg setif -global eth0/192.168.56.0:public
[[email protected] bin]# ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
[[email protected] bin]# ./vipca //在第一个节点上做
装完软件后起的服务。如果ocr损坏,这些服务就起不来。
10.安装数据库软件
11.升级集群软件和数据库软件。
注意,集群升级软件和数据库升级软件是同一个。
先装哪个,先升级哪个。
注意下面的一定要看清楚是集群软件还是数据库软件。
这里下面的是集群软件。我们选择先升级集群软件。
一定要看清楚里面说什么,不能退出。里面会提示执行脚本。
第一个节点执行完这两个脚本,然后再到第二个节点执行两个脚本。
当升级完成后,这些服务会起来。
12,升级完成,配监听(配完监听才能建库)
配完监听会发现,多了两个监听的服务
13,建库
一般都要选择这个
字符集一定是开发要求是什么字符集,就选什么字符集,一般来说,选择 UTF8
安装中,如果报如下错打一个补丁就可以了。
退出的时候,会停留很长时间,这是因为他要停了之后,再起来。