redhat6.3下安装ORACLE11.2.3RAC

主机环境:双节点,浪潮850 

操作系统:REDHAT 6.3 

内核版本:2.6.32-279.el6.x86_64

ORACLE数据库版本:11.2.0.3.0 

网卡两块:bond0,bond0:1  均为多块eth网卡捆绑后的网卡 

共享存储连光纤交换机 


一 操作系统准备 


1 系统软件包 


    binutils-2.17.50.0.6

    compat-libstdc++-33-3.2.3

    compat-libstdc++-33-3.2.3 (32 bit)

    elfutils-libelf-0.125

    elfutils-libelf-devel-0.125

  # gcc-4.1.2

    gcc-c++-4.1.2

  # glibc-2.5-24

  # glibc-common-2.5

  # glibc-devel-2.5

  # glibc-headers-2.5

    ksh-20060214

    libaio-0.3.106

    libaio-0.3.106 (32 bit)

    libaio-devel-0.3.106

    libaio-devel-0.3.106 (32 bit)

  # libgcc-4.1.2

    libstdc++-4.1.2

    libstdc++-4.1.2 (32 bit)

    libstdc++-devel 4.1.2

    make-3.81

    numactl-devel-0.9.8.x86_64

    sysstat-7.0.2 

    numactl-devel 

    unixODBC 

    unixODBC-devel 


安装gcc软件时需要上述“#”号后面软件包按一定顺序安装,否则在安装GI时(测试完成之后)会

报错:"error in inroking target 'mkldflags ntcontab.o nnfgt' of makefile ' /u01/app/11.2.0/grid/network/lib/ins-net-client.mk' "

安装顺序如下: 

glibc-common-2 

kernel-header-2 

libgcc-4 

glibc-2

libgomp-4

nscd-2 

glib-headers-2 

glibc-devel-2 

mpfr-2.4

ppl-0.

cloop-ppl-0.

cpp-4 

gcc-4 


报错时上网查询,有给出CPP包没安的解释,但如果不按顺序把GCC按上的话仍然会报次错误。


 ( 配置操作系统参数 )

2 网络参数 

由于不使用DNS,直接在/etc/host

#public 

192.168.20.17  lc01 lc01.localdomain 

192.168.20.18  lc02 lc02.localdomain 


#private 

10.10.10.17  lc01-priv lc01-priv.localdomain 

10.10.10.18  lc02-priv lc02-priv.localdomain 


#virtual

192.168.20.22  lc01-vip lc01-vip.localdomain 

192.168.20.21  lc02-vip lc02-vip.localdomain 

#scan 

192.168.20.19 data-scan


3 修改操作系统内核 

在/etc/sysctl.conf文件中添加修改

# 信息队列的最大值

kernel.msgmnb = 65536


# 一条信息的最大值

kernel.msgmax = 65536


# 用于定义单个共享内存的最大值,应能在一个共享内存段下容纳下整个SGA,设置过低会导致需创建多个共享导致系统性能下降

kernel.shmmax = 687194767360


# 可使用共享内存总页数,单位 pages,一般为shmmax/shmmin

kernel.shmall = 167772160

#共享内存段的最大数量,一般为4096 

kernel.shmmni = 4096


#semaphores:semmsl,semmns,semopm,semmni 

kernel.sem = 5200 665600 5200 128 


#semmsl 信号量集合中能包含的信号量最大数目

#semmns 系统内可许可的信号量最大数目

#semopm 表示单个semopm()调用在一个信号集合上可以执行的操作数量

#semmni 表示系统信号量集合总数


#系统许可的文件句柄的最大数,linux系统中可以打开文件的数量 

fs.file-max = 6815744 

#同时可拥有异步IO请求数目

fs.aio-max-nr = 1048576 


#套接字接收缓冲区大小的缺省值

net.core.rmem_default = 262144

#套接字接收缓冲区大小的最大值

net.core.rmem_max = 4194304

#套接字发送缓冲区大小的缺省值

net.core.wmem_default = 262144 

#套接字发送缓冲区大小的最大值

net.core.wmem_max = 1048586 

#应用程序可使用的ipv4端口范围

net.ipv4.ip_local_port_range = 9000 65500


修改完后使用/sbin/sysctl -p使参数生效 


4 修改/etc/security/limits.conf 

  加入 

#nproc 单个用户可用最大进程数量,nofile 可打开文件的最大数量 

*                soft    nproc           6000

*                hard    nproc           16384 

*                soft    nofile          1024 

*                hard    nofile          65536 


5 禁用selinux和firewall 

在 /etc/selinux/config 文件中把SELINUX=enable改为SELINUX=disable 

service iptables stop 

chkconfig iptables off 

#如果不按firewall安装GI时会报错 


6 建立用户和组 

groupadd -g 500 oninstall 

groupadd -g 501 dba

groupadd -g 502 oper 

useradd -u 600 -g oinstall -G dba,oper oracle 

passwd oracle 


7 创建文件夹 

mkdir -p /u01/app/grid

mkdir -p /u01/app/11.2.0/grid

mkdir -p /u01/app/oracle 

chown -R root:dba /u01 

chown -R oracle:oinstall /u01/app/oracle 

chown -R grid:oinstall /u01/app/grid 

chmod -R 755 /U01 


8 添加环境变量 

su - oracle 

在 .bash_profile中 

#ORACLE_SETTING 

export DIAPLAY=:0.0

TMP=/tmp;export TMP

TMPDIR=$TMP;export TMPDIR

ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1;export ORACLE_HOME

ORACLE_SID=db_1;export ORACLE_SID

export ORACLE_UNQNAME=db

ORA_CRS_HOME=$ORACLE_BASE/product/11.2.0/crs;export ORA_CRS_HOME 

ORACLE_TERM=xterm;export ORACLE_TERM

PATH=/user/sbin/:$PATH;export PATH 

PATH=$ORACLE_HOME/bin:$PATH;export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;

export LD_LIBRARY_PATH 

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

export CLASSPATH 


su - grid 

在.bash_profile 

# for oracle 

export DISPLAY=:0.0 

export TMP=/tmp;

export TMPDIR=$TMP;

export ORACLE_BASE=/u01/app/grid;

export ORACLE_HOME=/u01/app/11.2.0/grid;

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;



9 设置ssh互信 

设置grid用户互信 

在grid用户下  mkdir .ssh

chmod 755 .ssh

ssh-keygen -t rsa 在.ssh目录下生成id_rsa.pub,id_rsa 

ssh-keyget -t dsa 在.ssh目录下生成id_dsa.pub,id_dsa 

都在.ssh目录下

把节点1 的.pub文件全部拷贝到authorized_key文件中,cat id_rsa.pub>>authorized_key,cat id_dsa.pub>>authorized_key;

        节点2的.pub文件全部拷贝到authorized_keys文件中, cat id_rsa.pub>>authorized_key,cat id_dsa.pub>>authorized_keys.

把节点1的authorized_key文件拷贝到节点2的.ssh目录下 

scp authorized_key  节点2:.ssh/ 

在节点2 把authorized_key追加到authorized_keys文件中 cat authorized_key>>authorized_keys,

         这时authorized_keys中包含所有节点的公钥。

把节点2下的authorized_keys拷贝回节点1.ssh目录下 

scp authorized_keys 节点1:.ssh/

这时两个节点都有全部的公钥。


测试:ssh 节点1 date;

ssh 节点1-priv date;

ssh 节点1-vip date;

ssh 节点2 date;

ssh 节点2-priv date;

ssh 节点2-vip date;

测试在.ssh目录下生成known_hosts文件记录连接的主机信息,第一次连接选择yes即可。


同样步骤在oracle用户下设置互信 



二  设置共享存储 


共享存储是rac集群能够实现的关键,而网络上大部分都是用虚拟机环境设置的,在真实环境下设置有点胆战心惊。


首先请存储工程师挂载共享存储

挂在完成后在/dev下发现sd*等文件共70张。

第一个考虑的问题用不用向正常访问一样分区,格式化。

因为要使用ASM,考虑ASM的一个目的是绕过操作系统直接操作存储,如果格式化了又把磁盘的操作交给操作系统,一旦操作系统出了问题可能会影响读写性能,也可能成为性能瓶颈,最后决定不分区也不格式化直接用裸盘。

这时问题来了,通过redhat6.3的磁盘实用程序查看磁盘时,磁盘都有报警:“Warning:Several paths to this drive has been  detected but no corresponding multipath device was found.You OS may be misconfigured.”

与存储工程师联系确认发现,那边只挂载了10块盘,而我这边却显示为70块这是怎么回事?

原来存储工程师在挂在存储时使用了多路劲技术,这种技术能实现:1 故障的切换和恢复 2 IO流量的负载均衡 3 磁盘虚拟化 

测了一下磁盘的IO确实有巨大的提升 

那多路径形成的sd*盘能否直接使用?感觉如果直接使用就可能失去故障切换恢复和IO流量负载均衡的优势,在挂载ASM磁盘时也不好挂在(70多张盘)。

最后决定使用linux下的多路径软件multipath解决 


1 安装multipath 

在操作系统光盘目录下安装以下软件 

device-mapper-event-libs

device-mapper-multipath

device-mapper-libs

device-mapper-multipath-libs

device-mapperevent

device-mapper-persistent-data

device-mapper 


2 加载

查看多路径状态 multipath -ll 

 返回结果有:DM multipath kernel driver not loaded 说明DM模块没有加载 

初始化DM: modprobe dm-multipath 

  modprobe dm-round-robin 

  service multipath start 

  multipath -v2 


这时再通过 multipath -ll 查看 

返回 /etc/multipath.conf does not exist  说明多路径软件的配置文件还没有配置 


3 配置文件 

在/etc下建立文件multipath.conf加入   

#默认策略 

defaults {

 udev_dir /dev  #默认使用的目录 

   user_friendly_names yes 

  path_grouping_policy multibus #默认的路径组策略 

  failback immediae #故障恢复的模式

  no_path_retry fail #在路径不可用下尝试失效路径的次数(不尝试) 

 getuid_callout "/sbin/scsi_id -g -u --whitelisted --device=/dev/%n"  

#获得唯一设备号的默认程序,通过唯一设备号把同一个盘识别出来 

}

#如果不想让某些磁盘被多路径软件识别出来而是作为虚拟磁盘使用可以加入 

# blacklist { devnode "^sdh"}

#因为使用多路径挂载的每次重启系统后同一块盘的显示磁盘会发生变化,这样如果按名称来可能出错,因此按路径来

#使用multipath -v3 查询出每块磁盘的wwid


multipaths {

multipath {

wwid3600507680180870dd0000000000003d0

alias                   OCR01

}


multipath {

                wwid                    3600507680180870dd0000000000003d1

alias                   OCR02

}


multipath {

               wwid                    3600507680180870dd0000000000003cf

alias                   OCR03

        }


multipath {

               wwid                    3600507680180870dd0000000000003ce

alias                   DG01

        }


multipath {

                wwid                    3600507680180870dd0000000000003d7

alias                   DG02

        }


multipath {

                wwid                    3600507680180870dd0000000000003d6

alias                   DG03

        }


multipath {

                wwid                    3600507680180870dd0000000000003d5

alias                  ARCHDG01

        }


multipath {

                wwid                    3600507680180870dd0000000000003d3

alias                   VOTE01

        }


multipath {

                wwid                    3600507680180870dd0000000000003d4

alias                   VOTE02

        }


multipath {

                wwid                    3600507680180870dd0000000000003d2

aliasVOTE03

       }



}



#这时无论重启时某块磁盘在系统中显示是:/dev/sda,/dev/sdaa,/dev/sdab,

#还是/dev/sda,/dev/sds,/dev/sdj 

#在/dev/mapper目录下都是DG1  


4 使配置文件生效 

每次修改配置文件都得重启,或重新加载服务

service multipathd restart/ service multipathd reload 

重新配置策略 :multipath -F 清空以前的策略,这时在/dev/mapper下除了control文件外没有其他文件 

multipath -v2 加载新的策略,这时在/dev/mapper下出现 OCR1,OCR2,OCR3等文件

使用设备时直接使用/dev/mapper/OCR1等就可以 


5 权限 

/dev下默认属主为:root,属组为 disk 

在安装GI时会显示不出来磁盘,必须修改磁盘权限 

但直接修改 /dev/mapper/OCR1等文件不会生效,该目录不能修改属主(可能因为都是link文件) 

但该目录下的control文件可以修改,chown grid:oinstall /dev/mapper/control 

修改完成后在安装GI时确实能显示磁盘/dev/mapper/*,但仍有报错,而且重启后权限又变回root:disk.


通过multipath -l 查询 

查询结果处理说明 /dev/mapper/OCR*是由哪几块/dev/sd*组成,后面还显示了这时dm-*,

感觉dm-*为链接文件的真实文件,查找后发现dm-*就在/dev下 

修改权限 chown grid:oinstall /dev/dm-*  

修改后 GI运行没有报关于ASM存储的错误 



三 安装GI

1 解压 

将软件包p10404530_112030_Linux-x86-64_3of7.zip解压到节点rac01.

    # unzip p10404530_112030_Linux-x86-64_3of7.zip 

2 安装cvuadisk包

    在Grid的安装包grid/rpm/cvuqdisk-1.0.9-1.rpm,以root用户安装

    # export CVUQDISK_GRP=oinstall

    # rpm -ivh cvuqdisk-1.0.9-1.rpm

3 以grid用户在grid目录下执行./runInstall名令 

export LANG=C #这种语言变量,否则在出现的图形界面为乱码 

./runInstall 

如果使用./runInstall 出现错误:"无法使用命令 /usr/bin/xdpyinfo自动检查显示器颜色,是否设置DISPLAY" 

解决办法:1 在root用户下执行:xhost + 

返回信息为:"access control disabled,clients can connect from any host"

 2 在 grid 用下,export DISPLAY=远程来源IP:0.0 

即可


4 过程 


安装选项:          安装和配置集群的网格基础结构.

    安装类型:          高级安装

    语言:              简体中文

    网格即插即用:      集群名称:    rac-cluster

                          SCAN名称:    rac-scan (此名称应该与/ETC/HOSTS文件中sanip的对应名称一致)

                          SCAN端口:    1521

                       不配置GNS,如果需要自动生成虚拟IP,需配置GNS

                       GNS子域:     racgrid

                       GNS VIP地址: 192.168.89.91

    集群节点信息:      编辑和添加主机和虚拟IP名称

                      主机名   虚拟IP名

                       rac01    rac01v

                       rac02    rac02v

                       点ssh按钮配置节点ssh互信(需要输入grid用户密码)

注:第一次安装时肯能是缺少了某些包,出现一个小问题 

当进行下一步时,提示错误"该主机名(节点-vip)已经被使用" 的错误,只有在两个节点的/etc/hosts文件中把vip的信息注释掉才能通过。如果在这之前注释掉vip仍然会报错,得把vip信息加上,再碰到错误"该主机名(节点-vip)已经被使用",才能进行下一步。怀疑是某个软件包(GCC等)没有安好。安装好后不会有次怪异的问题。

    网络接口使用情况:  接口名称    子网           接口类型

                       PublicNet   192.168.20.0   公共

                       PrivateNet  10.10.10.0  专用

    存储选项:          自动存储管理(ASM)

    创建ASM磁盘组:     当选择存储选项:自动存储管理(ASM)后,需要创建ASM磁盘.

                       设置ASM磁盘搜索路径/dev/mapper/* #这时如果没有应注意/dev/dm*的权限

                       设置磁盘组名,使用normal,勾选出现的磁盘

#这时选择的磁盘作为OCR和vote盘使用

    ASM口令:           设置SYS和ASMSNMP的口令,是用相同口令

    故障隔离:          不使用智能平台管理接口(IPMI).

    安装位置:          设置安装位置默认:Oracle基目录/u01/app/grid,软件位置/u01/app/11.2.0/grid

    先决条件检查:      自动检查先决条件

/* 第一次检查时有几个报错 1 缺少包 cvuqdisk

(在grid/rpm目录下安装即可) 

 2 device check for asm 

(应该是磁盘的顺序或权限有问题,顺序问题通过绑定wwid解决,权限问题修改/dev/dm*属主与属组)

 3 NTP failed  

NTP服务失败。因为两个节点都没做NTP服务,时间同步服务器在其他主机上,把/etc/ntp.conf改成/etc/ntp.conf.bak即可。

 4 task resolv.conf Intergrity 因为没有使用DNS服务器,直接用/etc/hosts,该错误可以忽略。

*/

    安装

/* 安装时报错 

KFOD-070311

ORA-027472

都是因为共享磁盘权限的问题


OUI-10066 

PRCI-1108

PRCI-1003 

都是因为缺少包 libcap

*/




    按提示在各节点上以root用户执行脚本.

/* 执行脚本时一定要先在第一个主机,即运行./runInstall程序的主机上执行,然后再在另一个上执行,否则会导致错误。

    # /u01/app/oraInventory/orainstRoot.sh 

    # /u01/app/11.2.0/grid/root.sh

 

完成 


检查: olsnodes 

crsctl check crs (次命令只有root可以执行)

    CRS-4638: Oracle High Availability Services is online

    CRS-4537: Cluster Ready Services is online

    CRS-4529: Cluster Synchronization Services is online

    CRS-4533: Event Manager is online

crs_stat -t -v 

srvctl status listener

重新启动节点后,如果集群服务不能启动.crsctl check crs


需要检查设备权限的问题,重启后磁盘设备owner会被修改为root.

    或者没有设置crs随系统启动.

    /u01/app/11.2.0/grid/bin/crsctl stop crs            # 停止CRS服务

    /u01/app/11.2.0/grid/bin/crsctl start crs           # 启动CRS服务

    /u01/app/11.2.0/grid/bin/crsctl disable crs         # 禁止随系统启动

    /u01/app/11.2.0/grid/bin/crsctl enable crs          # 允许随系统启动

    /u01/app/11.2.0/grid/bin/crsctl stop cluster -all   # 停止所有节点上运行的全部集群资源

    /u01/app/11.2.0/grid/bin/crsctl start cluster -all  # 启动所有节点上运行的全部集群资源


四 安装ORACLE软件 

1 将oracle数据库软件解压到节点rac01.

    unzip p10404530_112030_Linux-x86-64_1of7.zip

    unzip p10404530_112030_Linux-x86-64_2of7.zip

2 以oracle登入系统,运行database下的runInstaller文件 


配置安全更新   不需要接收更新    

    安装选项       选择仅安装数据库软件,后续再通过dbca创建数据库.

    网格选项       Real Application Clusters数据库安装

                   节点全选 #如果CRS没有自动重启,就看不到节点,重新后得重新runInstall才能看到节点

                   点按钮SSH Connectivity.配置oracle下ssh互信.

    产品语言       根据需要选择:英语、简体中文

    数据库版本     企业版    

    安装位置       默认(根据.bash_profile中的全局变量设置)

                  Oracle基目录: /u01/app/oracle

                   软件位置: /u01/app/oracle/product/11.2.0/db_1

    操作系统组     oinstall

    先决条件检查   忽略警告

    安装

    按提示在每个节点上执行脚本/u01/app/oracle/product/11.2.0/db_1/root.sh

    点OK完成安装


五 配置ASM

    以grid用户运行asmca.

    设置ASM磁盘搜索路径/dev/mapper/*,出现multipath配置的磁盘

创建磁盘时报错,因为每块磁盘不能超过两T,需要把超过2T的磁盘进行分区。

分区之后/dev/mapper下不会有变化,只有在fdisk -l 时能看到分区的盘,通过ASM也不会看到。

只有通过 multipath -F 清空多路径,再 multipath -v2 重新连接多路径才能看到,这时在ASM里也能选磁盘的分区了。


六 创建数据库 

    以oracle用户运行dbca.(为方便管理应该在第一个节点上执行,否则可能会出现sid_1在节点2上运行,sid_2在节点1上运行的情况)

    数据库类型     Oracle Real Application Clusters数据库

    操作           创建数据库

    数据库模板     一般用途

    数据库标识     设置全局数据库名和SID前缀,节点全选

    管理选项       默认

    数据库身份     设置密码

    数据库文件位置 存储类型:自动存储管理,使用Oracle-Managed files,数据库区:设置之前创建的磁盘组+DATA

                                                                    恢复区:+FLASH_AREA

    字符集

    安装

    

    出现提示在节点rac02上启动database control出错,在节点rac02执行以下命令:

    [oracle@rac02 ~]$ export ORACLE_UNQNAME=astt

    [oracle@rac02 ~]$ /u01/app/oracle/product/11.2.0/db_1/bin/emctl start dbconsole

    点OK安装完成.

    安装后可能不能连接

    如果出现错误ORA-12537: TNS:connection closed,可能是权限的问题,执行以下可以解决:

    # chown -R oracle:oinstall /u01/app/oracle

    # chown -R grid:oinstall /u01/app/grid

    # chmod -R 755 /u01/app/oracle

    # chmod -R 755 /u01/app/grid


七  测试数据库

    运行sqlplus,以dba权限登录Oracle系统后执行以下语句查询集群节点状态:

    $ ./crs_stat -t -v

    $ sqlplus / as sysdba;

    SQL> select instance_name,host_name,status from v$instance;

    SQL> select instance_name,host_name,status from gv$instance;

    $ srvctl stop database -d db -o immediate;

    $ srvctl start database -d db;




你可能感兴趣的:(ASM,oracle,redhat,RAC,multipath)