oracle10g RAC VM server +linux(redhat4.5)

注:安装环境:xp sp3+VMware-server-2.0.2-203138+RHEL4-U4-i386-AS-DVD

在xp上安装vmware server版本时,要将 服务  VMware VSS Writer  启动。但是在windows2003下安装vmware server时不用。

 

 详细步骤:http://www.oracle.com/technology/global/cn/pub/articles/smiley_node10g_install.html

所需要的ocfs2包在http://oss.oracle.com/projects/ocfs2/files/RedHat/RHEL4/i386/1.2.9-1/

 千万注意:

0 不管在哪个平台下配置,一定要把该死的防火墙关闭。

1在配置好SSH以后一定要在两个节点上分别执行登陆到对方机器和本机的命令, ssh [/etc/hosts 文件中的机器名字]  date

2.一定要把public IP放在最上面,然后是 private IP,然后是virtual IP.(客户端连接的时候是用VIP)

3.在配置tnsnames.ora文件的时候,注意新添加的服务别名 前面一定不能空格,否则会出错。tns-03505. 

 

5.在RHEL5上安装oralce10g时要注意:

因为oracle 的官方只支持到RHEL4为止。

方法一:修改版本说明,编辑文件 /etc/redhat-release 把Red Hat Enterprise Linux Server release 5
(Tikanga) 改成版本4: redhat-4

方法二:修改安装文件
# vi /10201_database_linux32/database/install/oraparam.ini
### #[Certified Versions]
Linux=redhat-3,SuSE-9,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2]
再添加
[Linux-redhat-5.0-optional]
TEMP_SPACE=80
SWAP_SPACE=150
MIN_DISPLAY_COLORS=256

 6.在验证安装条件时可能会在network configuration 处  not executed。

此时需要将IP地址设置为静态,并且修改/etc/hosts文件,在最后一行添加

本机IP    机器名       域名

192.168.1.15    wmz.713     dbserver

第 1 部分:安装 Linux 

Red Hat Enterprise Linux 4 (RHEL4)

所需内核:
2.6.9-5.EL 或更高版本

验证内核版本: 

# uname -r
2.6.9-5.ELsmp

其他所需程序包的版本(或更高版本):
make-3.80-5
gcc-3.4.3-9.EL4
compat-db-4.1.25-9

验证已安装的程序包:

# rpm -q make gcc compat-db
make-3.80-5
gcc-3.4.3-9.EL4
compat-db-4.1.25-9
注:有时候会出现包1依赖包2,包2依赖于包3,包3又依赖于包1。对于此,需求同时安装 rpm -ivh 包1 包2 包3
第 2 部分: 为 Oracle 配置 Linux

创建 Oracle 组和用户帐户接下来我们将创建用于安装和维护 Oracle 10g 软件的 Linux 组和用户帐户。 用户帐户名是‘oracle’,组是‘oinstall’和‘dba’。 仅在一个集群主机上以 root 用户身份执行以下命令:

# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)

用户 ID 和组 ID 在所有集群主机上必须相同。 使用从 id oracle 命令得到的信息,在其余集群主机上创建 Oracle 组和用户帐户: 

# /usr/sbin/groupadd -g 501 oinstall 
# /usr/sbin/groupadd -g 502 dba
# /usr/sbin/useradd -m -u 501 -g oinstall -G dba oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)

如果oracle 账户已经存在,并且用户ID也是501,可直接添加到组中。

usermod -g oinstall -G dba oracle

设置 oracle 帐户的口令:

# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd:all authentication tokens updated successfully.
创建挂载点

# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall  /u01/app/oracle
# chmod -R 775 /u01/app/oracle

配置内核参数

以 root 用户身份登录并在每个主机上配置 Linux 内核参数。

#cat >> /etc/sysctl.conf <<EOF
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=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
EOF
#/sbin/sysctl -p     打印出来

Oracle 建议对每个 Linux 帐户可以使用的进程数量和打开文件的数量设置限制。要进行这些更改,以 root 用户身份剪切和粘贴下列命令。

#cat >> /etc/security/limits.conf <<EOF 
oracle               soft    nproc   2047 
oracle               hard    nproc   16384 
oracle               soft    nofile  1024 
oracle               hard    nofile  65536 
EOF 
---------------------------
#cat >> /etc/pam.d/login <<EOF 
session    required     /lib/security/pam_limits.so 
EOF 

对于 Red Hat Enterprise Linux 版本,使用以下命令:

#cat >> /etc/profile <<EOF
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
EOF
-----------------------------------
cat >> /etc/csh.login <<EOF 
if ( /$USER == "oracle" ) then 
limit maxproc 16384 
limit descriptors 65536 
umask 022 
endif 
EOF 

配置 /etc/hosts 
有些 Linux 发行版本将主机名与回送地址 (127.0.0.1) 相关联。 如果出现这种情况,则从回送地址中删除主机名。  用于此指南的 /etc/hosts 文件:

127.0.0.1		localhost.localdomain   	localhost
192.168.1.200     	node1.orademo.org 	         node1            # node1 public
192.168.1.201    	node2.orademo.org          	 node2            # node2 public
192.168.2.50   	        node1-priv.orademo.org    	node1-priv        # node1 private
192.168.2.51    	node2-priv.orademo.org    	node2-priv        # node1 private

192.168.1.200    	node1-vip.orademo.org     	node1-vip         # node1 virtual
192.168.1.201    	node2-vip.orademo.org     	node2-vip         # node2 virtual

///注意顺序为用户等效性配置 SSH 在安装 Oracle RAC 10g 期间,OUI 需要把文件复制到集群中的其他主机上并在其上执行程序。 为了允许 OUI 完成此任务,必须配置 SSH 以启用用户等效性。 用 SSH 建立用户等效性就提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。
 
第一步是生成 SSH 的公共密钥和专用密钥。 SSH 协议有两个版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我们将创建这两种类型的密钥,以确保 SSH 能够使用任一版本。 ssh-keygen 程序将根据传递给它的参数生成任一类型的公共密钥和专用密钥。
 
当您运行 ssh-keygen 时,将提示您输入一个用于保存密钥的位置。 当提示时只需按 Enter 接受默认值。 随后将提示您输入一个口令短语。 输入您能记住的口令,然后再次输入该口令进行确认。  当您完成以下步骤后,在 ~/.ssh 目录中将会有四个文件: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。 id_rsa 和 id_dsa 文件是您的专用密钥,千万不要告诉任何人。 id_rsa.pub 和 id_dsa.pub 文件是您的公共密钥,必须将其复制到集群中其他每个主机上。
 
在每个主机上,以 oracle 用户身份登录:

$ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 oracle@ds1.orademo.org

$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a oracle@ds1.orademo.org

 

 现在,必须将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。 使用 ssh 将每个文件的内容复制到 ~/.ssh/authorized_keys 文件。 请注意,当您使用 ssh 第一次访问远程主机时,其 RSA 密钥将是未知的,从而将提示您确认是否希望连接该主机。
 SSH 将记录该远程主机的 RSA 密钥,并在以后连接该主机时不再做出相关提示。
 
只需在第一个主机上,以 oracle 用户身份登录(复制本地帐户的密钥,以便连接本地主机的 ssh 能够起作用): 

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


ssh oracle@ds2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  
(如果您要剪切和粘贴这些命令,则分别运行它们。 SSH 每次会提示输入 oracle 的口令,如果同时粘贴这些命令,则第一个命令在提示输入口令之前刷新输入缓冲区,从而导致其他命令将会丢失。)

$ssh oracle@ds2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$chmod 644 ~/.ssh/authorized_keys

现在对第二个主机做同样的处理。 请注意,这次 SSH 会提示您输入在创建密钥时所使用的口令短语而非 oracle 的口令。 这是因为第一个主机 (ds1) 现在知道了第二个主机的公共密钥,而 SSH 现在使用的是一种不同的认证协议。

$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$ssh oracle@ds1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ssh oracle@ds1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

$chmod 644 ~/.ssh/authorized_keys
建立用户等效性
最后,在生成密钥、复制文件并重复地输入口令和口令短语(安全性有意思吧?)所有这些工作完成之后,您就可以建立用户等效性了。 在建立用户等效性时,不会再提示您输入口令。 以 oracle 用户身份在将要安装 Oracle 10g 软件的节点 (ds1) 上:

exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add
例如:$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
Enter passphrase for /home/oracle/.ssh/id_rsa:
Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
(请注意,用户等效性仅为当前会话建立。 如果您切换到其他会话或注销并重新登录,则必须再次运行 ssh-agent 和 ssh-add 才能重新建立用户等效性。) 测试连通性 如果一切均设置正确,则您现在就可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 date 等简单命令来验证用户等效性:
$ ssh ds2 date
Sun Jun 27 19:07:19 CDT 2004

测试每个方向上所有服务器的连通性是非常重要的。 这样会确保当 OUI 在 CRS 和数据库软件安装期间试图复制文件时不会出现类似以下的消息。  该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。
The authenticity of host 'ds2 (192.168.200.52)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85.
Are you sure you want to continue connecting (yes/no)? yes

第 3 部分: 
准备共享磁盘这一部分介绍了三种准备共享磁盘以用于 RAC 的方法:1. Oracle 集群文件系统 (OCFS)2. 自动存储管理器 (ASM)3. 原始设备(Raw)Oracle 集群文件系统 (OCFS) 第 1 版  OCFS 第 1 版是原始设备的一个优秀替代品。 它不仅更易于管理和维护,而且克服了 255 个原始设备的限制。 但是,它并不是一个通用集群文件系统。 它只能用于存储以下类型的文件: Oracle 数据文件 联机重做日志归档重做日志 控制文件 Spfile CRS 共享文件(Oracle Cluster Registry 和 CRS voting disk)。 有关 OCFS 的更多背景知识,请阅读 OTN 技术文章“Linux 集群文件系统简介”。
 
获取 OCFS
转到 http://oss.oracle.com/projects/ocfs 并下载适于您的 Linux 版本的 OCFS RPM。 您需要三个 RPM: ocfs-support、ocfs-tools 和 ocfs-kernel-specific 模块。 要确定您所需要的内核专用模块,可使用 uname -r。
# uname -r
2.4.21-15.0.2.ELsmp
对于本示例,我下载了:ocfs-support-1.0.10-1.i386.rpmocfs-tools-1.0.10-1.i386.rpmocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm 安装 OCFS

# rpm -Uvh ocfs-support-1.0.10-1.i386.rpm /
ocfs-tools-1.0.10-1.i386.rpm /
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm
Preparing...                ########################################### [100%]
1:ocfs-support           ########################################### [ 33%]
2:ocfs-tools             ########################################### [67%]
3:ocfs-2.4.21-EL-smp     ########################################### [100%]
Linking OCFS module into the module path [  OK  ]

配置 OCFS    (如果没有关闭防火墙,这一步一定会出错)以 root 用户身份运行 ocfstool:
# ocfstool
1.OCFS2 控制台:选择Cluster,然后选择Configure Nodes。
2.“集群堆栈已经启动”:单击Close。
3.节点配置:单击 Add。
4.新增节点:添加以下节点,然后单击 Apply。
名称:node1
IP 地址: 192.168.2.131
IP 端口: 7777
名称:node2
IP 地址: 192.168.2.132
IP 端口: 7777
一定要注意名称要和hosts文件中保持一致。
验证生成的配置文件。

# more /etc/ocfs2/cluster.conf
 node:
 ip_port = 7777
 ip_address = 192.168.2.131
 number = 0
 name = node1
 cluster = ocfs2  node:
 ip_port = 7777
 ip_address = 192.168.2.132
 number = 1
 name = node2
 cluster = ocfs2 cluster:
 node_count = 2
 name = ocfs2

将配置文件传播到 node2。您可以在 node2 上重新运行上述步骤以生成配置文件,或者在 node1 的OCFS2 控制台上选择Cluster 和 Propagate Configuration 以将配置文件传播到 node2。此时会提示要输入root用户的密码。为了验证传播成功,还是到别一台机器上看看。
1.OCFS2 控制台:选择Tasks、Format。
2.格式:可用设备:/dev/sdb1
卷标:oracle
集群大小:Auto
节点插槽数量: 4
块大小:Auto3.OCFS2 控制台:按 CTRL-Q 退出。挂载文件系统。要挂载文件系统,在两个节点上执行以下命令。

# mount -t ocfs2 -o datavolume,nointr /dev/sdb1 /ocfs   

设置环境变量

安装结束后要设置环境变量:
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次.默认情况下,他设置一些环境变量,执行用户的.bashrc文件.~/.bash_profile 是交互式、login 方式进入 bash 运行的
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.~/.bashrc 是交互式 non-login 方式进入 bash 运行的
在以上两个文件设置都可以,不过设置过后最好执行一下生效。
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/app/oracle/product/10.2.0/crs_1
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:/sbin
export PATH

RAC常用命令

一.保证时间同步:
假定:node1 :192.168.1.101  node2:192.168.1.102
在node1中设定:chkconfig time on
在node2中运行:rdate -s 192.168.1.101 
二.rac 启动与关闭顺序
srvctl start nodeapps -n rac1
srvctl start nodeapps -n rac2
srvctl start asm -n rac1
srvctl start asm -n rac2
srvctl start database -d zzcgs(打开全部实例)
srvctl start instance -d zzcgs -i zzcgs1 (打开实例1)
srvctl start service -d zzcgs
crs_stat -t
(或者crs_start -all)
srvctl stop service -d zzcgs
srvctl stop database -d zzcgs(关闭所有实例)
srvctl stop instance -d zzcgs -i zzcgs1 (关闭实例1)
srvctl stop asm -n rac1
srvctl stop asm -n rac2
srvctl stop nodeapps -n rac1
srvctl stop nodeapps -n rac2
crs_stat -t
(或者crs_stop -all)
三、如果Oracle RAC数据库的公用网络和私有互联网络的IP子网或IP地址不正确时,可以使用Oracle提供的接口配置工具oifcfg进行调整。
1.使用oifcfg的getif选项可以获取当前网络的配置信息
RACDB1@rac1 /home/oracle$ oifcfg getif
eth0  135.4.1.0    global  public
eth1  192.168.0.0  global  cluster_interconnect
假设此处列出来的信息是不正确的,需要做调整VIP为192.168.1.111  和192.168.1.112
2.使用oifcfg的delif选项可以删除与公共网络对应的信息
RACDB1@rac1 /home/oracle$ oifcfg delif -global eth0
3.使用oifcfg的setif选项给出正确的公共网络信息
RACDB1@rac1 /home/oracle$ oifcfg setif -global eth0/192.168.1.0:public
4.对私有互联网络做同样的设置
RACDB1@rac1 /home/oracle$ oifcfg delif -global eth1
oifcfg setif -global eth1/192.168.2.0:cluster_interconnect
5.确认网络信息是否调整正确
RACDB1@rac1 /home/oracle$ oifcfg getif
eth0  192.168.1.0  global  public
eth1  192.168.2.0  global  cluster_interconnect
6.修改VIP
srvctl modify nodeapps -n rac1 -A 192.168.1.111/255.255.255.0/eth0
srvctl modify nodeapps -n rac2 -A 192.168.1.112/255.255.255.0/eth0
7.小结
在RAC安装部署或日常维护过程中,当网络环境出现问题或需要调整时,可以使用oifcfg这个工具对Oracle环境中特有的网络信息进行调整。
注:oifcfg命令位于$ORA_CRS_HOME/bin目录下

四、RAC安装结束后,当客户端连接时曾遇到这样的情况:

public ip :10.57.1.243和10.57.93.244

vip 分别为:10.57.1.245和10.57.1.246

当用jdbc连接的时候连接字符串:

jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=10.57.1.245) (PORT=1521)) (LOAD_BALANCE=yes) )(CONNECT_DATA=(SERVICE_NAME=  orcl )))

连接反复中断,但是用pl/sql 连接却没有问题,而且将上面改为oci连接也没有问题。4个IP全部换了一遍还是不行。但是把IP中三位数补0居然没有问题了。













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值