workstation 10 下 11g rac安装步骤

来源:互联网 发布:公共基础知识题库软件 编辑:程序博客网 时间:2024/05/01 06:11

实验环境:VMware Workstation 10.0.0 build-1295980

                   Oracle Linux 6.4 64

                   Oracle 11g R211.2.0.3)+Grid 11.2.0

准备安装
一、IP规划
127.0.0.1 localhost.localdomain localhost
#public ip
192.168.1.144    rac01
192.168.1.145    rac02
#priv ip
192.168.100.144  rac01-priv
192.168.100.145  rac02-priv
#vip ip
192.168.1.213    rac01-vip
192.168.1.214    rac02-vip
#scan ip
192.168.1.215    racscan
注意:这里在安装新建虚拟机的的时候,先把一个虚拟机环境配置好

二、进行安装配置linux环境

① 修改安装影响数据库速度的临时交换空间tmpfs(共享内存)的size值大小,默认是物理内存的一半,单位默认是kb,我们在修改的时候要用M表示(/etc/fstab

② 修改好系统参数(/etc/hosts)添加如下内容,注意不能有下划线“_”,否则后边会报错ins-40937
192.168.1.144    rac01
192.168.1.145    rac02
192.168.100.144  rac01-priv
192.168.100.145  rac02-priv
192.168.1.213    rac01-vip
192.168.1.214    rac02-vip
192.168.1.215    racscan

③ 修改/etc/sysconfig/network文件,将hostname改成rac01rac02否则后边会在安装rac的时候识别虚拟网卡报错ins-40937,有背景色的都是需要重点检查的。

[root@rac01-priv ~]# vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=rac01

NOZEROCONF=yes

④ 修改网络配置文件(/etc/sysconfig/network-scripts/ifcfg-eth0

注意eth0一般习惯连接公网,eth1连接内网,并且注意如果是从虚拟机过来的,网卡配置里边的少个DEVICE=eth1,还有就是uuid不能和第一个虚拟机的uuid重复,否则后边rac安装的时候识别不了。

⑤ 打安装oracle需要的所有系统补丁(rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel)和oracleasmcvuqdisk相关的包

[root@rac01 ~]# df

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/mapper/vg_rac01-lv_root

                      21294972   3028472  17184748  15% /

tmpfs                  2025416       260   2025156   1% /dev/shm

/dev/sda1               495844     55761    414483  12% /boot

/dev/sr0               3634730   3634730         0 100% /media/OL6.4 x86_64 Disc 1 20130225

[root@rac01 ~]# mount /dev/sr0 //mnt/

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@rac01 ~]# cd /etc/yum.repos.d/

将系统原来的repo文件移动或者重命名

[root@rac01 yum.repos.d]# ls

packagekit-media.repo  public-yum-ol6.repo

[root@rac01 yum.repos.d]# mv public-yum-ol6.repo public-yum-ol6.repo.bak

新建一个repo文件

[root@rac01 yum.repos.d]# vi iso.repo

[meida]

name=media

baseurl=file:///mnt/

enabled=1

gpgcheck=0

gpgkey=file:///mnt/

"iso.repo" [New] 6L, 81C written

[root@rac01 yum.repos.d]# yum -y install  binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unixODBC unixODBC-devel

然后查询一下是否补丁安装完成

[root@rac01 yum.repos.d]# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

binutils-2.20.51.0.2-5.36.el6.x86_64

compat-libcap1-1.10-1.x86_64

compat-libstdc++-33-3.2.3-69.el6.x86_64

gcc-4.4.7-3.el6.x86_64

gcc-c++-4.4.7-3.el6.x86_64

glibc-2.12-1.107.el6.x86_64

glibc-devel-2.12-1.107.el6.x86_64

ksh-20100621-19.el6.x86_64

libaio-0.3.107-10.el6.x86_64

libaio-devel-0.3.107-10.el6.x86_64

libgcc-4.4.7-3.el6.x86_64

libstdc++-4.4.7-3.el6.x86_64

libstdc++-devel-4.4.7-3.el6.x86_64

make-3.81-20.el6.x86_64

sysstat-9.0.4-20.el6.x86_64

unixODBC-2.2.14-12.el6_3.x86_64

unixODBC-devel-2.2.14-12.el6_3.x86_64

[root@rac01 yum.repos.d]# 

显示都已经安装完成。

接下来安装oracleasm

[root@rac01 yum.repos.d]# find / -name 'oracleasm*'

/lib/modules/2.6.39-400.17.1.el6uek.x86_64/kernel/drivers/block/oracleasm

/lib/modules/2.6.39-400.17.1.el6uek.x86_64/kernel/drivers/block/oracleasm/oracleasm.ko

/media/OL6.4 x86_64 Disc 1 20130225/Packages/oracleasm-support-2.1.8-1.el6.x86_64.rpm

/mnt/Packages/oracleasm-support-2.1.8-1.el6.x86_64.rpm

[root@rac01 yum.repos.d]# rpm -ivh /mnt/Packages/oracleasm-support-2.1.8-1.el6.x86_64.rpm

warning: /mnt/Packages/oracleasm-support-2.1.8-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY

Preparing...                ########################################### [100%]

   1:oracleasm-support      ########################################### [100%]

[root@rac01 yum.repos.d]# 

接下来安装cvuqdisk(默认6.4没有需要自己下载上传然后授权,并且创建安装oinstall

 

⑥ 创建安装目录,用户和组
        创建组(注意两边的用户id必须一样 )

groupadd -g 500 oinstall

groupadd -g 501 dba

groupadd -g 502 oper

groupadd -g 503 asmadmin

groupadd -g 504 asmdba

groupadd -g 505 asmoper

创建用户到组

useradd -m -u 500 -g oinstall -G  asmadmin,asmdba,asmoper  grid

useradd -m -u 501 -g oinstall -G  dba,oper,asmdba  oracle

创建文件目录/u01/app,更改组和用户,并授权

mkdir  -p /u01/app

chown -R grid:oinstall /u01/app/

chmod -R 775 /u01/app/

/u01/app创建文件目录oraInventory,更改组和用户,并授权

mkdir -p /u01/app/oraInventory/

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

chmod -R 775 /u01/app/oraInventory/
/u01/app创建文件目录gridoracle,更改组和用户,并授权

mkdir -p /u01/app/grid

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

chmod -R 775 /u01/app/grid/

mkdir -p /u01/app/oracle

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

chmod -R 775 /u01/app/oracle/
最后ls -all 查看一下

由于后边创建数据库概要的时候会报错,是由于目录权限错误导致所以这里提前添加授权

[root@udbs01 ~]# chmod -R 775 /u01/app/oracle/cfgtoollogs/

⑦ 修改oracle用户和grid用户的初始化参数文件.bash_profile
修改grid下的.bash_profile

export ORACLE_SID=+ASM1   # 节点2+ASM2

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/

export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib

export PATH=$ORACLE_HOME/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/sbin:$ORACLE_HOME/OPatch:/bin:/usr/ccs/bin:$PATH

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

export TEMP=/tmp

export TMP=/tmp

export TMPDIR=/tmp

export CVUQDISK_GRP=oinstall

umask 022

修改oracle用户下的.bash_profile

export ORACLE_SID=orcl1    节点2orcl2

export ORACLE_UNQNAME=orcl #这个千万别忘记了

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/

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

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/lib:/usr/lib

export PATH=$ORACLE_HOME/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/sbin:$ORACLE_HOME/OPatch:/bin:/usr/ccs/bin:$PATH

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

export TEMP=/tmp

export TMPDIR=/tmp

umask 022

 

⑧ 系统操作系统内核参数( /etc/sysctl.conf)添加,注意默认紫色背景的参数原参数文件包含必须删除掉

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 1073741824

kernel.shmmax = 4398046511104

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

注意:上述参数中,kernel.shmmax需要我们修改,该参数推荐设置成物理内存的一半,由于安装crs的时候需要至少512M内存,我们按照512*1024*1024来设置,之后必须执行/sbin/sysctl -p使参数生效

⑨ 修改操作系统对gridoracle用户对使用文件资源的限制(/etc/security/limits.conf)添加如下内容

grid                 soft     nproc   2047

grid                 hard    nproc   16384

grid                 soft     nofile   1024

grid                 hard    nofile   65536

oracle               soft    nproc   2047

oracle               hard    nproc   16384

oracle               soft    nofile  1024

oracle               hard    nofile  65536

⑩ 修改安全限制(/etc/pam.d/login)添加如下内容

session   required   pam_limits.so

 

11 关闭防火墙。

/etc/selinux/config  设置SELINUXdisabled

chkconfig iptables off 重启,如果不关闭,检查安装环境时遇到PRVF-7617 TCP connectivity check failed for subnet

12 删除时间同步,默认6.4 下没有 /var/run/ntpd.pid文件(此文件保存了ntp后台程序的pid),建议手工最好把虚拟机的时间和时区同步(date -s 指定时间)。需要注意的是如果要检查时间是否同步,在第一个节点rac01上用命令ssh rac02 date;date; 查看结果是否相同。时分秒不能有一秒的错误。检查是否开启了ntp服务

service ntpd status/etc/ntp.conf文件是否删除。grid安装完成后,需要验证ctss是否处于活动状态,用grid用户登录输入

[grid@rac01 install]$ crsctl check ctss

CRS-4639: Could not contact Oracle High Availability Services

CRS-4000: Command Check failed, or completed with errors.

说明ctss服务没启用

grid用户在/u01/app/grid/product/11.2.0/crs/install目录下执行

 ./roothas.pl -deconfig -force -verbose

root用户执行脚本 /u01/app/grid/product/11.2.0/root.sh
该命令用来在ntp下cluvfy comp clocksync -verbose

节点间的时间同步对于Oracle来说是非常重要的,在11g版本之前往往通过搭建NTP服务器完成时间同步。在Oracle 11g中新增加了一个CTSS(Cluster Time Synchronization Services,集群时间同步服务)服务,用来完成集群节点间时间同步。在安装Grid Infrastructure过程中,如果没有发现节点有NTP服务,就会自动安装CTSS。

1. NTP时间同步服务配置

NTP是传统的时间同步服务,往往在一个企业中有一个专门的时间同步服务器,这种情况依然可以采用NTP的方式来同步节点之间的时间。

2. CTSS时间同步服务配置

11gR2版本中,Oracle推出了自己的时间同步服务,这只是在一个RAC的所有节点中有效,与其他系统的时间并不同步。如果要使用CTSS同步时间,除了要停止、禁止自动重启NTP服务外,/etc/ntp.conf配置文件也不允许存在,执行以下的步骤清除NTP服务。

(1)停止NTP服务

/sbin/service ntpd stop 

(2)禁用NTP服务器自启动

chkconfig ntpd off 

(3)删除或重命名NTP配置文件

rm /etc/ntp.conf 

或者:

mv /etc/ntp.conf /etc/ntp.conf.bak 

这样就彻底清除了NTP,在安装Grid Infrastructure的时候会自动创建CTSS。

3. CTSS检查失败

安装Grid Infrastructure的最后一步有可能出现如下报错:

INFO: CTSS is in Active state. Proceeding with check of clock time offsets on all nodes...  

INFO: PRVF-9661 : Time offset is NOT within the specified limits on the following nodes:  

INFO: "[rhel2]"  

INFO: PRVF-9652 : Cluster Time Synchronization Services check failed  

INFO: Post-check for cluster services setup was unsuccessful on all the nodes.  

10 INFO:  

11 WARNING:  

12 INFO: Completed Plugin named: Oracle Cluster Verification Utility 

对于出现以上错误的处理办法如下:

1)确定RAC所有节点的时区是否一致。

2)时间间隔过大会导致CTSS检查失败。因此要在执行这步之前手动调整主机的时间,确保主机间的时间是一致的。

13 

添加虚拟机共享的存储,添加第一个虚拟机的硬盘,然后编辑vmx文件

disk.locking= "false"

diskLib.dataCacheMaxSize = "0"

diskLib.dataCacheMaxReadAheadSize = "0"

diskLib.DataCacheMinReadAheadSize = "0"

diskLib.dataCachePageSize = "4096"

diskLib.maxUnsyncedWrites = "0"

tools.syncTime ="TRUE"

scsi1:0.deviceType="disk"
注意:有时候我们虚拟机2不需要添加这个也可以识别到共享存储。

 

克隆复制虚拟机1,然后分别以gridoracle用户登录,修改环境变量的+ASM2orcl2

grid默认安装的路径不能是/u01/app/grid,必须改成/u01/app/oracle,而且必须要检查权限

数据库软件安装完成安装库,库安装完成看下能否打开,如果打不开提示

这是因为oracle9i和oracle10g中,数据库默认将使用spfile启动数据库,如果spfile不存在,则就会出现上述错误。

解决方法:将/u01/app/oracle/admin/orcl/pfile下的init.ora.423201416444文件拷贝到$ORACLE_HOME/dbs目录下

虚拟机克隆后存在的问题

1.网卡连接失败,打不开,ping的时候不通

原因其实很简单,由于系统克隆了之后网卡的MAC地址变了,而/etc/sysconfig/network-scripts/ifcfg-eth0文件中的HWADDR依然是克隆前的地址,而真正的该网卡的MAC地址就是出现的eth1HWADDR的值,所以先把ifcfg-eth0HWADDR值设置正确了。

其实光改ifcfg-eth0是没有用的,为什么我们没有ifcfg-eth1这个文件却会产生eth1这个网卡呢,其实问题的根源在/etc/udev/rules.d/70-persistent-net.rules 这个文件,该文件没有修改之前的信息如下:

1

2

3

4

5

6

7

8

9

10

11

12

[root@gc network-scripts]# cat /etc/udev/rules.d/70-persistent-net.rules

# This file was automatically generated by the /lib/udev/write_net_rules

# program, run by the persistent-net-generator.rules rules file.

#

# You can modify it, as long as you keep each rule on a single

# line, and change only the value of the NAME= key.

 

# PCI device 0x8086:0x100f (e1000)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:4f:3c:77", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

 

# PCI device 0x8086:0x100f (e1000)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:4f:9c:99", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

 

系统在启动的时候会根据实际的网卡信息往这个文件中写入相关信息,并将其载入到内存,即便你没有相关的ifcfg-ethx文件,由于eth0的信息已经存在,所以它将其分配到eth1上,有三种方法可以解决这个问题:

1.删除/etc/udev/rules.d/70-persistent-net.rules文件,重启udev,重启网络服务

2.ifcfg-eth0改成ifcfg-eth1,重启网络服务

3.修改/etc/udev/rules.d/70-persistent-net.rules文件,将eth1的内容删除,将正确的MAC地址,也就是ATTR{address}的值填写正确,重启udev,重启网络服务

 [root@rh2 rules.d]# /sbin/start_udev

Starting udev:                                            [  OK  ]

 

其实还有一种方法就是修改虚拟机的vmx配置文件,里面写着网卡的MAC地址ethernet0.generatedAddress = "00:0c:29:4f:9c:99",可以根据这个值改写系统中的值,或者根据系统中的值改写虚拟机这个配置文件中值。

安装grid之前一定要检查核对,不能偷懒

强烈建议每次安装gridoracle的时候去检查一下/u01/app下三个文件夹的所属组和用户权限是否正确,否则你会因为权限问题走很多弯路,因为后面好多错误都是权限问题导致。折腾了我好几天了。

ping各个节点,防火墙,网卡,hostname检查确认。

安装过程中出现的问题

ins41112错误

解决方法:检查四个网卡的mac地址和uuid还有是否缺少device标识,结果发现这次是因为mac地址一样导致。多半都是因为克隆虚拟机mac地址导致。

最简单的方法是,一般将克隆虚拟机的所有eth0eth1全部删除,删除/etc/udev/rules.d/下的70-persistent-net.rules文件,外部重新添加虚拟机的网卡。重新启动系统,修改重新生成在/etc/sysconfig/network-scripts/下的网卡配置文件,添加设备名DEVICE属性,然后检查和重新生成的70-persistent-net.rules文件里边内容是否一致匹配,尤其是devicename必须和70-persistent-net.rules文件里边的name匹配。

后来我自己测试如果单独给虚拟机添加网络适配器,会自动的在/etc/sysconfig/network-scripts/下生成网卡配置信息,重启udev服务之后会自动将添加的这个网卡信息自动注册到70-persistent-net.rules文件

不过也有可能是因为防火墙没有关闭导致。

2. 忘记修改虚拟机2个用户的.bash_profileorcl2+ASM2

3. 忘记修改/etc/sysconfig/networkhostnamehostnamerac02

4. 防火墙即使虚拟机是关闭的,克隆过来的有时候是开的。需要再次确认检查。

 

ins20802错误

 

网上搜索查到Metalink[ID 887471]文章得出以下结论:由于配置了/etc/hosts来解析SCAN,导致未走DNS来进行SCAN的解析,爆出此错误,可以考虑忽略掉,或者删除/etc/hosts文件中的SCAN解析部分,并且再次通过nslookup验证DNS的解析是否正常即可。

grid安装完成提示crs-0184错误

[grid@rac02 ~]$ crs_stat -t

CRS-0184: Cannot communicate with the CRS daemon.

检查crs文件权限是不是属于grid,多半都是权限问题。

0 0