|
|
Oracle 10g在Linux下的安装步骤
加快系统启动速度
chkconfig kudzu off
chkconfig sendmail off
chkconfig nfs off
chkconfig smartd off
chkconfig cups off
chkconfig rhnsd off
chkconfig iptables off
chkconfig autofs off
chkconfig acpid off
chkconfig apmd off
创建 oracle 用户。 以 root 用户身份执行
# groupadd oinstall
# groupadd dba
# mkdir -p /export/home/oracle /ocfs
# useradd -d /export/home/oracle -g oinstall -G dba -s /bin/ksh oracle
# chown oracle:dba /export/home/oracle /u01
# passwd oracle
New Password:
Re-enter new Password:
passwd: password successfully changed for oracle
创建 oracle 用户环境文件
$vi ./bash_profile
export PS1="`/bin/hostname -s`-> "
export EDITOR=vi
export ORACLE_SID=rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u02/crs/oracle
export LD_LIHBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$PATH
umask 022
rac1->../.profile
创建文件系统目录结构。以 oracle 用户身份执行
rac1-> mkdir -p $ORACLE_BASE/admin
rac1-> mkdir -p $ORACLE_HOME
rac1-> mkdir -p $ORA_CRS_HOME
rac1-> mkdir -p /u01/app/oracle/oradata/db
提高 Oracle 用户的 shell 限制。
/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
/etc/pam.d/login
session required /lib/security/pam_limits.so
/etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
安装 Enterprise Linux 软件程序包。安装 Oracle 软件需要以下附加程序包。如果
您已经安装了 64 位版本的 Enterprise Linux,则安装程序应该已安装了这些程序包。 在
第三张光盘
· libaio-0.3.105-2.i386.rpm
· openmotif21-2.1.30-11.RHEL4.6.i386.rpm
从 ISO CD 解压缩这些程序包,并以 root 用户身份执行下面的命令。
# ls
libaio-0.3.105-2.i386.rpm openmotif21-2.1.30-11.RHEL4.6.i386.rpm
#
# rpm -Uvh *.rpm
warning: libaio-0.3.105-2.i386.rpm: V3 DSA signature: NOKEY, key ID b38a8516
Preparing...
########################################### [100%]
1:openmotif21
########################################### [ 50%]
2:libaio
########################################### [100%]
配置内核参数。使用文本编辑器将下面列出的行添加到 /etc/sysctl.conf。
# more /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 = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144
修改 /etc/hosts 文件。
# more /etc/hosts
127.0.0.1 localhost
192.168.0.120 db1
192.168.0.122 db1-vip
192.168.100.1 db1-priv
192.168.0.121 db2
192.168.0.123 db2-vip
192.168.100.2 db2-priv
配置 hangcheck timer 内核模块。hangcheck timer 内核模块可监控系统的运行情况,
并重新启动出现故障的 RAC 节点。它使用两个参数,即 hangcheck_tick(定义系统检查频
率)和 hangcheck_margin(定义在重置 RAC 节点前的最大挂起延时)来确定节点是否出现
故障。
在 /etc/modprobe.conf 中添加以下行,以设置 hangcheck 内核模块参数。
/etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
要立即加载模块,执行“modprobe -v hangcheck-timer”。
要使更改立即生效,请执行 /sbin/sysctl –p。
为 OCFS2 和 Oracle ASM 创建磁盘分区。为 OCFS2 (/dev/sdb) 和 Oracle ASM
(/dev/sdc、/dev/sdd、/dev/sde)准备一组原始磁盘。
ocfs2下载地址:http://oss.oracle.com/projects/ocfs2/和
http://oss.oracle.com/projects/ocfs2-tools/
这里我们建立7个lun,一个用做备份(/dev/sdb),两个给OCR(/dev/sdc,/dev/sdd),三
个给Voting disk(/dev/sde,/dev/sdf,/dev/sdg),最后一个给存放数据文件用的ASM
磁盘(/dev/sdh)
在 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.
# fdisk /dev/sdc
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-391, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-391, default 391):
Using default value 391
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# fdisk /dev/sdd
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-391, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-391, default 391):
Using default value 391
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# fdisk /dev/sde
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261):
Using default value 261
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 910 7309543+ 83 Linux
/dev/sda2 911 1170 2088450 82 Linux swap
/dev/sda3 1171 2610 11566800 83 Linux
Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 512 524272 83 Linux
Disk /dev/sdc: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 391 3140676 83 Linux
Disk /dev/sdd: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 391 3140676 83 Linux
Disk /dev/sde: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sde1 1 261 2096451 83 Linux
[iyunv@rac2 home]# partprobe
安装 oracleasmlib 程序包。 从 OTN 下载 ASM 库,并以 root 用户身份安装 ASM
RPM。
先安装
[iyunv@rac2 home]# rpm -ivh oracleasm-support-2.0.4-1.el5.i386.rpm
Preparing... ########################################### [100%]
1:oracleasm-support ########################################### [100%]
[iyunv@rac2 home]# rpm -ivh oracleasm-2.6.18-8.el5-2.0.4-1.el5.i686.rpm
Preparing... ########################################### [100%]
1:oracleasm-2.6.18-8.el5 ########################################### [100%]
[iyunv@rac2 home]# rpm -ivh oracleasmlib-2.0.3-1.el5.i386.rpm
Preparing... ########################################### [100%]
1:oracleasmlib ########################################### [100%]
# rpm -Uvh oracleasmlib-2.0.2-1.i386.rpm
Preparing...
########################################### [100%]
1:oracleasmlib
########################################### [100%]
在这个阶段,您应该已经安装了以下 ASM 程序包。
[iyunv@rac1 swdl]# rpm -qa | grep oracleasm
oracleasm-support-2.0.3-2
oracleasm-2.6.9-42.0.0.0.1.ELsmp-2.0.3-2
oracleasmlib-2.0.2-1
为 ASM 磁盘映射原始设备。仅当您打算使用标准 Linux I/O 创建 ASM 磁盘时,才需
要原始设备映射。创建 ASM 磁盘的另一个方法是使用 Oracle 提供的 ASM 库驱动程序。稍
后,您将使用 ASM 库驱动程序配置 ASM 磁盘。
执行以下任务,将原始设备映射到先前创建的共享分区。每次引导集群节点时,原始设
备都必须与块设备绑定。
将以下行添加到 /etc/sysconfig/rawdevices 中。
注意:as 5中是修改/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"
ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdg1", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="sdh1", RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="oinstall", MODE=="0664"
/etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/sdc1
/dev/raw/raw2 /dev/sdd1
/dev/raw/raw3 /dev/sde1
/dev/raw/raw4 /dev/sdf1
/dev/raw/raw5 /dev/sdg1
/dev/raw/raw6 /dev/sdh1
要使映射立即生效,以 root 用户身份执行以下命令:
# /sbin/service rawdevices restart
Assigning devices:
/dev/raw/raw1 --> /dev/sdc1
/dev/raw/raw1: bound to major 8, minor 33
/dev/raw/raw2 --> /dev/sdd1
/dev/raw/raw2: bound to major 8, minor 49
/dev/raw/raw3 --> /dev/sde1
/dev/raw/raw3: bound to major 8, minor 65
done
# chown oracle:dba /dev/raw/raw[1-3]
# chmod 660 /dev/raw/raw[1-3]
# ls -lat /dev/raw/raw*
crw-rw---- 1 oracle dba 162, 3 Nov 4 07:04 /dev/raw/raw3
crw-rw---- 1 oracle dba 162, 2 Nov 4 07:04 /dev/raw/raw2
crw-rw---- 1 oracle dba 162, 1 Nov 4 07:04 /dev/raw/raw1
以 oracle 用户身份执行
实际情况
rac1-> ln -sf /dev/raw/raw6 /u01/app/oracle/oradata/rac/asmdisk1
rac1-> ln -sf /dev/raw/raw1 /u01/app/oracle/oradata/db/asmdisk1
rac1-> ln -sf /dev/raw/raw2 /u01/app/oracle/oradata/db/asmdisk2
rac1-> ln -sf /dev/raw/raw3 /u01/app/oracle/oradata/db/asmdisk3
修改 /etc/udev/permissions.d/50-udev.permissions。原始设备在引导时会重新
映射。默认情况下,在引导时原始设备的拥有者将更改为 root 用户。如果拥有者不是
oracle 用户,则 ASM 在访问共享分区时会出现问题。在
/etc/udev/permissions.d/50-udev.permissions 中为原始行“raw/*:root:disk:0660”
添加注释,然后添加一个新行“raw/*:oracle:dba:0660”。
/etc/udev/permissions.d/50-udev.permissions
# raw devices
ram*:root:disk:0660
#raw/*:root:disk:0660
raw/*:oracle:dba:0660
以上两节点要保持一致
rhel 5 上要做如下(两节点):
vi /etc/redhat-release
修改:Red Hat Enterprise Linux Server release 5 (Tikanga)为
Red Hat Enterprise Linux Server release 4 (Tikanga)
使用 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 (/export/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /export/home/oracle/.ssh/id_rsa.
Your public key has been saved in /export/home/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 (/export/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /export/home/oracle/.ssh/id_dsa.
Your public key has been saved in /export/home/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 (/export/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /export/home/oracle/.ssh/id_rsa.
Your public key has been saved in /export/home/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 (/export/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /export/home/oracle/.ssh/id_dsa.
Your public key has been saved in /export/home/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
ssh rac1.mycorpdomain.com date
ssh rac2.mycorpdomain.com date
ssh rac1-priv.mycorpdomain.com date
ssh rac2-priv.mycorpdomain.com date
5. 配置 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/sdh1
Marking disk "/dev/sdh1" as an ASM disk: [ OK ]
# /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
VOL4
将上传上去的clusterware 和database 改为
#unzip xxx.clusterware.zip
#unzip xxx.database.zip
#chown –R oracle:oinstall clusterware
#chown –R oracle:oinstall database
7. 安装 Oracle 集群件
下载后,在 rac1 上以 oracle 用户身份执行
rac1-> /u01/staging/clusterware/runInstaller
1. 欢迎页面:单击 Next。
2. 指定 Inventory 目录和证书:
o 输入 inventory 目录的完整路径:/u01/app/oracle/oraInventory。
o 指定操作系统组名:oinstall。
3. 指定 Home 详细内容:
o 名称:OraCrs10g_home
o /u01/app/oracle/product/10.2.0/crs_1
4. 特定于产品的必要条件检查:
o 忽略有关物理内存要求的警告。
5. 指定集群配置:单击 Add。
o 公共节点名称:rac2.mycorpdomain.com
o 专用节点名称:rac2-priv.mycorpdomain.com
o 虚拟主机名称:rac2-vip.mycorpdomain.com
6. 指定网络接口用法:
o 接口名称:eth0
o 子网: 192.168.2.0
o 接口类型:Public
o 接口名称:eth1
o 子网: 10.10.10.0
o 接口类型:Private
7. 指定 Oracle 集群注册表 (OCR) 位置:选择 External Redundancy。
为了简单起见,这里将不镜像 OCR。在生产环境中,您可能会考虑复用 OCR 以实现
更高的冗余。
o 指定 OCR 位置:/ocfs/clusterware/ocr
8. 指定表决磁盘位置:选择 External Redundancy。
同样,为了简单起见,我们选择不镜像表决磁盘。
o 表决磁盘位置:/ocfs/clusterware/votingdisk
9. 摘要:单击 Install。
10. 执行配置脚本:以 root 用户身份按顺序执行以下脚本(一次执行一个)。在当前
脚本完成后,再继续执行下一个脚本。
注意在执行root.sh 之前要修改/u01/app/oracle/product/10.2.0/crs_1/bin/vipca 这个文
件(redhat as 5 才有的问题)
修改$ORA_CRS_HOME/bin/vipca 文件
a.修改$CRS_HOME/bin/vipca 文件
注释掉以下几行,注释后效果如下:
arch=`uname -m`
#if [ "$arch" = "i686" -o "$arch" = "ia64" ]
#then
# LD_ASSUME_KERNEL=2.4.19
# export LD_ASSUME_KERNEL
#fi
#End workaround
b.注释$CRS_HOME/bin/srvctl 文件和$ORACLE_HOME/bin/srvctl 文件
注释掉以下几行,注释后效果如下:
#Remove this workaround when the bug 3937317 is fixed
#LD_ASSUME_KERNEL=2.4.19
#export LD_ASSUME_KERNEL
另外一种方法(建议不用):
找到如下:
if [ "$arch" = "i686" -o "$arch" = "ia64" -o "$arch" = "x86_64" ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
unset LD_ASSUME_KERNEL <<== Line to be added
o 在 rac1 上执行 /u01/app/oracle/oraInventory/orainstRoot.sh。
o 在 rac2 上执行 /u01/app/oracle/oraInventory/orainstRoot.sh。
o 在 rac1 上执行 /u01/app/oracle/product/10.2.0/crs_1/root.sh。
o 在 rac2 上执行 /u01/app/oracle/product/10.2.0/crs_1/root.sh。
注意:在完成上面命令后,不要立刻点击OK。跳到下面rac2执行vipca
rac2 上的 root.sh 脚本会自动调用 VIPCA,但会因为“The given interface(s),
"eth0" is not public.Public interfaces should be used to configure virtual
IPs.”错误而失败。如果您的公共接口使用不可路由的 IP 地址 (192.168.x.x),
则 Oracle 集群验证实用程序 (CVU) 将无法找到合适的公共接口。一种解决方法是
手动运行 VIPCA。
同时还需要修改$ORACLE_HOME/bin/srvctl 文件:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
unset LD_ASSUME_KERNEL <<== Line to be added
以 root 用户身份在第二个节点上手动调用 VIPCA。
# /u01/app/oracle/product/10.2.0/crs_1/bin/vipca
当执行上面命令时还会出现错误如下:
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
解决方法:
在节点2 上:
如果你碰到了这个错误:
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
解决方式如下:
===============================
[iyunv@node2 bin]# ./oifcfg iflist
eth1 10.10.17.0
virbr0 192.168.122.0
eth0 192.168.100.0
[iyunv@node2 bin]# ./oifcfg setif -global eth0/192.168.100.0:public
[iyunv@node2 bin]# ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect
[iyunv@node2 bin]# ./oifcfg getif
eth0 192.168.100.0 global public
eth1 10.10.10.0 global cluster_interconnect
11. 欢迎页面:单击 Next。
12. 网络接口:选择 eth0。
13. 集群节点的虚拟 IP:
o 节点名称:rac1
o IP 别名:rac1-vip
o IP 地址: 192.168.2.31
o 子网掩码: 255.255.255.0
o 节点名称:rac2
o IP 别名:rac2-vip
o IP 地址: 192.168.2.32
o 子网掩码: 255.255.255.0
14. 摘要:单击 Finish。
15. 配置助手进度对话框:配置完成后,单击 OK。
16. 配置结果:单击 Exit。
17. 返回到 rac1 的执行配置脚本屏幕,然后单击 OK。
18. 配置助手:验证所有检查均成功。OUI 在最后会执行集群件安装后检查。如果 CVU 失
败,请更正问题,并以 oracle 用户身份重新运行以下命令:
rac1-> /u01/app/oracle/product/10.2.0/crs_1/bin/cluvfy stage
-post crsinst -n rac1,rac2
Performing post-checks for cluster services setup
Checking node reachability...
Node reachability check passed from node "rac1".
Checking user equivalence...
User equivalence check passed for user "oracle".
Checking Cluster manager integrity...
Checking CSS daemon...
Daemon status check passed for "CSS daemon".
Cluster manager integrity check passed.
Checking cluster integrity...
Cluster integrity check passed
Checking OCR integrity...
Checking the absence of a non-clustered configuration...
All nodes free of non-clustered, local-only configurations.
Uniqueness check for OCR device passed.
Checking the version of OCR...
OCR of correct Version "2" exists.
Checking data integrity of OCR...
Data integrity check for OCR passed.
OCR integrity check passed.
Checking CRS integrity...
Checking daemon liveness...
Liveness check passed for "CRS daemon".
Checking daemon liveness...
Liveness check passed for "CSS daemon".
Checking daemon liveness...
Liveness check passed for "EVM daemon".
Checking CRS health...
CRS health check passed.
CRS integrity check passed.
Checking node application existence...
Checking existence of VIP node application (required)
Check passed.
Checking existence of ONS node application (optional)
Check passed.
Checking existence of GSD node application (optional)
Check passed.
Post-check for cluster services setup was successful.
19. 安装结束:单击 Exit。
8. 安装 Oracle 数据库 10g 第 2 版
注意:必须为每个实例分配相应的redo log group
下载后,在 rac1 上以 oracle 用户身份执行
rac1-> /u01/staging/database/runInstaller
1. 欢迎页面:单击 Next。
2. 选择安装类型:
o 选择 Enterprise Edition。
3. 指定 Home 详细内容:
o 名称:OraDb10g_home1
o 路径:/u01/app/oracle/product/10.2.0/db_1
4. 指定硬件集群安装模式:
o 选择 Cluster Installation。
o 单击 Select All。
5. 特定于产品的必要条件检查:
o 忽略有关物理内存要求的警告。
6. 选择配置选项:
o 创建数据库。
7. 选择数据库配置:
o 选择 Advanced。
8. 摘要:单击 Install。
9. 数据库模板:
o 选择 General Purpose。
10. 数据库标识:
o 全局数据库名称:rac
o SID 前缀:rac
11. 管理选项:
o 选择 Configure the Database with Enterprise Manager。
12. 数据库证书:
o 针对所有帐户使用相同的口令。
13. 存储选项:
o 选择 Automatic Storage Management (ASM)。
14. 创建 ASM 实例:
o SYS 口令:<输入 SYS 口令>。
o 选择 Create initialization parameter file (IFILE)。
15. ASM 磁盘组:
o 单击 Create New。
16. 创建磁盘组:
创建两个磁盘组 — DG1 和 RECOVERYDEST。
o 磁盘组名称:DG1
o 选择 Normal 冗余。
o 选择磁盘路径 ORCL:VOL1 和 ORCL:VOL2。如果您已经使用标准 Linux I/O
配置了 ASM 磁盘,则请选择 /u01/oradata/devdb/asmdisk1 和
/u01/oradata/devdb/asmdisk2。
o 单击 OK。
o 磁盘组名称:RECOVERYDEST。
o 选择 External 冗余。
o 选择磁盘路径 ORCL:VOL3。如果您已经使用标准 Linux I/O 配置了 ASM 磁
盘,则请选择 /u01/oradata/devdb/asmdisk3。
o 单击 OK。
17. ASM 磁盘组:单击 Next。
18. 数据库文件位置:
o 选择 Use Oracle-Managed Files。
§ 数据库区域:+DG1
19. 恢复配置:
o 选择 Specify Flash Recovery Area。
§ 闪回恢复区:+RECOVERYDEST
§ 闪回恢复区大小:1500M
o 选择 Enable Archiving。
20. 数据库内容:
o 选择或取消选择示例模式。
21. 数据库服务:
o 单击 Next。稍后,您可以使用 DBCA 或 srvctl 创建或修改其他服务。
22. 初始化参数:
o 选择 Custom。
§ 共享内存管理:Automatic
§ SGA 大小:200MB
§ PGA 大小:25MB
o b. 根据需要修改其余参数。
23. 数据库存储:单击 Next。
24. 创建选项:
o 选择 Create Database。
o 单击 Finish。
25. 摘要:单击 OK。
26. 数据库配置助手:单击 Exit。
27. 执行配置脚本:以 root 用户身份执行下面的脚本。
o 在 rac1 上执行 /u01/app/oracle/product/10.2.0/db_1/root.sh。
o 在 rac2 上执行 /u01/app/oracle/product/10.2.0/db_1/root.sh。
28. 返回到 rac1 的执行配置脚本屏幕,然后单击 OK。
29. 安装结束:单击 Exit。
恭喜,您已经在 Enterprise Linux 上成功安装了 Oracle RAC 数据库 10g!
测试透明故障切换 (TAF)
******************************
注意:TAF名不能和数据库名相同
******************************
Oracle TAF 中的故障切换机制使任何失败的数据库连接能够重新连接到集群中的其他节
点。故障切换对用户是透明的。Oracle 在故障切换实例上重新执行查询并继续向用户显示
余下的结果。
创建一个新的数据库服务。首先,创建一个名为 CRM 的新服务。可以使用 DBCA 或
srvctl 实用程序来创建数据库服务。这里,您将使用 DBCA 在 devdb1 上创建 CRM 服务。
服务名 数据库名 首选实例 可用实例 TAF 策略
CRM devdb devdb1 devdb2 BASIC
在 rac1 上,以 oracle 用户身份执行
rac1-> dbca
1. 欢迎页面:选择 Oracle Real Application Clusters database。
2. 操作:选择 Services Management。
3. 集群数据库列表:单击 Next。
4. 数据库服务:单击 Add。
o 添加服务:输入“CRM”。
§ 选择 devdb1 作为首选实例。
§ 选择 devdb2 作为可用实例。
§ TAF 策略:选择 Basic。
o 单击 Finish。
5. 数据库配置助手:单击 No 退出。
数据库配置助手将在 tnsnames.ora 中创建以下 CRM 服务名项:
CRM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CRM)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
SQL> connect system/oracle@devdb1
Connected.
SQL> show parameter service
NAME TYPE VALUE
------------------------------ ----------- ------------------------
service_names string devdb, CRM
SQL> connect system/oracle@devdb2
Connected.
SQL> show parameter service
NAME TYPE VALUE
------------------------------ ----------- ------------------------
service_names string devdb
使用 CRM 服务连接第一个会话。如果 failover_type 和 failover_mode 返回的输出
为“NONE”,则验证是否在 tnsnames.ora 中正确配置了 CRM 服务。
SQL> connect system/oracle@crm
Connected.
SQL> select
2 instance_number instance#,
3 instance_name,
4 host_name,
5 status
6 from v$instance;
INSTANCE# INSTANCE_NAME HOST_NAME STATUS
---------- ---------------- --------------------- ------------
1 devdb1 rac1.mycorpdomain.com OPEN
SQL> select
2 failover_type,
3 failover_method,
4 failed_over
5 from v$session
6 where username='SYSTEM';
FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------------- ----------------
SELECT BASIC NO
从其他会话中关闭该实例。在 CRM 实例上以 sys 用户身份连接,并关闭该实例。
rac1-> export ORACLE_SID=devdb1
rac1-> sqlplus / as sysdba
SQL> select
2 instance_number instance#,
3 instance_name,
4 host_name,
5 status
6 from v$instance;
INSTANCE# INSTANCE_NAME HOST_NAME STATUS
---------- ---------------- --------------------- ------------
1 devdb1 rac1.mycorpdomain.com OPEN
SQL> shutdown abort;
ORACLE instance shut down.
验证会话已经完成故障切换。从您先前打开的同一 CRM 会话执行以下查询,以验证该
会话已经故障切换到其他实例。
SQL> select
2 instance_number instance#,
3 instance_name,
4 host_name,
5 status
6 from v$instance;
INSTANCE# INSTANCE_NAME HOST_NAME STATUS
---------- ---------------- --------------------- ------------
2 devdb2 rac2.mycorpdomain.com OPEN
SQL> select
2 failover_type,
3 failover_method,
4 failed_over
5 from v$session
6 where username='SYSTEM';
FAILOVER_TYPE FAILOVER_METHOD FAILED_OVER
------------- --------------- ----------------
SELECT BASIC YES
将 CRM 服务重新定位到首选实例。恢复 devdb1 之后,CRM 服务不会自动重新定位到
首选实例。您必须手动将服务重新定位到 devdb1。
rac1-> export ORACLE_SID=devdb1
rac1-> sqlplus / as sysdba
SQL> startup
ORACLE instance started.
Total System Global Area 209715200 bytes
Fixed Size 1218556 bytes
Variable Size 104859652 bytes
Database Buffers 100663296 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter service
NAME TYPE VALUE
------------------------------ ----------- ------------------------
service_names string devdb
rac2-> export ORACLE_SID=devdb2
rac2-> sqlplus / as sysdba
SQL> show parameter service
NAME TYPE VALUE
------------------------------ ----------- ------------------------
service_names string devdb, CRM
rac1-> srvctl relocate service -d devdb -s crm -i devdb2 -t devdb1
SQL> connect system/oracle@devdb1
Connected.
SQL> show parameter service
NAME TYPE VALUE
------------------------------ ----------- ------------------------
service_names string devdb, CRM
SQL> connect system/oracle@devdb2
Connected.
SQL> show parameter service
NAME TYPE VALUE
------------------------------ ----------- ------------------------
service_names string devdb
redhat as 5 安装完后的问题:
rac1-> srvctl start database -d rac
rac1-> srvctl status database -d rac
Instance rac1 is running on node rac1
Instance rac2 is running on node rac2
rac1-> srvctl stop database -d rac
PRKP-1002 : Error stopping instance rac1 on node rac1
CRS-0216: Could not stop resource 'ora.rac.rac1.inst'.
PRKP-1002 : Error stopping instance rac2 on node rac2
CRS-0216: Could not stop resource 'ora.rac.rac2.inst'.
rac1-> srvctl status database -d rac
PRKO-2015 : Error in checking condition of instance on node: rac1
PRKO-2015 : Error in checking condition of instance on node: rac2
rac1-> srvctl config database -d rac
rac1 rac1 /u01/app/oracle/product/10.2.0/rac_1
rac2 rac2 /u01/app/oracle/product/10.2.0/rac_1
rac1-> crs_stat -t
Name Type Target State Host
------------------------------------------------------------
ora.rac.db application OFFLINE OFFLINE
ora....c1.inst application OFFLINE UNKNOWN rac1
ora....c2.inst application OFFLINE UNKNOWN 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
su - oracle
sqlplus "/as sysdba"
shutdown immediate;
尝试方法:
方法一:
./crs_stop -all
./crs_start -all or ./srvctl start crs
如果服务都能正常停止和启动,再看其他问题了
|
|