在这里我们将介绍Oracle RAC在Linux下的安装,Oracle Real Application Server,真正应用集群,简称Oracle RAC ,是Oracle的并行集群,位于不同服务器系统的Oracle实例同时访问同一个Oracle数据库,节点之间通过私有网络进行通信,所有的控制文件、联机日志和数据文件存放在共享的设备上,能够被集群中的所有节点同时读写。
系统配置
1、创建用户和组 oinstall dba 组用户
oracle -g oinstall -G dba 匿名用户:确认匿名用户 nobody 存在与系统中,在安装完成后nobody 用户必须执行一些扩展任务(extjob)确认nobody用户是否存在:
#id nobody 如果用户不存在则需要添加该用户。
注意给oracle用户设置密码
2、配置网络
ip地址的规划,通过修改 /etc/sysconf/network-script/ifcfg-ethx
配置网卡的静态ip地址主机名的永久修改: /etc/network
本地DNS的配置: /etc/hosts
配置/etc/host.conf 该文件用来指定域名解析方法的顺序:
order hosts,bind 它说明,首先通过/etc/hosts文件解析,如果在该文件中没有相应的主机名与IP 地址的对应关系,再通过域名服务器bind进行解析
3、配置安全SSH 通道,针对ORACLE用户,在每个节点创建 rsa 和dsa 的密钥
rac1#su - oracle rac1#mkdir .ssh rac1#chmod 700 .ssh rac1#cd .ssh rac1#ssh-keygen -t rsa 创建密钥对,其他默认
同样在另一台主机上执行相应的操作。
rac2#su - oracle rac2#mkdir .ssh rac2#chmod 700 .ssh rac2#cd .ssh rac2#ssh-keygen -t rsa 创建密钥对,其他默认 rac1#ssh rac1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys 把节点1 的共钥 从定向到一个文件因为现在还没有密钥对,所以会提示输入密码。直接输入密码就行了
rac1#ssh rac2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys 把节点2 的共钥 从定向到一个文件 rac1#cat authorized_keys 查看节点1和节点2的共钥的内容,同样拷贝到 节点2上面。 rac1#scp authorized_keys rac2:/home/oracle/.ssh/ 要输入节点2的密码 改一下权限
rac1#chmod 600 authorized-keys DSA密钥的设置同理
rac1#ssh rac1 date 测试共钥连接情况 远程执行 date 命令,此时不用输入密码 rac1#ssh rac2 date 测试共钥连接情况 远程执行 date 命令,此时不用输入密码 此时可证实安全需要通道配置成功
4、检查所需的软件
#rpm -qa |grep 需要的软件包
5、配置内核参数
vi /etc/sysctl.conf kernel.sem=250 32000 100 128 kernel.shmmni=4096 kernel.shmall=2097152 kernel.shmmax=2147483648 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 然后执行: #sysctl -p
6、设置shell对oracle用户的限制
vi /etc/security/limits.conf 在每个节点上执行相同的操作:编辑/etc/security/limits.conf,添加内容:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofilw 65536 编辑/etc/pam.d/login,添加如下内容: session required /lib/security/pam_limits.so
编辑/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 磁盘配置
安装 CRS
安装真正的RAC
存储选项: 项目 存储系统 存储位置
clusterware 本地(EXT3)或NFS 本地或NFS
voting disk OCFS2 Raw device NFS 共享磁盘 NFS
OCR OCFS2 Raw device NFS 共享磁盘 NFS
数据库软件 OCFS2 本地 NFS 本地或共享磁盘 NFS
数据库 OCFS2 ASM Raw device NFS 共享磁盘 NFS
恢复文件 OCFS2 ASM NFS 共享磁盘 NFS
存储机制
clusterware 数据库 恢复文件
ASM 否 是 是
OCFS2 是 是 是
Raw Device 是 是 否
NFS 是 是 是
OCFS2 安装这个软件 下载3个软件包 在两边都要安装 OCFS2-2.6.9-22.ELsmp-1.2.3-1.i686.rpm 这个文件要跟 uname -a 的系统版本对应起来 ocfs2console-1.2.1-1.i386.rpm ocfs2-tools-1.2.1-1.i386.rpm
安装顺序:tools ----内核模块 ----- console
磁盘的处理
#fdisk -l 查看磁盘分区 #fdisk /dev/sdb 创建分区 #export DISPLAY=本地机器IP #ocfs2console 打开ocfs2的控制台进行ocfs2的配置 菜单Task 下的format开始格式化分区
Oracle的安装前的准备
#mkdir -p /orac/orachome #mkdir -p /orac/oradata #mount -t ocfs2 /dev/sdb1 /orac/orahome #df -h 查看挂接情况 #mount -t ocfs2 -o datavolume,nointr /dev/sdb2 orac/oradata #df -h #mounted.ocfs2 -f 查看ocfs2文件系统的加载情况 另一个节点rac2
#/etc/init.d/o2cd load 加载这个模块 #/etc/init.d/o2cd status 查看加载这个模块的状态 查看到节点2 ocfs2 状态是 offline
#/etc/init.d/o2cd online 使其online #/etc/init.d/o2cd status 查看加载这个模块的状态 #mount -t ocfs2 /dev/sdb1 /orac/orahome #df -h #mounted.ocfs2 -f #mount -t ocfs2 -o datavolume,nointr /dev/sdb2 /orac/oradata #mounted.ocfs2 -f 系统启动时自动加载ocfs2文件系统和启动相应的模块----两个节点都要配置
#/etc/init.d/o2cd configure 启动时自动加载ocfs2 的相关模块 #vi /etc/fstab 启动是自动挂接文件系统 /dev/sdb1 /orac/orahome ocfs2 _netdev 0 0 /dev/sdb2 /orac/oradata ocfs2 _netdev,datavolume,nointr 0 0 安装集群 clusterware 文件夹 crs 安装clusterware oradata 建库时使用 orahome 安装oracle数据库软件
要对这些文件夹的主用户进行修改
#cd /orac #chown root.oinstall crs #chown oracle.oinstall orahome #chown oracle.oinstall oradata #chmod -R 775 ors #chmod -R 775 orahome #chmod -R 775 oradata #ls -l 在另外一个节点上也要进行相应的修改
把集群clusterware安装软件拷贝进来
#su - oracle #export DISPLAY=本地ip:0.0 #./runInstaller 安装数据库软件 选择安装类型 企业版
创建数据库: #dbca
测试数据库的情况:客户端的连接文件的修改:在客户端安装路径下: NETWORK/ADMIN/tnsnames.ora
ORATEST tns服务名= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.116.121 节点1IP)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.116.129 节点2IP)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = oratest.sinobest.com 全局数据库名) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) SQLPLUS客户端的测试:在windows下打开命令行 或者直接打开 Oracle SQL*Plus
> sqlplus /nolog SQL>conn sys/123456@tnsname as sysdba SQL>select * from V$instance; 查看当前的实例 SQL>set wrap off; 设置一下显示的方式 SQL>set linesize 200; SQL>select * from V$instance; 查看当前的实例 SQL>select * from gv$instance; 查看全局实例视图