linux平台oracle10g rac搭建
2010年09月12日
Oracle RAC在Linux的安装与部署 目录 一、硬件要求和概述 环境: 主操作系统 Windows XP Professional SP2 虚拟机版本 vmware serve 2.0.1 Host操作系统 Oracle Enterprise Linux AS 5 Update 3 (也可为RedHat,但是一些RAC安装包需要自己到oracle官网上面去下载) Oracle版本 10.2.0.1 Clusterware版本 10.2.0.1 本实验共享磁盘使用ocfs2+ASM的方式来管理,orc和votingdisk使用ocfs2,数据文件使用ASM。 1.虚拟磁盘布局 主机操作系统上的虚拟磁盘 客户操作系统上的虚拟磁盘 虚拟设备节点大小(MB) 描述 F:\rac\rac1\localdisk.vmdk /dev/sda1 SCSI 0:0 /dev/sda2 交换空间 28000 根目录
F:\rac\rac2\localdisk.vmdk /dev/sda1 SCSI 0:0 dev/sda2 交换空间 28000 根目录
F:\rac\sharedstorage\ocfs2disk.vmdk /dev/sdb SCSI 1:0 500 OCFS2磁盘 F:\rac\sharedstorage\asmdisk1.vmdk /dev/sdc SCSI 1:1 3000 ASM磁盘组1 F:\rac\sharedstorage\asmdisk2.vmdk /dev/sdd SCSI 1:2 3000 ASM磁盘组2 F:\rac\sharedstorage\asmdisk3.vmdk /dev/sde SCSI 1:3 2000 ASM闪回恢复区 注意:要配置共享存储,客户OS不能与共享存储共享同一个SCSI 总线。指定客户OS使用 SCSI0,共享磁盘使用SCSI1。 IP分配规则 注意:在选择ip和vip时应尽量选在网关所在的网段,并且没有被占用, 可使用ping命令检查。 2. RAC 数据库环境概况 注意:在每个节点上安装Oracle主目录供冗余使用,每个节点上的ASM 和Oracle RAC实例共享同一个Oracle主目录 1、配置第一个虚拟机 要创建和配置第一个虚拟机,您需要添加虚拟硬件设备,如磁盘和处理器。在继续执行安装之前,请创建以下 windows 文件夹以存放虚拟机和共享存储。
F:\rac\rac2
F:\rac\sharestorage
(1) 安装好vmwareserver。添加一个datastore F:\rac
(2) Create virtual machine,选datastore rac,取名rac1 单击"next"。
(3) 选Linux operating system,version为RedHat enterprise Linux5,单击"next"。
(4) 输入memory 700MB,cpu个数选2,单击"next"。
(5) Create a new virtual disk,单击"next"。
(6) 输入capacity为20G,location为[rac]rac1/localdisk.vmdx,单击"next"。
(7) Add a network adapter ,选bridge,connect at power on:yes,单击"next"。
(8) Use an iso image,单击"next"
(9) Don't add a floppy drive 单击"next"
(10) Add a USB controller 单击"next"
(11) 单击"finish"。
(12) 创建完虚拟机之后,选add hardware,创建四个虚拟 SCSI 硬盘 - ocfs2disk.vmdk(0.6G) 、asmdisk1.vmdk (3GB)、asmdisk2.vmdk (3GB) 和 asmdisk3.vmdk(2GB)。将他们放在sharestorage文件夹里面。为提高rac使用性能,避免冲突,应将其使用SCSI1:0段,并选择 Allocate all disk space now。
(13) 添加一块网卡,选hostonly模式,connect at power on :yes
如下图:
(14) 修改虚拟机配置文件:F:\rac\rac1\rac1.vmx,添加以下粗体字:
.encoding = "GBK"
config.version = "8"
virtualHW.version = "7"
floppy0.present = "FALSE"
mks.enable3d = "TRUE"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
nvram = "rac1.nvram"
virtualHW.productCompatibility = "hosted"
ft.secondary0.enabled = "TRUE"
tools.upgrade.policy = "useGlobal"
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
powerType.powerOff = "soft"
powerType.powerOn = "hard"
powerType.suspend = "hard"
powerType.reset = "soft"
displayName = "rac1"
extendedConfigFile = "rac1.vmxf"
numvcpus = "2"
scsi0.present = "TRUE" scsi0.sharedBus = "none" scsi0.virtualDev = "lsilogic" memsize = "700" scsi0:0.present = "TRUE" scsi0:0.fileName = "localdisk.vmdk" scsi0:0.writeThrough = "TRUE" scsi0:1.present = "TRUE" scsi0:1.fileName = "" scsi0:1.deviceType = "cdrom-raw" scsi0:1.allowGuestConnectionControl = "FALSE" ethernet0.present = "TRUE" ethernet0.allowGuestConnectionControl = "FALSE" ethernet0.features = "1" ethernet0.wakeOnPcktRcv = "FALSE" ethernet0.networkName = "Bridged" ethernet0.addressType = "generated" usb.present = "TRUE" ehci.present = "TRUE" guestOS = "rhel5" uuid.location = "56 4d 20 23 88 26 be 3a-c7 62 2b 01 cb ca b8 1b" uuid.bios = "56 4d 20 23 88 26 be 3a-c7 62 2b 01 cb ca b8 1b" vc.uuid = "52 c1 54 ea 7d 53 b2 86-3d 37 3f d4 b3 aa fc d8" scsi1.present = "TRUE" scsi1.sharedBus = "none" scsi1.virtualDev = "lsilogic" scsi1:0.present = "TRUE" scsi1:0.fileName = "F:\VM\sharestorage\ocfs2disk.vmdk" scsi1:0.writeThrough = "TRUE" scsi1:0.mode = "independent-persistent" scsi1:0.deviceType = "disk" scsi1:1.present = "TRUE" scsi1:1.fileName = "F:\VM\sharestorage\asmdisk1.vmdk" scsi1:1.writeThrough = "TRUE" scsi1:1.mode = "independent-persistent" scsi1:1.deviceType = "disk" scsi1:2.present = "TRUE" scsi1:2.fileName = "F:\VM\sharestorage\asmdisk2.vmdk" scsi1:2.writeThrough = "TRUE" scsi1:2.mode = "independent-persistent" scsi1:2.deviceType = "disk" scsi1:3.present = "TRUE" scsi1:3.fileName = "F:\VM\sharestorage\asmdisk3.vmdk" scsi1:3.writeThrough = "TRUE" scsi1:3.mode = "independent-persistent" scsi1:3.deviceType = "disk" ethernet1.present = "TRUE" ethernet1.allowGuestConnectionControl = "FALSE" ethernet1.features = "1" ethernet1.wakeOnPcktRcv = "FALSE" ethernet1.networkName = "HostOnly" ethernet1.addressType = "generated" scsi0:1.startConnected = "FALSE" ethernet0.generatedAddress = "00:0c:29:ca:b8:1b" ethernet1.generatedAddress = "00:0c:29:ca:b8:25" tools.syncTime = "TRUE" scsi0:1.clientDevice = "TRUE" scsi0:0.redo = "" scsi1:0.redo = "" scsi1:1.redo = "" scsi1:2.redo = "" scsi1:3.redo = "" vmotion.checkpointFBSize = "134217728" pciBridge0.pciSlotNumber = "17" pciBridge4.pciSlotNumber = "21" pciBridge5.pciSlotNumber = "22" pciBridge6.pciSlotNumber = "23" pciBridge7.pciSlotNumber = "24" scsi0.pciSlotNumber = "16" scsi1.pciSlotNumber = "32" usb.pciSlotNumber = "33" ethernet0.pciSlotNumber = "34" ethernet1.pciSlotNumber = "35" ehci.pciSlotNumber = "36" vmci0.pciSlotNumber = "37" ethernet0.generatedAddressOffset = "0" ethernet1.generatedAddressOffset = "10" vmci0.id = "-875907044" checkpoint.vmState = "" 注:其中有一行scsi1.sharedBus = "none",应将其去掉,否则会产生冲突 2、在第一个虚拟机上启动安装并配置Linux 1.VMware Server 控制台:单击 Start this virtual machine。
2.按 Enter 键以图形模式安装。
3.跳过介质测试并启动安装。
4.欢迎使用 Enterprise Linux:单击 Next。
5.语言选择:。
6.键盘配置:键盘首选项>。
7.跳过系统序列号输入。
8.磁盘分区设置:选中"Create custom layout",进行手动分区。
9. 添加分区:
文件系统类型:Swap
选中"Fixed sizeSize",输入Size:1500
选中"Force to be a primary partition"
点击 "OK"
挂载点: /
文件系统类型:ext3
选中"Fill to maximum allowable size"
选中"Force to be a primary partition"
点击 "OK"磁盘设置:选中/dev/sda 驱动器器。
10.引导加载程序配置:保持默认。
11.网络配置:
网络设备
选择并编辑 eth0
取消选择 Configure Using DHCP。
选择 Activate on boot。
IP 地址:输入"192.168.1.181"。
网络掩码:输入"255.255.255.0"。
选择并编辑 eth1
取消选择 Configure Using DHCP。
选择 Activate on boot。
IP 地址:输入"10.10.10.1"。
网络掩码:输入"255.255.255.0"。
主机名
选择 manually 并输入"rac1"。
杂项设置
网关:输入"192.168.1.1"。
首选 DNS:输入"192.168.1.6"。
备用 DNS:输入"201.96.209.133"。
注意:由于本网卡使用的bridge方式,其IP地址的选择应该和你Windows主机的IP地址在同一个网段。这样windows主机才可能和该Linux虚拟机想通,才可以把Oracle的介质传送到Linux当中。
12.时区设置:
选定时区
取消"System clock users UTC"
13.输入root账户的密码
14.程序包组选择:Customize now
Desktop Environments:GNOME
Applications:仅选Editors
Development:选Development libraries、Development tools和Legacy software development
Servers:选Legacy network server(除了默认选中的程序包外,再选择rsh-server和telnet-server)
Base system:全选(同时system tools里面添加包sysstat)
Languages:默认
15.进行系统安装,完成时单击 Reboot。
16.欢迎页面:单击 Forward。
17.证书协议:选中同意,单击 Forward。
18.防火墙设置:disable
19.SELinux:disable
20.KDump:默认
21.日期和时间:默认
22.更新软件:不更新
23create user:不创建用户
24.声卡测试:Forward
25.结束。reboot。 3、安装 Vmware Tools工具 1.单击 VM,然后选择 Install VMware Tools。
2.进入LINUX,双击桌面上的 VMware Tools 图标。
3.双击 VMwareTools-1.0.1-29996.i386.rpm,安装VMwareTools。
4.完成系统准备:单击 Continue。
5.打开一个终端并执行 vmware-config-tools.pl。 输入所需的显示大小。
6、执行vmwae-toolbox,将主机与虚拟机时间同步。 4、同步客户 OS 与主机 OS 的时间 在安装 Oracle 集群件和 Oracle 数据库软件时,Oracle 安装程序将首先在本地节点上安装软件,然后再将软件远程复制到远程节点。如果两个 RAC 节点的日期和时间未同步,您可能会收到类似于以下内容的错误。
"/bin/tar: ./inventory/Components21/oracle.ordim.server/10.2. 0.1.0: time
stamp 2006-11-04 06:24:04 is 25 s in the future"
要确保成功安装 Oracle RAC,虚拟机上的时间必须与主机上的时间同步。执行下面的步骤,以 root 用户身份同步时间。
1.执行"vmware-toolbox"以显示 VMware Tools Properties 窗口。
2.Options 选项卡下,选择 Time synchronization between the virtual machine and the host operating system。
3.编辑 /boot/grub/grub.conf,并将选项"clock=pit nosmp noapic nolapic"添加到读取内核 /boot/ 的那一行,如下面。
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Enterprise Linux (2.6.18-164.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5PAE ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
initrd /boot/initrd-2.6.18-164.el5PAE.img
title Enterprise Linux-xen (2.6.18-164.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.el5
module /boot/vmlinuz-2.6.18-164.el5xen ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
module /boot/initrd-2.6.18-164.el5xen.img
title Enterprise Linux-base (2.6.18-164.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
initrd /boot/initrd-2.6.18-164.el5.img
4.重新引导 rac1。
# reboot 5、Oracle安装前的准备 1.创建 oracle 用户。以 root 用户身份执行。
# groupadd oinstall
# groupadd dba
# cd /
# mkdir -p /u01/oracle /ocfs
# useradd -d /u01/oracle/ -g oinstall -G dba oracle
# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# chown -R oracle:oinstall /u01/ /ocfs/
2.创建 oracle 用户环境文件。
# su - oracle
[oracle@rac1 ~]$ echo $SHELL
/bin/bash
[oracle@rac1 ~]$ vi .bash_profile
export PS1="`/bin/hostname -s`-> "
export EDITOR=vi
export ORACLE_SID=liuydb1
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin:$PATH
umask 022
stty erase ^H
stty erase ^?
[oracle@rac1 ~]$ source .bash_profile
3.创建文件系统目录结构。以 oracle 用户身份执行。
rac1-> mkdir -p $ORACLE_BASE/admin
rac1-> mkdir -p $ORACLE_HOME
rac1-> mkdir -p $ORA_CRS_HOME
rac1-> mkdir -p /u01/oradata/liuydb
4.提高 Oracle 用户的 shell 限制。使用文本编辑器将下面列出的行添加到 /etc/security/limits.conf、/etc/pam.d/login 和 /etc/profile。其他信息可以从文档中获得。
以root身份登陆
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vi /etc/pam.d/login
session required /lib/security/pam_limits.so
vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
alias cls='clear'
stty erase ^H
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
6.配置内核参数。使用文本编辑器将下面列出的行添加到 /etc/sysctl.conf。要使更改立即生效,请执行 /sbin/sysctl -p。
# vi /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
7.修改 /etc/hosts 文件。
# vi /etc/hosts
127.0.0.1 localhost
192.168.1.181 rac1
192.168.1.81 rac1-vip
10.10.10.1 rac1-priv
192.168.1.182 rac2
192.168.1.82 rac2-vip
10.10.10.2 rac2-priv
8.配置 hangcheck timer内核模块。hangcheck timer 内核模块可监控系统的运行情况,并重新启动出现故障的 RAC 节点。它使用两个参数,即 hangcheck_tick(定义系统检查频率)和 hangcheck_margin(定义在重置 RAC 节点前的最大挂起延时)来确定节点是否出现故障。
在 /etc/modprobe.conf 中添加以下行,以设置 hangcheck 内核模块参数。
# vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
要立即加载模块,执行"modprobe -v hangcheck-timer"
9.为OCFS2 和Oracle ASM创建磁盘分区。为 OCFS2 (/dev/sdb) 和 Oracle ASM(/dev/sdc、/dev/sdd、/dev/sde)准备一组原始磁盘。
在 rac1 上,以 root 用户身份执行
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-512, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):
Using default value 512
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
同样的方法,对/dec/sdc、/dec/sdd、/dec/sde进行操作
10.安装 oracleasmlib 程序包。从 OTN 下载 ASM 库,共三个文件如下
oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
oracleasmlib-2.0.3-1.el5.i386.rpm
oracleasm-support-2.0.4-1.el5.i386.rpm
并以 root 用户身份安装 ASM RPM。
# rpm -ivh oracleasm-support-2.0.4-1.el5.i386.rpm
# rpm -ivh oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
# rpm -ivh oracleasmlib-2.0.3-1.el5.i386.rpm
11.为 ASM 磁盘映射原始设备。仅当您打算使用标准 Linux I/O 创建 ASM 磁盘时,才需要原始设备映射。创建 ASM 磁盘的另一个方法是使用 Oracle 提供的 ASM 库驱动程序。稍后,您将使用 ASM 库驱动程序配置 ASM 磁盘。
执行以下任务,将原始设备映射到先前创建的共享分区。每次引导集群节点时,原始设备都必须与块设备绑定。
由于RHEL5中取消了rawdevices,如果不想将映射命令放到rc.local中的话,我们就需要将其配置到/etc/udev/rules.d/文件夹中
修改文件/etc/udev/rules.d/60-raw.rules
# vi /etc/udev/rules.d/60-raw.rules
增加如下内容:
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw3 %N" KERNEL=="raw[1-3]", OWNER="oracle", GROUP="oinstall", MODE="640" 重启下服务:
# start_udev
Starting udev: [ OK ]
验证一下
# ls /dev/raw/ -l
total 0
crw-r----- 1 oracle oinstall 162, 1 Jun 6 17:57 raw1
crw-r----- 1 oracle oinstall 162, 2 Jun 6 17:57 raw2
crw-r----- 1 oracle oinstall 162, 3 Jun 6 17:57 raw3
注:将其权限改为777 : chmod 777 /dev/raw*
以 oracle 用户身份执行
rac1-> ln -sf /dev/raw/raw1 /u01/oradata/liuydb/asmdisk1
rac1-> ln -sf /dev/raw/raw2 /u01/oradata/liuydb/asmdisk2
rac1-> ln -sf /dev/raw/raw3 /u01/oradata/liuydb/asmdisk3 6、创建并配置第二个虚拟机 要创建第二个虚拟机,只需关闭第一个虚拟机,将 F:\rac\rac1 中的所有文件复制到 F:\rac\rac2,然后更改下面几个配置即可。
1.修改网络配置。
1.在 rac1 上,以 root 用户身份执行
# shutdown h now
2.在主机系统上,将 rac1 文件夹中的所有文件复制到 rac2。
打开rac2文件夹里面的rac1.vmx文件,将displayName = "rac1"改为displayName = "rac2"。
3.将rac2添加到VMwareserver之中,加电启动,用root用户登录,更改以太网设备,
设备 IP地址 子网掩码 默认网关地址
Eth0 192.168.1.182 255.255.255.0 192.168.1.1
Eth1 10.10.10.2 255.255.255.0
注:不要用255.255.252.0
刷新MAC 地址:导航到 Hardware Device 选项卡,并探测每个以太网设备的新 MAC 地址
4.修改 /u01/oracle/.profile。用 liuydb2 替换 ORACLE_SID 的值。
5.查看 /tec/hosts文件,拷过去之后可能会丢失一些信息如 127.0.0.1 localhost等,切记。 7、配置RAC前的准备 1.使用 SSH 建立用户等效性
在集群就绪服务 (CRS) 和 RAC 安装过程中,Oracle Universal Installer (OUI) 必须能够以 oracle 的身份将软件复制到所有 RAC 节点,而不提示输入口令。在 Oracle 10g 中,可以使用 ssh 代替 rsh 完成此操作。
要建立用户等效性,请在两个节点上以 oracle 用户身份生成用户的公钥和私钥。打开 rac1 的电源,在这两个节点上执行以下任务。
在 rac1 上执行
rac1-> mkdir ~/.ssh
rac1-> chmod 700 ~/.ssh
rac1-> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_rsa.
Your public key has been saved in /u01/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
87:54:4f:92:ba:ed:7b:51:5d:1d:59:5b:f9:44:da:b6 oracle@rac1.mycorpdomain.com
rac1-> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_dsa.
Your public key has been saved in /u01/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
31:76:96:e6:fc:b7:25:04:fd:70:42:04:1f:fc:9a:26 oracle@rac1.mycorpdomain.com
在 rac2 上执行
rac2-> mkdir ~/.ssh
rac2-> chmod 700 ~/.ssh
rac2-> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_rsa.
Your public key has been saved in /u01/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
29:5a:35:ac:0a:03:2c:38:22:3c:95:5d:68:aa:56:66 oracle@rac2.mycorpdomain.com
rac2-> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_dsa.
Your public key has been saved in /u01/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
4c:b2:5a:8d:56:0f:dc:7b:bc:e0:cd:3b:8e:b9:5c:7c oracle@rac2.mycorpdomain.com
在 rac1 上执行
rac1-> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
rac1-> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
rac1-> ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'rac2 (192.168.2.132)' can't be established.
RSA key fingerprint is 63:d3:52:d4:4d:e2:cb:ac:8d:4a:66:9f:f1:ab:28:1f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2,192.168.2.132' (RSA) to the list of known hosts.
oracle@rac2's password:
rac1-> ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
oracle@rac2's password:
rac1-> scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
oracle@rac2's password:
authorized_keys 100% 1716 1.7KB/s 00:00
在每个节点上测试连接。验证当您再次运行以下命令时,系统是否不提示您输入口令。
ssh rac1 date ssh rac2 date ssh rac1-priv date ssh rac2-priv date 2. 配置 Oracle 自动存储管理 (ASM)
Oracle ASM 与 Oracle 数据库紧密集成在一起,并与 Oracle 的数据管理工具套件配合工作。它可以简化数据库存储管理,并提供原始磁盘 I/O 的性能。
配置 ASMLib。以 root 用户身份在两个节点上配置 ASMLib。
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: [ OK ]
Loading module "oracleasm": [ OK ]
Mounting ASMlib driver filesystem: [ OK ]
Scanning system for ASM disks: [ OK ]
创建 ASM 磁盘。以 root 用户身份在任何一个节点上创建 ASM 磁盘。
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
Marking disk "/dev/sdc1" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
Marking disk "/dev/sdd1" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
Marking disk "/dev/sde1" as an ASM disk: [ OK ]
Verify that the ASM disks are visible from every node.
# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks: [ OK ]
# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
ocfs2-2.6.18-8.el5-1.2.9-1.el5.i686.rpm
ocfs2console-1.2.7-1.el5.i386.rpm
ocfs2-tools-1.2.7-1.el5.i386.rpm
进行安装
# rpm -ivh ocfs2-tools-1.2.7-1.el5.i386.rpm
# rpm -ivh ocfs2-2.6.18-8.el5-1.2.9-1.el5.i686.rpm
# rpm -ivh ocfs2console-1.2.7-1.el5.i386.rpm
验证 RPM 是否已经安装在两个节点上。
rac1-> rpm -qa | grep ocfs
ocfs2-2.6.18-8.el5-1.2.9-1.el5
ocfs2-tools-1.2.7-1.el5
ocfs2console-1.2.7-1.el5
创建 OCFS2 配置文件。在 rac1 上,以 root 用户身份执行
# ocfs2console
OCFS2 控制台:选择 Cluster,然后选择 Configure Nodes。
"集群堆栈已经启动":单击 Close。
节点配置:单击 Add。
新增节点:添加以下节点,然后单击 Apply。
名称:rac1
IP 地址: 192.168.1.181
IP 端口: 7777
名称:rac2
IP 地址: 192.168.1.182
IP 端口: 7777
验证生成的配置文件。
# more /etc/ocfs2/cluster.conf
rac1-> more /etc/ocfs2/cluster.conf
node:
ip_port = 7777 ip_address = 192.168.1.181 number = 0 name = rac1 cluster = ocfs2 node: ip_port = 7777 ip_address = 192.168.1.182 number = 1 name = rac2 cluster = ocfs2 cluster: node_count = 2 name = ocfs2 将配置文件传播到 rac2。您可以在 rac2 上重新运行上述步骤以生成配置文件,或者在 rac1 的 OCFS2 控制台上选择 Cluster 和 Propagate Configuration 以将配置文件传播到 rac2。
配置 O2CB 驱动程序。
O2CB 是一组集群服务,负责管理节点与集群文件系统之间的通信。下面是对各个服务的说明:
NM:用于跟踪 cluster.conf 中的所有节点的节点管理器
HB:当节点加入或离开集群时向上/向下发出通知的心跳服务
TCP:处理节点之间的通信
DLM:用于跟踪所有锁、这些锁的所有者以及状态的分布式锁管理器
CONFIGFS:在 /config 中挂载的用户空间驱动的配置文件系统
DLMFS:用户空间与内核空间 DLM 的接口
在两个节点上执行下面的过程,将 O2CB 配置为在引导时启动。
当系统提示您指定心跳死亡阈值时,您必须指定一个大于 7 的值,以防止节点由于较慢的 IDE 磁盘驱动器而崩溃。心跳死亡阈值是一个用于计算隔离时间的变量。
Fence time (seconds) = (heartbeat dead threshold -1) * 2
在我们的环境中,120 秒的隔离时间很合适。两个节点上的心跳死亡阈值应该完全相同。
以 root 用户身份执行
# /etc/init.d/o2cb unload
Stopping O2CB cluster ocfs2: OK
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK
# /etc/init.d/o2cb configure
Configuring the O2CB driver.
This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hitting
without typing an answer will keep that current value. Ctrl-C
will abort.
Load O2CB driver on boot (y/n) [n]: y
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [31]: 61
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Loading module "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading module "ocfs2_nodemanager": OK
Loading module "ocfs2_dlm": OK
Loading module "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at
格式化文件系统。在格式化和挂载文件系统之前,应验证 O2CB 在两个节点上均联机;O2CB 心跳当前没有活动,因为文件系统未挂载。
# /etc/init.d/o2cb status
Module "configfs": Loaded
Filesystem "configfs": Mounted
Module "ocfs2_nodemanager": Loaded
Module "ocfs2_dlm": Loaded
Module "ocfs2_dlmfs": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold: 61
Network idle timeout: 30000
Network keepalive delay: 2000
Network reconnect delay: 2000
Checking O2CB heartbeat: Not active
您只需在一个节点上格式化文件系统。在 rac1 上,以 root 用户身份执行
# ocfs2console
OCFS2 控制台:选择 Tasks、Format。
格式:
可用设备:/dev/sdb1
卷标:oracle
集群大小:Auto 节点插槽数量: 4
块大小:Auto
OCFS2 控制台:按 CTRL-Q 退出。
挂载文件系统。要挂载文件系统,在两个节点上执行以下命令。
# mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /ocfs
要在引导时挂载文件系统,在两个节点的 /etc/fstab 中添加以下行。
# vi /etc/fstab
/dev/sdb1 /ocfs ocfs2 _netdev,datavolume,nointr 0 0
创建 Oracle 集群件目录。在 OCR 和表决磁盘将驻留的 OCFS2 文件系统中创建目录。
在 rac1 上执行
# mkdir /ocfs/clusterware
# chown -R oracle:ointsall /ocfs
现在,您已经完成了 OCFS2 的设置。验证您可以在两个节点的共享集群文件系统上读写文件。 8、安装 Oracle 集群件 下载后,在 rac1 上以 oracle 用户身份执行
rac1-> /u01/staging/clusterware/runInstaller
1.欢迎页面:单击 Next。
2.指定 Inventory 目录和证书:
输入 inventory 目录的完整路径:/u01/oracle/oraInventory。
指定操作系统组名:oinstall。
3.指定 Home 详细内容:
名称:OraCrs10g_home
/u01/oracle/product/10.2.0/crs_
4.特定于产品的必要条件检查:
忽略有关物理内存要求的警告。
5.指定集群配置:单击 Add。
公共节点名称:rac2
专用节点名称:rac2-priv
虚拟主机名称:rac2-vip
6.指定网络接口用法:
接口名称:eth0
子网: 192.168.1.0
接口类型:Public
接口名称:eth1
子网: 10.10.10.0
接口类型:Private
7.指定 Oracle 集群注册表 (OCR) 位置:选择 External Redundancy。
为了简单起见,这里将不镜像 OCR。在生产环境中,您可能会考虑复用 OCR 以实现更高的冗余。
指定 OCR 位置:/ocfs/clusterware/ocr
8.指定表决磁盘位置:选择 External Redundancy。
同样,为了简单起见,我们选择不镜像表决磁盘。
表决磁盘位置:/ocfs/clusterware/votingdisk
9.摘要:单击 Install。
10.执行配置脚本:以 root 用户身份按顺序执行以下脚本(一次执行一个)。在当前脚本完成后,再继续执行下一个脚本。
在 rac1 上执行 /u01/oracle/oraInventory/orainstRoot.sh。
在 rac2 上执行 /u01/oracle/oraInventory/orainstRoot.sh。
在 rac1 上执行 /u01/oracle/product/10.2.0/crs_1/root.sh。
在 rac2 上执行 /u01/oracle/product/10.2.0/crs_1/root.sh。
注意:通常在最后一个节点执行root.sh时会遇到错误,就我们的情况而言当然就是rac2~~
提示:一般常见的错误有如下三种:
A).如果你碰到了这个错误:
/u01/oracle/product/10.2.0/crs_1/jdk/jre//bin/java : error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
可以按照如下方式解决:
===============================
修改vipca文件
# vi /u01/oracle/product/10.2.0/crs_1/bin/vipca
找到如下内容:
Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
#End workaround
在fi后新添加一行:
unset LD_ASSUME_KERNEL
以及srvctl文件
# vi /u01/oracle/product/10.2.0/crs_1/bin/srvctl
找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL 保存退出,然后在rac2重新执行root.sh
当然,既然我们已经知道了有这个问题,建议最好在rac2执行root.sh之前,首先修改vipca。
其实同时需要你改的还有$ORACLE_HOME/bin/srvctl文件,不然等装完数据库之后,srvctl命令也是会报这个错误地。要知道srvctl这么常用,如果它执行老报错,那可是相当致命啊。不过呢你现在才安装到crs,离create db还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。
B).如果你碰到了这个错误:
The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs.
解决方式如下:
==============================
图形界面上运行$CRS_HOME/bin/vipca,手工重新配置rac1-vip和rac2-vip。
[# xhost +
# /u01/oracle/product/10.2.0/crs_1/bin/vipca
欢迎页面:单击 Next。
网络接口:选择 eth0。
集群节点的虚拟 IP:
节点名称:rac1
IP 别名:rac1-vip
IP 地址:192.168.1.81
子网掩码:255.255.255.0
节点名称:rac2
IP 别名:rac2-vip
IP 地址:191.168.1.82
子网掩码: 255.255.255.0
摘要:单击 Finish。
C).如果你碰到了这个错误:
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
解决方式如下:
===============================
# ./oifcfg iflist
eth0 192.168.1.0
eth1 10.10.10.0
# ./oifcfg setif -global eth0/192.168.1.0:public
# ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
# ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.10.10.0 global cluster_interconnect
然后在视窗界面重新执行vipca即可。
如果前面配置环境检查出错
以root身份执行$ORA_CRS_HOME/cfgtoollogs/configToolFailedCommands .sh
然后执行:
# /u01/oracle/product/10.2.0/crs_1/bin/crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
结果显示正确就可以。
不报错的话当然就不需要执行了,如果没有错误你应该也找不到configToolFailedCommands.sh文件。
9、安装 Oracle数据库10g第2版 下载后,在 rac1 上以 oracle 用户身份执行
rac1-> /u01/staging/database/runInstaller
1.欢迎页面:单击 Next。
2.选择安装类型:
选择 Enterprise Edition。
3.指定 Home 详细内容:
名称:OraDb10g_home1
路径:/u01/app/oracle/product/10.2.0/db_1
4.指定硬件集群安装模式:
选择 Cluster Installation。
单击 Select All。
5.特定于产品的必要条件检查:
忽略有关DHCP要求的警告。
6.选择配置选项:
选择"install database software only"。
7摘要:单击 Install。
8.执行配置脚本:以 root 用户身份按顺序执行以下脚本(一次执行一个)。在当前脚本完成后,再继续执行下一个脚本。
在 rac1 上执行 /u01/oracle/product/10.2.0/db_1/root.sh。
在 rac2 上执行 /u01/oracle/product/10.2.0/db_1/root.sh。
9.安装完成,退出。 10、使用dbca创建rac数据库 1.欢迎界面:
选择"Oracle Real Application Cluster Database"
2.创建数据库
3.节点选择:
select all
4.数据库模板:
选择 General Purpose。
5.数据库标识:
全局数据库名称:liuydb
SID 前缀:liuydb
6.管理选项:
选择 Configure the Database with Enterprise Manager。
7.数据库证书: 针对所有帐户使用相同的口令。
8.存储选项:
选择 Automatic Storage Management (ASM)。
9.创建 ASM 实例:
SYS 口令:输入 SYS 口令>。
选择 Create initialization parameter file (IFILE)。
10.ASM 磁盘组:
单击 Create New。
11.创建磁盘组:
创建两个磁盘组:DG1 和 RECOVERYDEST。
磁盘组名称:DG1
选择 Normal 冗余。
选择磁盘路径 ORCL:VOL1 和 ORCL:VOL2。如果您已经使用标准 Linux I/O 配置了 ASM 磁盘,则请选择 /u01/oradata/liuydb/asmdisk1 和 /u01/oradata/liuydb/asmdisk2。
单击 OK。
磁盘组名称:RECOVERYDEST。
选择 External 冗余。
选择磁盘路径 ORCL:VOL3。如果您已经使用标准 Linux I/O 配置了 ASM 磁盘,则请选择 /u01/oradata/liuydb/asmdisk3。
单击 OK。
12.ASM 磁盘组:单击 Next。
13.数据库文件位置:
选择 Use Oracle-Managed Files。
数据库区域:+DG1
14.恢复配置:
选择 Specify Flash Recovery Area。
闪回恢复区:+RECOVERYDEST
闪回恢复区大小:1500M
选择 Enable Archiving。
15.数据库内容:
选择或取消选择示例模式。
16.数据库服务:
单击 Next。
17.初始化参数:
选择 Custom。
共享内存管理:Automatic
SGA 大小:200MB
PGA 大小:25MB
根据需要修改其余参数。
18.数据库存储:单击 Next。
19.创建选项:
选择 Create Database。
单击 Finish。
摘要:单击 OK。
20. 安装结束:单击 Exit。 11、数据库测试 现在,您已经成功安装了虚拟双节点 RAC 数据库,下面我们来探究一下您刚刚配置的环境。
检查应用程序资源的状态。
rac1-> crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.liuydb.db application ONLINE ONLINE rac1
ora....b1.inst application ONLINE ONLINE rac1
ora....b2.inst application ONLINE ONLINE rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
启动和停止应用程序资源。
遵循以下步骤启动和停止单独的应用程序资源。
srvctl start nodeapps -n
srvctl start nodeapps -n
srvctl start asm -n
srvctl start asm -n
srvctl start database -d
srvctl start service -d -s
crs_stat -t
srvctl stop service -d -s
srvctl stop database -d
srvctl stop asm -n
srvctl stop asm -n
srvctl stop nodeapps -n
srvctl stop nodeapps -n
crs_stat -t
2010年09月12日
Oracle RAC在Linux的安装与部署 目录 一、硬件要求和概述 环境: 主操作系统 Windows XP Professional SP2 虚拟机版本 vmware serve 2.0.1 Host操作系统 Oracle Enterprise Linux AS 5 Update 3 (也可为RedHat,但是一些RAC安装包需要自己到oracle官网上面去下载) Oracle版本 10.2.0.1 Clusterware版本 10.2.0.1 本实验共享磁盘使用ocfs2+ASM的方式来管理,orc和votingdisk使用ocfs2,数据文件使用ASM。 1.虚拟磁盘布局 主机操作系统上的虚拟磁盘 客户操作系统上的虚拟磁盘 虚拟设备节点大小(MB) 描述 F:\rac\rac1\localdisk.vmdk /dev/sda1 SCSI 0:0 /dev/sda2 交换空间 28000 根目录
F:\rac\rac2\localdisk.vmdk /dev/sda1 SCSI 0:0 dev/sda2 交换空间 28000 根目录
F:\rac\sharedstorage\ocfs2disk.vmdk /dev/sdb SCSI 1:0 500 OCFS2磁盘 F:\rac\sharedstorage\asmdisk1.vmdk /dev/sdc SCSI 1:1 3000 ASM磁盘组1 F:\rac\sharedstorage\asmdisk2.vmdk /dev/sdd SCSI 1:2 3000 ASM磁盘组2 F:\rac\sharedstorage\asmdisk3.vmdk /dev/sde SCSI 1:3 2000 ASM闪回恢复区 注意:要配置共享存储,客户OS不能与共享存储共享同一个SCSI 总线。指定客户OS使用 SCSI0,共享磁盘使用SCSI1。 IP分配规则 注意:在选择ip和vip时应尽量选在网关所在的网段,并且没有被占用, 可使用ping命令检查。 2. RAC 数据库环境概况 注意:在每个节点上安装Oracle主目录供冗余使用,每个节点上的ASM 和Oracle RAC实例共享同一个Oracle主目录 1、配置第一个虚拟机 要创建和配置第一个虚拟机,您需要添加虚拟硬件设备,如磁盘和处理器。在继续执行安装之前,请创建以下 windows 文件夹以存放虚拟机和共享存储。
F:\rac\rac2
F:\rac\sharestorage
(1) 安装好vmwareserver。添加一个datastore F:\rac
(2) Create virtual machine,选datastore rac,取名rac1 单击"next"。
(3) 选Linux operating system,version为RedHat enterprise Linux5,单击"next"。
(4) 输入memory 700MB,cpu个数选2,单击"next"。
(5) Create a new virtual disk,单击"next"。
(6) 输入capacity为20G,location为[rac]rac1/localdisk.vmdx,单击"next"。
(7) Add a network adapter ,选bridge,connect at power on:yes,单击"next"。
(8) Use an iso image,单击"next"
(9) Don't add a floppy drive 单击"next"
(10) Add a USB controller 单击"next"
(11) 单击"finish"。
(12) 创建完虚拟机之后,选add hardware,创建四个虚拟 SCSI 硬盘 - ocfs2disk.vmdk(0.6G) 、asmdisk1.vmdk (3GB)、asmdisk2.vmdk (3GB) 和 asmdisk3.vmdk(2GB)。将他们放在sharestorage文件夹里面。为提高rac使用性能,避免冲突,应将其使用SCSI1:0段,并选择 Allocate all disk space now。
(13) 添加一块网卡,选hostonly模式,connect at power on :yes
如下图:
(14) 修改虚拟机配置文件:F:\rac\rac1\rac1.vmx,添加以下粗体字:
.encoding = "GBK"
config.version = "8"
virtualHW.version = "7"
floppy0.present = "FALSE"
mks.enable3d = "TRUE"
pciBridge0.present = "TRUE"
pciBridge4.present = "TRUE"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "TRUE"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "TRUE"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "TRUE"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "TRUE"
nvram = "rac1.nvram"
virtualHW.productCompatibility = "hosted"
ft.secondary0.enabled = "TRUE"
tools.upgrade.policy = "useGlobal"
disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
scsi1.sharedBus = "virtual"
powerType.powerOff = "soft"
powerType.powerOn = "hard"
powerType.suspend = "hard"
powerType.reset = "soft"
displayName = "rac1"
extendedConfigFile = "rac1.vmxf"
numvcpus = "2"
scsi0.present = "TRUE" scsi0.sharedBus = "none" scsi0.virtualDev = "lsilogic" memsize = "700" scsi0:0.present = "TRUE" scsi0:0.fileName = "localdisk.vmdk" scsi0:0.writeThrough = "TRUE" scsi0:1.present = "TRUE" scsi0:1.fileName = "" scsi0:1.deviceType = "cdrom-raw" scsi0:1.allowGuestConnectionControl = "FALSE" ethernet0.present = "TRUE" ethernet0.allowGuestConnectionControl = "FALSE" ethernet0.features = "1" ethernet0.wakeOnPcktRcv = "FALSE" ethernet0.networkName = "Bridged" ethernet0.addressType = "generated" usb.present = "TRUE" ehci.present = "TRUE" guestOS = "rhel5" uuid.location = "56 4d 20 23 88 26 be 3a-c7 62 2b 01 cb ca b8 1b" uuid.bios = "56 4d 20 23 88 26 be 3a-c7 62 2b 01 cb ca b8 1b" vc.uuid = "52 c1 54 ea 7d 53 b2 86-3d 37 3f d4 b3 aa fc d8" scsi1.present = "TRUE" scsi1.sharedBus = "none" scsi1.virtualDev = "lsilogic" scsi1:0.present = "TRUE" scsi1:0.fileName = "F:\VM\sharestorage\ocfs2disk.vmdk" scsi1:0.writeThrough = "TRUE" scsi1:0.mode = "independent-persistent" scsi1:0.deviceType = "disk" scsi1:1.present = "TRUE" scsi1:1.fileName = "F:\VM\sharestorage\asmdisk1.vmdk" scsi1:1.writeThrough = "TRUE" scsi1:1.mode = "independent-persistent" scsi1:1.deviceType = "disk" scsi1:2.present = "TRUE" scsi1:2.fileName = "F:\VM\sharestorage\asmdisk2.vmdk" scsi1:2.writeThrough = "TRUE" scsi1:2.mode = "independent-persistent" scsi1:2.deviceType = "disk" scsi1:3.present = "TRUE" scsi1:3.fileName = "F:\VM\sharestorage\asmdisk3.vmdk" scsi1:3.writeThrough = "TRUE" scsi1:3.mode = "independent-persistent" scsi1:3.deviceType = "disk" ethernet1.present = "TRUE" ethernet1.allowGuestConnectionControl = "FALSE" ethernet1.features = "1" ethernet1.wakeOnPcktRcv = "FALSE" ethernet1.networkName = "HostOnly" ethernet1.addressType = "generated" scsi0:1.startConnected = "FALSE" ethernet0.generatedAddress = "00:0c:29:ca:b8:1b" ethernet1.generatedAddress = "00:0c:29:ca:b8:25" tools.syncTime = "TRUE" scsi0:1.clientDevice = "TRUE" scsi0:0.redo = "" scsi1:0.redo = "" scsi1:1.redo = "" scsi1:2.redo = "" scsi1:3.redo = "" vmotion.checkpointFBSize = "134217728" pciBridge0.pciSlotNumber = "17" pciBridge4.pciSlotNumber = "21" pciBridge5.pciSlotNumber = "22" pciBridge6.pciSlotNumber = "23" pciBridge7.pciSlotNumber = "24" scsi0.pciSlotNumber = "16" scsi1.pciSlotNumber = "32" usb.pciSlotNumber = "33" ethernet0.pciSlotNumber = "34" ethernet1.pciSlotNumber = "35" ehci.pciSlotNumber = "36" vmci0.pciSlotNumber = "37" ethernet0.generatedAddressOffset = "0" ethernet1.generatedAddressOffset = "10" vmci0.id = "-875907044" checkpoint.vmState = "" 注:其中有一行scsi1.sharedBus = "none",应将其去掉,否则会产生冲突 2、在第一个虚拟机上启动安装并配置Linux 1.VMware Server 控制台:单击 Start this virtual machine。
2.按 Enter 键以图形模式安装。
3.跳过介质测试并启动安装。
4.欢迎使用 Enterprise Linux:单击 Next。
5.语言选择:。
6.键盘配置:键盘首选项>。
7.跳过系统序列号输入。
8.磁盘分区设置:选中"Create custom layout",进行手动分区。
9. 添加分区:
文件系统类型:Swap
选中"Fixed sizeSize",输入Size:1500
选中"Force to be a primary partition"
点击 "OK"
挂载点: /
文件系统类型:ext3
选中"Fill to maximum allowable size"
选中"Force to be a primary partition"
点击 "OK"磁盘设置:选中/dev/sda 驱动器器。
10.引导加载程序配置:保持默认。
11.网络配置:
网络设备
选择并编辑 eth0
取消选择 Configure Using DHCP。
选择 Activate on boot。
IP 地址:输入"192.168.1.181"。
网络掩码:输入"255.255.255.0"。
选择并编辑 eth1
取消选择 Configure Using DHCP。
选择 Activate on boot。
IP 地址:输入"10.10.10.1"。
网络掩码:输入"255.255.255.0"。
主机名
选择 manually 并输入"rac1"。
杂项设置
网关:输入"192.168.1.1"。
首选 DNS:输入"192.168.1.6"。
备用 DNS:输入"201.96.209.133"。
注意:由于本网卡使用的bridge方式,其IP地址的选择应该和你Windows主机的IP地址在同一个网段。这样windows主机才可能和该Linux虚拟机想通,才可以把Oracle的介质传送到Linux当中。
12.时区设置:
选定时区
取消"System clock users UTC"
13.输入root账户的密码
14.程序包组选择:Customize now
Desktop Environments:GNOME
Applications:仅选Editors
Development:选Development libraries、Development tools和Legacy software development
Servers:选Legacy network server(除了默认选中的程序包外,再选择rsh-server和telnet-server)
Base system:全选(同时system tools里面添加包sysstat)
Languages:默认
15.进行系统安装,完成时单击 Reboot。
16.欢迎页面:单击 Forward。
17.证书协议:选中同意,单击 Forward。
18.防火墙设置:disable
19.SELinux:disable
20.KDump:默认
21.日期和时间:默认
22.更新软件:不更新
23create user:不创建用户
24.声卡测试:Forward
25.结束。reboot。 3、安装 Vmware Tools工具 1.单击 VM,然后选择 Install VMware Tools。
2.进入LINUX,双击桌面上的 VMware Tools 图标。
3.双击 VMwareTools-1.0.1-29996.i386.rpm,安装VMwareTools。
4.完成系统准备:单击 Continue。
5.打开一个终端并执行 vmware-config-tools.pl。 输入所需的显示大小。
6、执行vmwae-toolbox,将主机与虚拟机时间同步。 4、同步客户 OS 与主机 OS 的时间 在安装 Oracle 集群件和 Oracle 数据库软件时,Oracle 安装程序将首先在本地节点上安装软件,然后再将软件远程复制到远程节点。如果两个 RAC 节点的日期和时间未同步,您可能会收到类似于以下内容的错误。
"/bin/tar: ./inventory/Components21/oracle.ordim.server/10.2. 0.1.0: time
stamp 2006-11-04 06:24:04 is 25 s in the future"
要确保成功安装 Oracle RAC,虚拟机上的时间必须与主机上的时间同步。执行下面的步骤,以 root 用户身份同步时间。
1.执行"vmware-toolbox"以显示 VMware Tools Properties 窗口。
2.Options 选项卡下,选择 Time synchronization between the virtual machine and the host operating system。
3.编辑 /boot/grub/grub.conf,并将选项"clock=pit nosmp noapic nolapic"添加到读取内核 /boot/ 的那一行,如下面。
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Enterprise Linux (2.6.18-164.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5PAE ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
initrd /boot/initrd-2.6.18-164.el5PAE.img
title Enterprise Linux-xen (2.6.18-164.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.el5
module /boot/vmlinuz-2.6.18-164.el5xen ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
module /boot/initrd-2.6.18-164.el5xen.img
title Enterprise Linux-base (2.6.18-164.el5)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet clock=pit nosmp noapic nolapic
initrd /boot/initrd-2.6.18-164.el5.img
4.重新引导 rac1。
# reboot 5、Oracle安装前的准备 1.创建 oracle 用户。以 root 用户身份执行。
# groupadd oinstall
# groupadd dba
# cd /
# mkdir -p /u01/oracle /ocfs
# useradd -d /u01/oracle/ -g oinstall -G dba oracle
# passwd oracle
Changing password for user oracle.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# chown -R oracle:oinstall /u01/ /ocfs/
2.创建 oracle 用户环境文件。
# su - oracle
[oracle@rac1 ~]$ echo $SHELL
/bin/bash
[oracle@rac1 ~]$ vi .bash_profile
export PS1="`/bin/hostname -s`-> "
export EDITOR=vi
export ORACLE_SID=liuydb1
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/bin:$PATH
umask 022
stty erase ^H
stty erase ^?
[oracle@rac1 ~]$ source .bash_profile
3.创建文件系统目录结构。以 oracle 用户身份执行。
rac1-> mkdir -p $ORACLE_BASE/admin
rac1-> mkdir -p $ORACLE_HOME
rac1-> mkdir -p $ORA_CRS_HOME
rac1-> mkdir -p /u01/oradata/liuydb
4.提高 Oracle 用户的 shell 限制。使用文本编辑器将下面列出的行添加到 /etc/security/limits.conf、/etc/pam.d/login 和 /etc/profile。其他信息可以从文档中获得。
以root身份登陆
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vi /etc/pam.d/login
session required /lib/security/pam_limits.so
vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
alias cls='clear'
stty erase ^H
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
6.配置内核参数。使用文本编辑器将下面列出的行添加到 /etc/sysctl.conf。要使更改立即生效,请执行 /sbin/sysctl -p。
# vi /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
7.修改 /etc/hosts 文件。
# vi /etc/hosts
127.0.0.1 localhost
192.168.1.181 rac1
192.168.1.81 rac1-vip
10.10.10.1 rac1-priv
192.168.1.182 rac2
192.168.1.82 rac2-vip
10.10.10.2 rac2-priv
8.配置 hangcheck timer内核模块。hangcheck timer 内核模块可监控系统的运行情况,并重新启动出现故障的 RAC 节点。它使用两个参数,即 hangcheck_tick(定义系统检查频率)和 hangcheck_margin(定义在重置 RAC 节点前的最大挂起延时)来确定节点是否出现故障。
在 /etc/modprobe.conf 中添加以下行,以设置 hangcheck 内核模块参数。
# vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
要立即加载模块,执行"modprobe -v hangcheck-timer"
9.为OCFS2 和Oracle ASM创建磁盘分区。为 OCFS2 (/dev/sdb) 和 Oracle ASM(/dev/sdc、/dev/sdd、/dev/sde)准备一组原始磁盘。
在 rac1 上,以 root 用户身份执行
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-512, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-512, default 512):
Using default value 512
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
同样的方法,对/dec/sdc、/dec/sdd、/dec/sde进行操作
10.安装 oracleasmlib 程序包。从 OTN 下载 ASM 库,共三个文件如下
oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
oracleasmlib-2.0.3-1.el5.i386.rpm
oracleasm-support-2.0.4-1.el5.i386.rpm
并以 root 用户身份安装 ASM RPM。
# rpm -ivh oracleasm-support-2.0.4-1.el5.i386.rpm
# rpm -ivh oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
# rpm -ivh oracleasmlib-2.0.3-1.el5.i386.rpm
11.为 ASM 磁盘映射原始设备。仅当您打算使用标准 Linux I/O 创建 ASM 磁盘时,才需要原始设备映射。创建 ASM 磁盘的另一个方法是使用 Oracle 提供的 ASM 库驱动程序。稍后,您将使用 ASM 库驱动程序配置 ASM 磁盘。
执行以下任务,将原始设备映射到先前创建的共享分区。每次引导集群节点时,原始设备都必须与块设备绑定。
由于RHEL5中取消了rawdevices,如果不想将映射命令放到rc.local中的话,我们就需要将其配置到/etc/udev/rules.d/文件夹中
修改文件/etc/udev/rules.d/60-raw.rules
# vi /etc/udev/rules.d/60-raw.rules
增加如下内容:
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw3 %N" KERNEL=="raw[1-3]", OWNER="oracle", GROUP="oinstall", MODE="640" 重启下服务:
# start_udev
Starting udev: [ OK ]
验证一下
# ls /dev/raw/ -l
total 0
crw-r----- 1 oracle oinstall 162, 1 Jun 6 17:57 raw1
crw-r----- 1 oracle oinstall 162, 2 Jun 6 17:57 raw2
crw-r----- 1 oracle oinstall 162, 3 Jun 6 17:57 raw3
注:将其权限改为777 : chmod 777 /dev/raw*
以 oracle 用户身份执行
rac1-> ln -sf /dev/raw/raw1 /u01/oradata/liuydb/asmdisk1
rac1-> ln -sf /dev/raw/raw2 /u01/oradata/liuydb/asmdisk2
rac1-> ln -sf /dev/raw/raw3 /u01/oradata/liuydb/asmdisk3 6、创建并配置第二个虚拟机 要创建第二个虚拟机,只需关闭第一个虚拟机,将 F:\rac\rac1 中的所有文件复制到 F:\rac\rac2,然后更改下面几个配置即可。
1.修改网络配置。
1.在 rac1 上,以 root 用户身份执行
# shutdown h now
2.在主机系统上,将 rac1 文件夹中的所有文件复制到 rac2。
打开rac2文件夹里面的rac1.vmx文件,将displayName = "rac1"改为displayName = "rac2"。
3.将rac2添加到VMwareserver之中,加电启动,用root用户登录,更改以太网设备,
设备 IP地址 子网掩码 默认网关地址
Eth0 192.168.1.182 255.255.255.0 192.168.1.1
Eth1 10.10.10.2 255.255.255.0
注:不要用255.255.252.0
刷新MAC 地址:导航到 Hardware Device 选项卡,并探测每个以太网设备的新 MAC 地址
4.修改 /u01/oracle/.profile。用 liuydb2 替换 ORACLE_SID 的值。
5.查看 /tec/hosts文件,拷过去之后可能会丢失一些信息如 127.0.0.1 localhost等,切记。 7、配置RAC前的准备 1.使用 SSH 建立用户等效性
在集群就绪服务 (CRS) 和 RAC 安装过程中,Oracle Universal Installer (OUI) 必须能够以 oracle 的身份将软件复制到所有 RAC 节点,而不提示输入口令。在 Oracle 10g 中,可以使用 ssh 代替 rsh 完成此操作。
要建立用户等效性,请在两个节点上以 oracle 用户身份生成用户的公钥和私钥。打开 rac1 的电源,在这两个节点上执行以下任务。
在 rac1 上执行
rac1-> mkdir ~/.ssh
rac1-> chmod 700 ~/.ssh
rac1-> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_rsa.
Your public key has been saved in /u01/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
87:54:4f:92:ba:ed:7b:51:5d:1d:59:5b:f9:44:da:b6 oracle@rac1.mycorpdomain.com
rac1-> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_dsa.
Your public key has been saved in /u01/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
31:76:96:e6:fc:b7:25:04:fd:70:42:04:1f:fc:9a:26 oracle@rac1.mycorpdomain.com
在 rac2 上执行
rac2-> mkdir ~/.ssh
rac2-> chmod 700 ~/.ssh
rac2-> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_rsa.
Your public key has been saved in /u01/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
29:5a:35:ac:0a:03:2c:38:22:3c:95:5d:68:aa:56:66 oracle@rac2.mycorpdomain.com
rac2-> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/u01/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /u01/oracle/.ssh/id_dsa.
Your public key has been saved in /u01/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
4c:b2:5a:8d:56:0f:dc:7b:bc:e0:cd:3b:8e:b9:5c:7c oracle@rac2.mycorpdomain.com
在 rac1 上执行
rac1-> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
rac1-> cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
rac1-> ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'rac2 (192.168.2.132)' can't be established.
RSA key fingerprint is 63:d3:52:d4:4d:e2:cb:ac:8d:4a:66:9f:f1:ab:28:1f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'rac2,192.168.2.132' (RSA) to the list of known hosts.
oracle@rac2's password:
rac1-> ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
oracle@rac2's password:
rac1-> scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
oracle@rac2's password:
authorized_keys 100% 1716 1.7KB/s 00:00
在每个节点上测试连接。验证当您再次运行以下命令时,系统是否不提示您输入口令。
ssh rac1 date ssh rac2 date ssh rac1-priv date ssh rac2-priv date 2. 配置 Oracle 自动存储管理 (ASM)
Oracle ASM 与 Oracle 数据库紧密集成在一起,并与 Oracle 的数据管理工具套件配合工作。它可以简化数据库存储管理,并提供原始磁盘 I/O 的性能。
配置 ASMLib。以 root 用户身份在两个节点上配置 ASMLib。
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
This will configure the on-boot properties of the Oracle ASM library
driver. The following questions will determine whether the driver is
loaded on boot and what permissions it will have. The current values
will be shown in brackets ('[]'). Hitting without typing an
answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
Start Oracle ASM library driver on boot (y/n) [n]: y
Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
Writing Oracle ASM library driver configuration: [ OK ]
Loading module "oracleasm": [ OK ]
Mounting ASMlib driver filesystem: [ OK ]
Scanning system for ASM disks: [ OK ]
创建 ASM 磁盘。以 root 用户身份在任何一个节点上创建 ASM 磁盘。
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
Marking disk "/dev/sdc1" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
Marking disk "/dev/sdd1" as an ASM disk: [ OK ]
# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
Marking disk "/dev/sde1" as an ASM disk: [ OK ]
Verify that the ASM disks are visible from every node.
# /etc/init.d/oracleasm scandisks
Scanning system for ASM disks: [ OK ]
# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
ocfs2-2.6.18-8.el5-1.2.9-1.el5.i686.rpm
ocfs2console-1.2.7-1.el5.i386.rpm
ocfs2-tools-1.2.7-1.el5.i386.rpm
进行安装
# rpm -ivh ocfs2-tools-1.2.7-1.el5.i386.rpm
# rpm -ivh ocfs2-2.6.18-8.el5-1.2.9-1.el5.i686.rpm
# rpm -ivh ocfs2console-1.2.7-1.el5.i386.rpm
验证 RPM 是否已经安装在两个节点上。
rac1-> rpm -qa | grep ocfs
ocfs2-2.6.18-8.el5-1.2.9-1.el5
ocfs2-tools-1.2.7-1.el5
ocfs2console-1.2.7-1.el5
创建 OCFS2 配置文件。在 rac1 上,以 root 用户身份执行
# ocfs2console
OCFS2 控制台:选择 Cluster,然后选择 Configure Nodes。
"集群堆栈已经启动":单击 Close。
节点配置:单击 Add。
新增节点:添加以下节点,然后单击 Apply。
名称:rac1
IP 地址: 192.168.1.181
IP 端口: 7777
名称:rac2
IP 地址: 192.168.1.182
IP 端口: 7777
验证生成的配置文件。
# more /etc/ocfs2/cluster.conf
rac1-> more /etc/ocfs2/cluster.conf
node:
ip_port = 7777 ip_address = 192.168.1.181 number = 0 name = rac1 cluster = ocfs2 node: ip_port = 7777 ip_address = 192.168.1.182 number = 1 name = rac2 cluster = ocfs2 cluster: node_count = 2 name = ocfs2 将配置文件传播到 rac2。您可以在 rac2 上重新运行上述步骤以生成配置文件,或者在 rac1 的 OCFS2 控制台上选择 Cluster 和 Propagate Configuration 以将配置文件传播到 rac2。
配置 O2CB 驱动程序。
O2CB 是一组集群服务,负责管理节点与集群文件系统之间的通信。下面是对各个服务的说明:
NM:用于跟踪 cluster.conf 中的所有节点的节点管理器
HB:当节点加入或离开集群时向上/向下发出通知的心跳服务
TCP:处理节点之间的通信
DLM:用于跟踪所有锁、这些锁的所有者以及状态的分布式锁管理器
CONFIGFS:在 /config 中挂载的用户空间驱动的配置文件系统
DLMFS:用户空间与内核空间 DLM 的接口
在两个节点上执行下面的过程,将 O2CB 配置为在引导时启动。
当系统提示您指定心跳死亡阈值时,您必须指定一个大于 7 的值,以防止节点由于较慢的 IDE 磁盘驱动器而崩溃。心跳死亡阈值是一个用于计算隔离时间的变量。
Fence time (seconds) = (heartbeat dead threshold -1) * 2
在我们的环境中,120 秒的隔离时间很合适。两个节点上的心跳死亡阈值应该完全相同。
以 root 用户身份执行
# /etc/init.d/o2cb unload
Stopping O2CB cluster ocfs2: OK
Unmounting ocfs2_dlmfs filesystem: OK
Unloading module "ocfs2_dlmfs": OK
Unmounting configfs filesystem: OK
Unloading module "configfs": OK
# /etc/init.d/o2cb configure
Configuring the O2CB driver.
This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot. The current values will be shown in brackets ('[]'). Hitting
without typing an answer will keep that current value. Ctrl-C
will abort.
Load O2CB driver on boot (y/n) [n]: y
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (>=7) [31]: 61
Specify network idle timeout in ms (>=5000) [30000]:
Specify network keepalive delay in ms (>=1000) [2000]:
Specify network reconnect delay in ms (>=2000) [2000]:
Writing O2CB configuration: OK
Loading module "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading module "ocfs2_nodemanager": OK
Loading module "ocfs2_dlm": OK
Loading module "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at
格式化文件系统。在格式化和挂载文件系统之前,应验证 O2CB 在两个节点上均联机;O2CB 心跳当前没有活动,因为文件系统未挂载。
# /etc/init.d/o2cb status
Module "configfs": Loaded
Filesystem "configfs": Mounted
Module "ocfs2_nodemanager": Loaded
Module "ocfs2_dlm": Loaded
Module "ocfs2_dlmfs": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold: 61
Network idle timeout: 30000
Network keepalive delay: 2000
Network reconnect delay: 2000
Checking O2CB heartbeat: Not active
您只需在一个节点上格式化文件系统。在 rac1 上,以 root 用户身份执行
# ocfs2console
OCFS2 控制台:选择 Tasks、Format。
格式:
可用设备:/dev/sdb1
卷标:oracle
集群大小:Auto 节点插槽数量: 4
块大小:Auto
OCFS2 控制台:按 CTRL-Q 退出。
挂载文件系统。要挂载文件系统,在两个节点上执行以下命令。
# mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /ocfs
要在引导时挂载文件系统,在两个节点的 /etc/fstab 中添加以下行。
# vi /etc/fstab
/dev/sdb1 /ocfs ocfs2 _netdev,datavolume,nointr 0 0
创建 Oracle 集群件目录。在 OCR 和表决磁盘将驻留的 OCFS2 文件系统中创建目录。
在 rac1 上执行
# mkdir /ocfs/clusterware
# chown -R oracle:ointsall /ocfs
现在,您已经完成了 OCFS2 的设置。验证您可以在两个节点的共享集群文件系统上读写文件。 8、安装 Oracle 集群件 下载后,在 rac1 上以 oracle 用户身份执行
rac1-> /u01/staging/clusterware/runInstaller
1.欢迎页面:单击 Next。
2.指定 Inventory 目录和证书:
输入 inventory 目录的完整路径:/u01/oracle/oraInventory。
指定操作系统组名:oinstall。
3.指定 Home 详细内容:
名称:OraCrs10g_home
/u01/oracle/product/10.2.0/crs_
4.特定于产品的必要条件检查:
忽略有关物理内存要求的警告。
5.指定集群配置:单击 Add。
公共节点名称:rac2
专用节点名称:rac2-priv
虚拟主机名称:rac2-vip
6.指定网络接口用法:
接口名称:eth0
子网: 192.168.1.0
接口类型:Public
接口名称:eth1
子网: 10.10.10.0
接口类型:Private
7.指定 Oracle 集群注册表 (OCR) 位置:选择 External Redundancy。
为了简单起见,这里将不镜像 OCR。在生产环境中,您可能会考虑复用 OCR 以实现更高的冗余。
指定 OCR 位置:/ocfs/clusterware/ocr
8.指定表决磁盘位置:选择 External Redundancy。
同样,为了简单起见,我们选择不镜像表决磁盘。
表决磁盘位置:/ocfs/clusterware/votingdisk
9.摘要:单击 Install。
10.执行配置脚本:以 root 用户身份按顺序执行以下脚本(一次执行一个)。在当前脚本完成后,再继续执行下一个脚本。
在 rac1 上执行 /u01/oracle/oraInventory/orainstRoot.sh。
在 rac2 上执行 /u01/oracle/oraInventory/orainstRoot.sh。
在 rac1 上执行 /u01/oracle/product/10.2.0/crs_1/root.sh。
在 rac2 上执行 /u01/oracle/product/10.2.0/crs_1/root.sh。
注意:通常在最后一个节点执行root.sh时会遇到错误,就我们的情况而言当然就是rac2~~
提示:一般常见的错误有如下三种:
A).如果你碰到了这个错误:
/u01/oracle/product/10.2.0/crs_1/jdk/jre//bin/java : error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
可以按照如下方式解决:
===============================
修改vipca文件
# vi /u01/oracle/product/10.2.0/crs_1/bin/vipca
找到如下内容:
Remove this workaround when the bug 3937317 is fixed
arch=`uname -m`
if [ "$arch" = "i686" -o "$arch" = "ia64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
#End workaround
在fi后新添加一行:
unset LD_ASSUME_KERNEL
以及srvctl文件
# vi /u01/oracle/product/10.2.0/crs_1/bin/srvctl
找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL 保存退出,然后在rac2重新执行root.sh
当然,既然我们已经知道了有这个问题,建议最好在rac2执行root.sh之前,首先修改vipca。
其实同时需要你改的还有$ORACLE_HOME/bin/srvctl文件,不然等装完数据库之后,srvctl命令也是会报这个错误地。要知道srvctl这么常用,如果它执行老报错,那可是相当致命啊。不过呢你现在才安装到crs,离create db还远着呢,大可以等到创建完数据库,待到需要管理时再修改该文件。
B).如果你碰到了这个错误:
The given interface(s), "eth0" is not public. Public interfaces should be used to configure virtual IPs.
解决方式如下:
==============================
图形界面上运行$CRS_HOME/bin/vipca,手工重新配置rac1-vip和rac2-vip。
[# xhost +
# /u01/oracle/product/10.2.0/crs_1/bin/vipca
欢迎页面:单击 Next。
网络接口:选择 eth0。
集群节点的虚拟 IP:
节点名称:rac1
IP 别名:rac1-vip
IP 地址:192.168.1.81
子网掩码:255.255.255.0
节点名称:rac2
IP 别名:rac2-vip
IP 地址:191.168.1.82
子网掩码: 255.255.255.0
摘要:单击 Finish。
C).如果你碰到了这个错误:
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
解决方式如下:
===============================
# ./oifcfg iflist
eth0 192.168.1.0
eth1 10.10.10.0
# ./oifcfg setif -global eth0/192.168.1.0:public
# ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
# ./oifcfg getif
eth0 192.168.1.0 global public
eth1 10.10.10.0 global cluster_interconnect
然后在视窗界面重新执行vipca即可。
如果前面配置环境检查出错
以root身份执行$ORA_CRS_HOME/cfgtoollogs/configToolFailedCommands .sh
然后执行:
# /u01/oracle/product/10.2.0/crs_1/bin/crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
结果显示正确就可以。
不报错的话当然就不需要执行了,如果没有错误你应该也找不到configToolFailedCommands.sh文件。
9、安装 Oracle数据库10g第2版 下载后,在 rac1 上以 oracle 用户身份执行
rac1-> /u01/staging/database/runInstaller
1.欢迎页面:单击 Next。
2.选择安装类型:
选择 Enterprise Edition。
3.指定 Home 详细内容:
名称:OraDb10g_home1
路径:/u01/app/oracle/product/10.2.0/db_1
4.指定硬件集群安装模式:
选择 Cluster Installation。
单击 Select All。
5.特定于产品的必要条件检查:
忽略有关DHCP要求的警告。
6.选择配置选项:
选择"install database software only"。
7摘要:单击 Install。
8.执行配置脚本:以 root 用户身份按顺序执行以下脚本(一次执行一个)。在当前脚本完成后,再继续执行下一个脚本。
在 rac1 上执行 /u01/oracle/product/10.2.0/db_1/root.sh。
在 rac2 上执行 /u01/oracle/product/10.2.0/db_1/root.sh。
9.安装完成,退出。 10、使用dbca创建rac数据库 1.欢迎界面:
选择"Oracle Real Application Cluster Database"
2.创建数据库
3.节点选择:
select all
4.数据库模板:
选择 General Purpose。
5.数据库标识:
全局数据库名称:liuydb
SID 前缀:liuydb
6.管理选项:
选择 Configure the Database with Enterprise Manager。
7.数据库证书: 针对所有帐户使用相同的口令。
8.存储选项:
选择 Automatic Storage Management (ASM)。
9.创建 ASM 实例:
SYS 口令:输入 SYS 口令>。
选择 Create initialization parameter file (IFILE)。
10.ASM 磁盘组:
单击 Create New。
11.创建磁盘组:
创建两个磁盘组:DG1 和 RECOVERYDEST。
磁盘组名称:DG1
选择 Normal 冗余。
选择磁盘路径 ORCL:VOL1 和 ORCL:VOL2。如果您已经使用标准 Linux I/O 配置了 ASM 磁盘,则请选择 /u01/oradata/liuydb/asmdisk1 和 /u01/oradata/liuydb/asmdisk2。
单击 OK。
磁盘组名称:RECOVERYDEST。
选择 External 冗余。
选择磁盘路径 ORCL:VOL3。如果您已经使用标准 Linux I/O 配置了 ASM 磁盘,则请选择 /u01/oradata/liuydb/asmdisk3。
单击 OK。
12.ASM 磁盘组:单击 Next。
13.数据库文件位置:
选择 Use Oracle-Managed Files。
数据库区域:+DG1
14.恢复配置:
选择 Specify Flash Recovery Area。
闪回恢复区:+RECOVERYDEST
闪回恢复区大小:1500M
选择 Enable Archiving。
15.数据库内容:
选择或取消选择示例模式。
16.数据库服务:
单击 Next。
17.初始化参数:
选择 Custom。
共享内存管理:Automatic
SGA 大小:200MB
PGA 大小:25MB
根据需要修改其余参数。
18.数据库存储:单击 Next。
19.创建选项:
选择 Create Database。
单击 Finish。
摘要:单击 OK。
20. 安装结束:单击 Exit。 11、数据库测试 现在,您已经成功安装了虚拟双节点 RAC 数据库,下面我们来探究一下您刚刚配置的环境。
检查应用程序资源的状态。
rac1-> crs_stat -t
Name Type Target State Host
-------------------------------------------------- ----------
ora.liuydb.db application ONLINE ONLINE rac1
ora....b1.inst application ONLINE ONLINE rac1
ora....b2.inst application ONLINE ONLINE rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
启动和停止应用程序资源。
遵循以下步骤启动和停止单独的应用程序资源。
srvctl start nodeapps -n
srvctl start nodeapps -n
srvctl start asm -n
srvctl start asm -n
srvctl start database -d
srvctl start service -d -s
crs_stat -t
srvctl stop service -d -s
srvctl stop database -d
srvctl stop asm -n
srvctl stop asm -n
srvctl stop nodeapps -n
srvctl stop nodeapps -n
crs_stat -t