我的ORACLE RAC INSTALL for LINUX 10.2研究

来源:互联网 发布:怎样学好java 编辑:程序博客网 时间:2024/05/21 22:31
我的ORACLE RAC INSTALL for LINUX 10.2研究  

我的ORACLE RAC INSTALL for LINUX 10.2研究
1、创建虚拟机
DB1虚拟机文件目录 g:/vmtest1 文件大小8G 内存944M(原谅我只有2GRAM)
DB2虚拟机文件目录 E:/vmtest2  文件大小8G 内存944M
在DB1上创建共享磁盘,
E:/SHARE 文件大小8G
DB2也创建磁盘,选择DB1的磁盘文件
在两个节点的vmx文件加入下面的行
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
2、安装操作系统,RED HAT 4 AS UPDATA 5 过程略
3、安装ocfs
如果使用ASM管理oracle cluster文件存储,不需要OCFS,在虚拟机上可以按实际情况考虑

REDHAT 4 UPDATA 1以后的版本需要OCSF2,可以去这里下http://oss.oracle.com/projects/ocfs2/,注意内核版本号不要搞错了。
Linux db-1 2.6.9-42.ELsmp #1 SMP Wed Jul 12 23:27:17 EDT 2006 i686 athlon i386 GNU/Linux
需要先安装OSF2-tools一系列包和ocfs2console
网络升级安装 
# up2date --install ocfs2-tools ocfs2console
4、CVU 工具 Cluster Verification Utility 可以校验ORACLE CLUSTER的需求,建议先装上,后面会发现该玩意可以解决无数问题
文件位置 /mountpoint/crs/Disk1/cluvfy/
./runcluvfy.sh
5、添加必要的用户组,用户,每个节点都做一次,每个节点ID号要一致
/usr/sbin/groupadd -g 200 oinstall
# /usr/sbin/groupadd -g 201 dba
# /usr/sbin/groupadd -g 202 oper
确认:
id nobody
id oracle
/usr/sbin/useradd -u 200 -g oinstall -G dba[,oper] oracle
/usr/sbin/useradd nobody
6、配置各个节点的SSH信任
Configuring SSH on All Cluster Nodes
以ORACLE身份登陆某个节点
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ chmod 70
生成RSA KEY
$/usr/bin/ssh-keygen -t rsa
生成DSA KEY
$/usr/bin/ssh-keygen -t dsa
每个节点都做一次生成信任KEY
生成认证KEY

[oracle@node1 .ssh]$ ssh node1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
oracle@node1's password:
[oracle@node1 .ssh]$ ssh node1 cat /home/oracle/.ssh/id_dsa.pub >> authorized_keys
[oracle@node1 .ssh$ ssh node2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys
oracle@node2's password:
[oracle@node1 .ssh$ ssh node2 cat /home/oracle/.ssh/id_dsa.pub >>authorized_keys
oracle@node2's password:

COPY 认证KEY到远程节点
scp authorized_keys node2:/home/oracle/.ssh/

chmod 600 ~/.ssh/authorized_keys
确保每个节点都能使用SSH功能,每个节点作一次
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
测试一下SSH功能,每个节点作一次
$ ssh nodename1 date
$ ssh nodename2 date

7、检查硬件要求
内存至少1G,硬盘至少1.5G,交换区至少2倍内存,交换区至少1G

8、配置网络和HOST ID
需要每个节点都需要一个私有IP,必须在/etc/hosts描述每个节点的私有IP
1个公共IP设置在每个节点,公共IP和私有IP需要配置在2个网卡上,私有IP用于维持2个节点间的心跳,虚拟IP和公共IP必须在一个段内,虚拟IP不需要配置到网卡上,虚拟IP用来连接每个客户端

网络IP规划
例子:
rac1 rac1 Public 143.46.43.100 DNS (if available, else the hosts file)
rac1 rac1-vip Virtual 143.46.43.104 DNS (if available, else the hosts file)
rac1 rac1-priv Private 10.0.0.1 Hosts file
rac2 rac2 Public 143.46.43.101 DNS (if available, else the hosts file)
rac2 rac2-vip Virtual 143.46.43.105 DNS (if available, else the hosts file)
rac2 rac2-priv Private 10.0.0.2 Hosts file
测试例子IP规划:
eth0 db1:192.168.1.100 公共IP         
eth1 db1-vip:192.168.1.110 虚拟IP
eth2 db1-pip 192.168.10.100 私有IP

eth0 db21:192.168.1.200 公共IP
eth1 db2-vip:192.168.1.210 虚拟IP
eth2 db2-pip:192.168.10.200 私有IP

每个节点的NTP服务打开

校验网络配置
/dev/dvdrom/crs/Disk1/cluvfy/runcluvfy.sh comp nodecon -n db1,db2 -verbose

9、检查软件包,根据平台决定,具体看手册:
rpm -qa|grep binutils
rpm -qa|grep compat-db
rpm -qa|grep control-center
rpm -qa|grep gcc
rpm -qa|grep gcc-c++
rpm -qa|grep glibc
rpm -qa|grep glibc-common
rpm -qa|grep gnome-libs
rpm -qa|grep libstdc
rpm -qa|grep libstdc++-devel
rpm -qa|grep make
rpm -qa|grep openmotif

如果需要CVU检测共享磁盘,需要安装cvuqdisk包,该包在ORACLE_CLUSTER包内
检查hangcheck_timer模块是否在系统内挂接
lsmod | grep hang
10、配置系统参数
内存和进程限制
/etc/security/limits.conf
oracle soft memlock 3145728
oracle hard memlock 3145728
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
配置PAM
/etc/pam.d/login
session required pam_limits.so
配置内核参数
/etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
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
配置ORACLE用户的PROFILE文件,注意ORACLE_HOEM需要先指向cluster软件的安装目录,旧版本的
ORA_CRS_HOME不再被支持,注意每个节点的SID不一样,但是是以主SID+数字编号。
LD_LIBRARY_PATH=/usr/lib:/usr/X11R6/lib
export LD_LIBRARY_PATH
ORACLE_BASE=/oracle
ORACLE_HOME=$ORACLE_BASE/product/102/crs
ORACLE_SID=db1
#TNS_ADMIN=$ORACLE_HOME/network
export ORACLE_BASE
export ORACLE_HOME
export ORACLE_SID
#export TNS_ADMIN
DISPLAY=:0.0
LANG=C
PATH=$PATH:$HOME/bin
TMPDIR=/tmp
export DISPLAY LANG NLS_LANG TMPDIR
PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:$ORACLE_HOME/bin:$ORACLE_BASE/product/102
export PATH
unset USERNAME
配置完成需要重启系统

11、创建属于ORACLE的目录和文件系统
预先创建/oracle/product/1102/app /oracle/product/1102/crs
赋予权限 775
出没的775 /oracle/product/1102/app /oracle/product/1102/crs
配置存储
12、配置集群共享存储
2种集群文件存储方式
1、被支持的文件系统
OCFS文件系统
GPFS
NFS
2、RAW分区
ORACLE clusterware 需要4个文件系统
1、OCR和仲裁磁盘
2、ORACLE 软件
3、数据文件
4、recovery文件

OCR和仲裁磁盘可以在OCFS上和share RAW、NFS文件系统上,不能在ASM上,确定好后,使用cvu检查一下磁盘配置

推荐空间大小
1、OCR和仲裁磁盘  至少256MB OCFS2  权限644
2、ORACLE 软件  至少1.2GB
3、数据文件 至少1.2GB OCFS2
4、recovery文件 至少2GB OCFS2

本次测试安装文件系统规划,文件系统权限,每台机器均一样
/dev/sdb1  512M  /orc OCR和仲裁磁盘 权限775 属组oracle:oinstall或root:oinstall
/dev/sdb2  7680M  /oradata ORACLE 数据文件 recovery文件 权限644 属组 oralce:dba
/oracle 2048M 系统文件,权限644 属组 oralce:dba
使用OCFS2CONSOLE工具创建集群文件系统节点配置文件,可以每台机器执行一遍,也可以分发,节点地址填写公共IP
检查/etc/ocfs2/cluster.conf文件
然后重新配置O2cb堆栈库
/etc/init.d/o2cb offline ocfs2
/etc/init.d/o2cb unload ocfs2
/etc/init.d/o2cb configure ocfs2  输入y就ok了
修改参数将HEARTBEAT_THRESHOLD改为301

两个节点检查完成无误后重启系统
/etc/init.d/o2cb status
#more cluster.conf
node:
        ip_port = 7777
        ip_address = 192.168.1.100
        number = 0
        name = db1
        cluster = ocfs2

node:
        ip_port = 7777
        ip_address = 192.168.1.200
        number = 1
        name = db2
        cluster = ocfs2

cluster:
        node_count = 2
        name = ocfs2

在一个节点上创建OCFS2文件系统      
mkfs -t ocfs2 -b 4k -C 32k -N 4 -L OCRDisk /dev/sdb1
mkfs -t ocfs2 -b 4k -C 32k -N 4 -L Oradata /dev/sdb2
创建挂接点,将这两个文件系统挂接到系统中
mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /orc
可能会无法挂接文件系统,使用/usr/bin/system-config-securitylevel &
关闭xelinux功能
确认2台机器均可以同时挂接文件系统,将文件挂接点放入/etc/fstab文件里。
/dev/sdb1               /orc    ocfs2   _netdev,datavolume,nointr       0 0
/dev/sdb2               /oradata ocfs2  _netdev,datavolume,nointr 0 0

安装RAC
1检验RAC需求
/mountpoint/crs/Disk1/cluvfy/runcluvfy.sh stage -pre crsinst -n node_list
解决出现的错误

2、安装oracle clusterware软件
关闭xwindows显示限制
#xhost +
#su - oracle
确认环境变量,解压安装包
$unzip 10201_clusterware_linux32.zip
3、运行runinstaller
回答提出的问题
几个需要注意的地方:
1、集群节点需要手工添加,需要手工指定那个网段属于PUBLIC
2、OCR和vdisk选择前面创建/ORC 集群文件系统
3、期间可能某个节点报错,提示需要以ORACLE用户身份运行一下下面的脚本
/oracle/product/102/app/oui/bin/runInstaller -attachHome -noClusterEnabled ORACLE_HOME=/oracle/product/102/app ORACLE_HOME_NAME=OraDb10g_home1 CLUSTER_NODES=db1,db2 "INVENTORY_LOCATION=/oracle/oraInventory" LOCAL_NODE=db2
4、提示运oinroot.sh和root.sh
5、运行root.sh
安装节点才需要运行orainstRoot.sh,单独每个节点运行root.sh,要按顺序进行,千万不要同时进行。
最后一个节点可能会出网卡配置问题,在最后一个节点以 root身份手工运行VIPCA工具配置一下。
root.sh单个节点可能运行很久,注意要耐性等待运行完成。
完成每个节点的root.sh后,再到安装界面选择确定,等待ORACLE 的3个安装后过程安装完成

6、安装完成后测试
检查是否有2个节点
$cd /oracle/product/102/crs/bin
$./olsnodes  
db1
db2
检查集群配置
$./crs_stat
NAME=ora.db.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.db.db1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.db.db2.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.db.dbserver.cs
TYPE=application
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.db.dbserver.db1.srv
TYPE=application
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.db.dbserver.db2.srv
TYPE=application
TARGET=OFFLINE
STATE=OFFLINE

NAME=ora.db1.LISTENER_DB1.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.db1.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.db1.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.db1.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.db2.LISTENER_DB2.lsnr
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.db2.gsd
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.db2.ons
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.db2.vip
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.test.db
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.test.test1.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.test.test2.inst
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.test.testserver.cs
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2

NAME=ora.test.testserver.test1.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db1

NAME=ora.test.testserver.test2.srv
TYPE=application
TARGET=ONLINE
STATE=ONLINE on db2
检查集群运行情况
/crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora.db.db      application    ONLINE    ONLINE    db2        
ora....b1.inst application    ONLINE    ONLINE    db1        
ora....b2.inst application    ONLINE    ONLINE    db2        
ora....rver.cs application    ONLINE    ONLINE    db1          
ora....db1.srv application    ONLINE    ONLINE    db1         
ora....db2.srv application    ONLINE    ONLINE    db2          
ora....B1.lsnr application    ONLINE    ONLINE    db1        
ora.db1.gsd    application    ONLINE    ONLINE    db1        
ora.db1.ons    application    ONLINE    ONLINE    db1        
ora.db1.vip    application    ONLINE    ONLINE    db1        
ora....B2.lsnr application    ONLINE    ONLINE    db2        
ora.db2.gsd    application    ONLINE    ONLINE    db2        
ora.db2.ons    application    ONLINE    ONLINE    db2        
ora.db2.vip    application    ONLINE    ONLINE    db2        
ora.test.db    application    ONLINE    ONLINE    db1        
ora....t1.inst application    ONLINE    ONLINE    db1        
ora....t2.inst application    ONLINE    ONLINE    db2        
ora....rver.cs application    ONLINE    ONLINE    db2        
ora....st1.srv application    ONLINE    ONLINE    db1        
ora....st2.srv application    ONLINE    ONLINE    db2

安装ORACLE 软件
1、修改环境变量
注意ORACLE_HOEM需要改为向ORACLE软件的安装目录
去掉下面的环境变量
TNS_ADMIN
NLS_LANG
2、安装软件和单机软件没有多大区别注意事项如单机版,不要选择创建数据库
只是选择安装节点的时候,需要选择2个节点
3、安装完,同样需要按顺序每个节点执行root.sh

创建侦听
执行NETCA
注意需要指定节点,节点地址填public地址,必要时可能需要运行VICA


创建数据库实例
1、创建数据库的时候,需要指定使用的节点
2、创建数据实例,需要指定一个RAC dbserver名称,根据情况配置一个
3、数据库文件系统选择根据实际情况来确定,只支持OCFS2 SHARE RAW NFS
4、创建实例其他选择和单机类似,建议admin目录放到共享的文件系统上
5、创建完成后,需要等待较长时间安装程序会配置集群系统


客户端TNSNAMES.ORA
客户端SERVICE_NAME可以填RAC DB SERVER NAME,也可以填database name 例如下面

dbserver =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbserver)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

test=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = test)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )


启动RAC
RAC的启动包括下面几个方面
1、集群监控进程启动
2、实例的启动
3、管理进程启动

RAC的启动是随着操作系统的启动而启动的,启动脚本在/etc/init.d下,以init开头的那几个启动脚本
$ls init.*
init.crs  init.crsd  init.cssd  init.evmd
可以手工启动关闭RAC的集群进程


-bash-3.00$ srvctl stop database -d test
-bash-3.00$ srvctl stop database -d db

多个RAC实例创建

直接使用DBCA工具创建实例,创建的时候选择集群数据库,文件系统的要求等同于1个RAC实例的要求
无需特别指定一个新的ORACLE_SID环境变量,可以直接在DBCA里选择。
也无需指定节点,会在原来的节点上生成新的实例

多个实例的访问方式
查看数据库实例配置
$srvctl config database
db
test
SQLLPLUS客户端访问
$sqlplus sys/dbsys@db
$sqlplus sys/testsys@test

删除一个RAC实例
使用DBCA,可以直接删除一个RAC实例,DBCA 10.2.01有BUG,不能选择NEXT按钮,可以直接选择FINSH按钮。


WEB页面的企业管理器


http://192.168.1.100:1158/em

-bash-3.00$ emctl start dbconsole