现在的位置: 首页 > 综合 > 正文

VMware Linux 下安装 Oracle 11gR2 RAC

2013年05月13日 ⁄ 综合 ⁄ 共 12694字 ⁄ 字号 评论关闭

 

 文本:

文本

VMware Linnux 下安装 Oracle 11g R2 RAC
虚拟机
VMware下安装Linux
下载
wmware server
2.0
http:
//download.pchome.net/system/sysenhance/detail-32337.html
wmware server
1.0.6 本在Win7下一启动虚拟机就死机,选了WinXP兼容性也不行
安装配置
节点1
名称:HISRAC1
内容
2块网卡
eth0
ip
192.168.10.10
公用
eth1
ip
172.168.2.10
心跳
2块磁盘
本地磁盘50G
分区
sda1 2G
交换分区
物理内存为2GB
~16GB时,交换空间等于物理内存大小
查看交换分区大小: #
/sbin/swapon -s
sda2 48G
28G
安装Linux系统
/u01 20G
安装Grid Instruction(10G)和Oracle程序
配置
如果是裸设备,要选“allocate
all disk space now”;如果不是裸设备,可以不勾这个选项,以免浪费磁盘空间
virture device node选SCSI0:
0
目录:F:\Virtual Machines\HISRAC1\HISRAC1.vmdk
共享磁盘10G
分区
OCR和VOTE 1G(最少600M)
Oracle数据9G
配置
SCSI,要选“allocate
all disk space now”
virture device node选SCSI2:
1
勾选 independ
目录:F:\Virtual Machines\share_disk\his_share.vmdk
安装第一个节点时可先不创建,待把第一个节点Clone到第二个节点后,再创建
操作系统:Linux
New VMware Machine...
|Custom|Linux|RedHeadLinux
Virture Machine name:HISRAC1
取消“Make this virtual machine private”里面的勾
网络选桥接“
use bridged networking”
I
/O适配器选“LSI Login”
选上“Software Development
/Web Server”2个组件,然后选上“Customize now”
Base System 里的组件全选上
勾选FTP和中文支持
不把这些这样装全的话,下面再装VMwareTools时就很麻烦
virtualization 一定不要装。我在真实服务器里面装了这个东东之后,64G内存只能认出来32G,坑死人不偿命啊
如果先装了Linux6,会把分区表自动改为GPT格式,这样如果想重装Linux5,在分区那一步就会报错。解决方法是使用Linux5安装光盘启动,在第一个界面上按“F5”选“Rescue”模式,就可进入Linux命令行,然后使用 parted 命令,再
select /dev/sda,再用 print 命令可看到分区表确实是gpt格式,使用 mklabel 命令,按提示输入新的格式为 msdos即可
编辑.vmx
添加disk.locking
= "false"
如果没有这个,添加了共享磁盘之后,无法同时启动2个节点,会报“failed
to lock the file 错误
添加scsi2:
1.deviceType = "disk" 以及: diskLib.dataCacheMaxSize = "0" diskLib.dataCacheMaxReadAheadSize = "0" diskLib.DataCacheMinReadAheadSize = "0" diskLib.dataCachePageSize = "4096" diskLib.maxUnsyncedWrites = "0"
其中scsi2:1要与共享磁盘的设置一致。如果没有这个,两个节点的共享存储会不同步
测试共享存储是否同步:在节点1使用fdisk 命令对
/dev/sdb 分区,保存之后,在节点2使用 fdisk -l 命令应该能够立即看到效果
内存1.5G以上,不然不够用
服务
开通FTP功能
启动FTP
安装vsftpd
执行光盘
/server/vsftpd-版本号.rpm
如果在安装Linux时已安装了FTP就不需要这一步
[root@rac1 ~]# service vsftpd start
编辑
/etc/vsftpd下的ftpusers和user_list文件
ftpusers里的root行加注释
在Windows资源管理器里ftp:
//192.168.10.10/,右击选“登陆...”,使用root用户登陆
安装VMware Tools
首先启动虚拟机,并且把CDRom里的光盘弹出
安装VMware tools,成功后CDRom里会自动加载linux.iso
在虚拟机里的Linux系统的光盘里可以看到 VMware-tools
*.tar.gz 压缩包,将其解压,并执行vmware-install.pl。安装完之后,如果在/mnt下出现名为hgfs的文件夹,说明安装成功
安装了VMware Tools 就能从Windows下复制文本到虚拟机下了,比较方便
卸载:rpm
-e VMwareTools
打补丁
安装补丁:加载linux安装光盘,进入server文件夹 rpm
-ivh kernel-headers* rpm -ivh compat-db-4* rpm -ivh libaio-0* rpm -ivh compat-libstdc++-33-3* rpm -ivh glibc-headers-2.5-12.i386.rpm rpm -ivh glibc-devel-2.5-12.i386.rpm rpm -ivh compat-gcc-34-3* rpm -ivh compat-gcc-34-c++-3* rpm -ivh libXp-1* rpm -ivh openmotif-2* rpm -ivh gmp* rpm -ivh libstdc* rpm -ivh libstdc++44-devel* rpm -ivh libstdc++-devel* rpm -ivh libgfortran* rpm -ivh gcc-4* rpm -ivh glibc-2.5-12.i686.rpm rpm -ivh libgomp-4.1.1-52.el5.i386.rpm rpm -ivh gcc-4.1.1-52.el5.i386.rpm rpm -ivh libaio-devel* rpm -ivh sysstat* rpm -ivh unixODBC*
编辑
/etc/hosts文件,添加
192.168.10.10 HISRAC1 192.168.10.11 HISRAC2 192.168.10.12 HISRAC1-VIP 192.168.10.13 HISRAC2-VIP 172.168.10.10 HISRAC1-PRIV 172.168.10.10 HISRAC2-PRIV 192.168.10.14 HISSCAN 192.168.10.15 HISSCAN 192.168.10.16 HISSCAN
用户
oradb
用户名:oradb 组:oinstall、dba、asmdba
用于安装Oracle
Database
oragrid
用户名:oragrid 组:asmadmin、asmdba、asmoper
用于安装 GI
命令: groupadd
-g 501 oinstall groupadd -g 502 dba groupadd -g 504 asmadmin groupadd -g 506 asmdba groupadd -g 507 asmoper useradd -u 601 -g oinstall -G asmadmin,asmdba,asmoper oragrid useradd -u 602 -g oinstall -G dba,asmdba oradb
节点2
名称:HISRAC2
从HISRAC1克隆
克隆到HISRAC2
关闭主节点Linux系统
把HISRAC1中所有文件复制到HISRAC2文件夹中,把HISRAC2目录里所有带“HISRAC1”字样的文件的文件名改为HISRAC2
修改.vmx和.vmxf文件,把所有HISRAC1字样替换成HISRAC2
将HISRAC2目录下的.vmx添加到VMware控制台
启动HISRAC2,配置Linux
将主机名改为HISRAC2
# hostname HISRAC2
重启后失效!
修改
/etc/sysconfig/network文件
重启后生效
调整网络配置
/etc/sysconfig/network-scripts下,网络配置文件会自动产生一份新的,HISRAC1的原配置文件会被重命名为.bak文件。把.bak文件中的内容替换到新文件中,但是要保留新文件中的MAC地址,然后修改IP地址
修改
/etc/hosts文件,将 127.0.0.1 HISRAC1改为HISRAC2
重新启动系统
Virtualbox
Oracle 推出的Windows下的虚拟机,速度比VMware快,更省资源,支持共享存储,共享文件夹功能也挺方便。用着比VMware更爽一点。
共享文件夹
需要先把“增强功能”装上
把Windows上的一个文件夹添加到“共享文件夹...”里
在Linux里,在
/mnt 下创建一个文件夹 share,然后 mount -t vboxsf <本地共享文件夹名> /mnt/share
安装了GI之后,重启虚拟机时,启动到一半,本机系统突然自动重启,试了几次都是这样。后来发现只要把虚拟机里面的网卡的“控制芯片”改为“Intel PRO
/1000 MT 服务器(82545EM)”就没问题了(桥接网卡用的是本机的“Intel(R) 82577LM Gigabit Network connection”)
添加新磁盘
在虚拟机配置里为虚拟机增加新磁盘
进入虚拟机Linux系统
把新加的磁盘添加到multipath的黑名单中
/etc/multipath.conf : blacklist { devnode "^sda|sde|hd" }
分区
例:fdisk
/dev/sde
格式化
例:mkfs.ext3
/dev/sde1
加载
mkdir
/u02 mount /dev/sde1 /u02
开机自动加载
/etc/fstab : /dev/sde1 /u02 ext3 defaults 0 0
添加网桥网卡的时候,如果使用本机的真实网卡,当网卡无法插上网线的时候,本机无法ping通虚拟机。建议添加一块虚拟网卡(方法:添加新硬件
->网卡->厂商:Microsoft->Microsoft Lookback Adapter。然后把虚拟机的网卡都选择这个微软的Lookback Adapter
配置负载均衡和TAF
负载均衡和TAF(透明故障转移)有2种实现方法,一种是通过修改客户端tnsnames.ora文件,另一种是在服务器上建立 Cluster Managed Service。可以不在服务端建立Service,直接配置客户端连接数据库服务。建立服务端Service的好处是所有配置都在服务端,当需要更改策略时,只需要修改服务端配置,而不需要去每个客户端修改,客户端配置文件也可以更简单一些。服务端的负载均衡是根据服务器的实际负载情况而不像客户单负载均衡只是随机选择一个节点。但是服务端的负载均衡是现在一个节点分配连接,当连接达到一定量之后,才把连接分配给其它节点。所以可以使用服务端Service
+客户端负载均衡的方案更好一些。
客户端负载均衡和TAF
修改客户端tnsnames.ora
RACDBTAF
= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.12)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.13)(PORT = 1521)) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVICE_NAME = zlhisdb) (FAILOVER_MODE= (TYPE=select) (MOTHOD=basic) (RETRIES=180) (DELAY=5) ) ) )
服务端负载均衡和TAF
创建Cluster Managed Services
使用企业管理器的图形界面: 使用sys或system登录企业管理器
DataBase | Availabiliy 选项卡里,点击 Cluster Managed Database Services 链接
Cluster 用户登录使用 oradb 操作系统用户,
Database 登录使用 sys 数据库用户
点击
Create Service 按钮
填表单: service name 随便起一个,例如zlhisdbtf TAF 模式选 Basic
Load Balanced Goal 选 Long 勾选 Enable Load Balancing Advisory,选择 Throughout 勾选 Enable Fast Application Notification Consumer Group Mapping 选 DEFAULT_CONSUMER_GROUP
点击OK创建服务
企业管理器的创建服务其实也是调用srvctl命令,命令为bin
/srvctl add service -d zlhisdb -s zlhisdbtf -r 'zlhisdb1,zlhisdb2' -P BASIC。注意这个命令只指定了TAF策略为BASIC,但是并没有指定failover_method 和 failover_type。创建完之后,使用select * from dba_services可以看到这两个属性值都NONE。这样其实并没有实现TAF。 虽然可以在创建服务之后再使用 execute dbms_service.modify_service (service_name => 'hiscen', aq_ha_notifications => true, failover_method => dbms_service.failover_method_basic, failover_type => dbms_service.failover_type_select, failover_retries => 180, failover_delay => 5, clb_goal => dbms_service.clb_goal_long); 来指定failover_method 和 failover_type,但是重启服务器之后这两个值就又会变为NONE了,所以不要使用图形界面来创建Service,而是直接使用命令行去创建。
使用命令行创建
创建服务: bin
/srvctl add service -d zlhisdb -s zlhisdbtf -r 'zlhisdb1,zlhisdb2' -P BASIC -e SELECT -m BASIC
启动服务: bin
/srvctl start service -d zlhisdb -s zlhisdbtf
确认服务状态
查看配置
srvctl config service
-d db-name [-s service-name] [-a]
设置服务是否自动启动
srvctl enable
/disable service -d <db-name> -s <service-name> -i instance-name
启动服务
srvctl start service
-d <db-name> -s <service-name> -i instance-name -o start-option -c connect-string -q
查看状态
srvctl status service
-d db-name -s service-name -f -v
crs_state
-t -v
查看SCAN侦听器状态
srvctl status scan_listener srvctl config scan_listener srvctl config scan
以system用户登录sqlplus
select * from dba_services
确认failover_method 和 failover_type值不是空或NONE
show parameter service
客户端配置
只需要指定服务名为 zlhisdbtf 并添加2个vip地址就行了
客户端负载均衡和服务端负载均衡并不矛盾,可以都设置,这样会先在客户端随即选择一个服务器节点去连接,而服务器端收到连接请求后还会再根据负载情况再决定连接哪个节点,这样效果更好
验证TAF
新建名为TEST2的用户, 使用TEST2 登录 PL
/SQL Developer,新建一个表并查询数据
使用 system 登录 PL
/SQL Developer
select t.INST_ID, t.USERNAME, t.FAILOVER_TYPE, t.FAILOVER_METHOD, t.FAILED_OVER, t.STATUS, t.STATE from gv$session t where t.USERNAME in ('TEST2');
确认failover_method 和 failover_type值不是空或NONE
INST_ID属性是节点编号,值为1表示连接到了节点1上,关闭节点1,再在上一步连接了TEST2用户的PL
/SQL Developer 里查询数据,经过短暂的时延之后查询成功执行,不会报错
再次查询 gv$session,会发现INST_ID变为2,也就是节点1故障之后,连接转移到了节点2上了
安装 Oracle 的 Grid Instruction(GI)
创建并加载共享存储
配置多路径(可选,一般真实服务器环节会配置多路径)
安装多路径支持包,在Linux安装盘的Server文件夹里执行: rpm
-ivh device-mapper-multipath-0.4.7-34.el5.i386.rpm
编辑
/ect/multipath.conf
将黑名单默认的
*改为^sda|hd,意思是把默认全屏蔽改为只屏蔽系统盘sda和光盘hd: blacklist { devnode "^sda|hd" }
使用命令 multipath
-F 和 multipath -v3刷新设备列表
指定映射顺序
使用命令 multipath
-ll 列出多路径设备,根据括号里的设备号,一一指定设备与 /dev/mpathn的映射关系,两个节点的映射关系必须一致
multipath { wwid 36005076802808555f000000000000000 alias mpath0 } multipath { wwid 36005076802808555f000000000000001 alias mpath1 }
这个步骤是必须的,因为在创建 ASM 分区的时候,ASM卷是与 mpathn 进行映射的,如果这步没有指定映射关系,2个节点的映射就可能不同,或者碰巧相同,但是重启之后就不同了,将会导致2个节点的VOL1映射到不同的磁盘上,后果很严重
完整的
/ect/multipath.conf 的例子
blacklist { devnode "
^sda|hd" } multipaths { multipath { wwid 36005076802808555f000000000000000 alias mpath0 } multipath { wwid 36005076802808555f000000000000001 alias mpath1 } multipath { wwid 36005076802808555f000000000000002 alias mpath2 } }
安装ASM
查看Linux系统内核: # uname
-rm
下载与系统内核匹配的安装包
oracle asm lib
http:
//www.oracle.com/technetwork/server-storage/linux/downloads/rhel4-092650.html
http:
//www.oracle.com/technetwork/server-storage/linux/downloads/rhel5-084877.html
下载并安装如下组件: oracleasm
-support-2.1.7-1.el4.i386.rpm oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm oracleasm-2.6.18-194.el5debug-2.0.5-1.el5.i686.rpm oracleasm-2.6.18-194.el5-debuginfo-2.0.5-1.el5.i686.rpm oracleasm-2.6.18-194.el5PAE-2.0.5-1.el5.i686.rpm oracleasm-2.6.18-194.el5xen-2.0.5-1.el5.i686.rpm oracleasmlib-2.0.4-1.el4.i386.rpm
安装顺序: rpm
-ivh oracleasm-support-2.1.7-1.el4.i386.rpm rpm -ivh oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm rpm -ivh oracleasmlib-2.0.4-1.el4.i386.rpm
配置: #
/usr/sbin/oracleasm configure -i Default user to own the driver interface []: oragrid Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done
启动ASM服务:(所有节点) #
/etc/init.d/oracleasm start
也可以使用图形界面的服务管理器
注意刚刚装完ASMLib时,服务是未启动状态,这时除了 oracleasm configure 命令之外,其它命令全部都不好用,而且oracleasm listdisks还不报错,只是输出为空,这个很有迷惑性。切记要先确认服务已经启动,再进行创建磁盘等操作
创建ASM磁盘(只主节点): oracleasm createdisk VOL1
/dev/sdb1
启用多路径的情况下,要做一些改变
在真实的存储上,如果配置了多路径,分区时的路径类似 fdisk
/dev/mapper/mpath0。之后,要使用multipath -F 和 multipath -v3 来刷新。之后创建ASM分区时,则是 oracleasm createdisk VOL1 /dev/mapper/mpath0p1
同样,在没配置多路径之前,插入U盘系统会自动挂载,但是配置了多路径之后,自动挂载会失败(因为自动挂载使用的命令是 mount
/dev/sdh1 /media/disk),需要使用命令 mount /dev/mapper/mpath3p1 /mnt/usb 来加载
编辑
/etc/sysconfig/oracleasm 文件: ORACLEASM_SCANEXCLUDE="sd"
因为已经把ASM配到多路径(
/dev/mapper/mpathn)下,所以告诉ASM不要再扫描sd 和 hd开头的磁盘了。这步是必须的,否则当增加了一个磁盘(或者仅仅是插入一个U盘)都会导致oracleasm出错,在安装GI时,也会认不出ASM磁盘分区。切记切记!!
获取新创建的节点(所有节点): oracleasm scandisks
验证创建是否成功(所有节点): oracleasm listdisks
注意尝试重启 oracleasm 服务后,再次使用 oracleasm listdisks 命令,看看磁盘是否丢失
出错时……
可以使用 oracleasm deletedisk 命令删除磁盘重建
如果在删除ASM盘时出现 Device "
/dev/sdc1" is already labeled for ASM disk "" 错误
dd
if=/dev/zero of=/dev/sdc1 bs=1024 count=100
安装GI
设置ssh
在主节点上以oragrid用户身份生成用户的公匙和私匙(主、副节点相同操作)
# su
- oragrid $ mkdir ~/.ssh $ chmod 700 ~/.ssh $ ssh-keygen -t rsa $ ssh-keygen -t dsa
合并密钥文件(主节点操作)
首先确保 HISRAC1 和 HISRAC2 可互相ping得通
cat
~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ssh HISRAC2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh HISRAC2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys HISRAC2:~/.ssh/authorized_keys
设置 ssh date(主、副节点相同操作)
配置时间服务器
编辑 HISRAC1
/etc/ntp.conf
server
127.127.1.0 fudge 127.127.1.0 stratum 11 driftfile /var/lib/ntp/drift broadcastdelay 0.008
将 ntpd 服务设为自动启动
编辑 HISRAC2
/etc/ntp.conf
server
192.168.1.100(主节点公网IP) prefer driftfile /var/lib/ntp/drift broadcastdelay 0.008
或者可以在不启动 ntpd 服务的状态下,使用命令行 ntpupdate hisrac1 将本地时间调整到与 hisrac1 一致
启用ssh(所有节点)
以oragrid身份执行某个命令,例如 date: ssh HISRAC1 date ssh HISRAC2 date ssh HISRAC1
-priv date ssh HISRAC2-priv date
验证是否成功: 在主节点使用命令 ssh hisrac2 ls,不需要键入hisrac2的密码就能执行
可以使用GI安装向导里的一键创建SSH的功能,非常方便
安装GI
准备
修改配置文件(所有节点)
编辑
/etc/sysctl.conf
kernel.shmmni
= 4096 kernel.sem = 250 32000 100 128 fs.file-max = 6815744 fs.aio-max-nr = 1048576 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 = 1048576
使其生效: # sysctl
-p
编辑
/etc/security/limits.conf
oragrid soft nproc
2047 oragrid hard nproc 16384 oragrid soft nofile 1024 oragrid hard nofile 65536 oradb soft nproc 2047 oradb hard nproc 16384 oradb soft nofile 1024 oradb hard nofile 65536
如果
/etc/pam.d/login 里不包含,则添加
session required pam_limits.so
编辑
/etc/profile
if [ $USER = "oragrid" ] || [ $USER = "oradb" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi
注意“]"前面必须要有一个空格,否则会造成语法错误!(从来没见过这么变态的语法)
另外需要注意的是,我们往往会在Windows系统上准备好一个包含所有配置和脚本的txt文件,传到Linux系统里,然后复制、粘贴。在Windows系统上,一定要把这个txt文件另存为换行模式为“仅LF(Unix)”,而不是Windows默认的“CR
+LF”模式,否则会造成语法错误!
编辑
/etc/csh.login
if ( $USER = "oragrid" || $USER = "oradb" ) then limit maxproc 16384 limit descriptors 65536 endif
以oragrid用户登录:
[oragrid@HISRAC1 grid]$ ./runInstaller
SCAN Name:HIS_RAC
配置 SCAN需要DNS或GNS,没有的话可以先在hosts文件里为ora_scan分配一个IP,把这步骗过去
Cluster Nodes
public Nod Name PrivateNodeName Virtual Host Name rac1 rac1-priv rac1-vip rac2 rac2-priv rac2-vip
cluster name: HISRAC SCAN name: HISRAC Oracle Base:
/u01/gi/app/grid Software Location: /u01/gi/app/11.2.0/grid Inventory Directory:/u01/gi/app/oraInventory 组:oinstall
创建安装目录: # cd
/u01 # mkdir gi # chown -R oragrid:oinstall gi # chmod -R 775 gi
在 Advance模式下,ASM Password的文本框居然无法输入,解决方法是点击Help按钮,打开Help窗体,将其拖拽到安装程序窗体的下方,再关闭它,就能输入了(一般都得重复2遍才行)
Operating System
group name: oinstall
安装路径
Name: OraCrs11g_home Path:
/u01/gi/product/csr_1
语言那里添加中文
网卡
把eth2设置为不使用
把eth0设置为public
安装到65
%,向另一节点复制文件时比较慢,建议打开System Monitor,这样可以看到当前网另一节点发送的每秒字节数,以及一共已经发送了多少字节
以 root 身份运行 root.sh
/u01/gi/app/oraInventory/orainstRoot.sh
/u01/gi/app/11.2.0/grid/root.sh
先在主节点运行,成功后再在其它节点上运行,不要同时运行
最后的配置
编辑
~/.bash_profile 文件
在HISRAC1上: export ORACLE_HOME
=/u01/gi/app/11.2.0/grid export ORACLE_SID=+ASM1
在HISRAC2上: export ORACLE_HOME
=/u01/gi/app/11.2.0/grid export ORACLE_SID=+ASM2
SID可以使用grid
/bin/asmca程序的第一个Tab页里面的内容来查看
如果不配置这个的话无法使用asmcmd管理,会报conect
to an idle instance的错误
创建密码文件和ASMSNMP用户
创建密码文件
确认在2个节点上存在密码文件
/u01/gi/app/11.2.0/grid/dbs/orapw+ASM,如果不存在, 以oragrid用户在2个节点上执行:$ /u01/gi/app/11.2.0/grid/bin

抱歉!评论已关闭.