Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > 熬了整整一周,终于把oracle10g的RAC搞好了 王日友写
【标  题】:熬了整整一周,终于把oracle10g的RAC搞好了 王日友写
【关键字】:oracle10g,RAC
【来  源】:http://www.cublog.cn/u/12765/showart.php?id=123680

熬了整整一周,终于把oracle10g的RAC搞好了 王日友写

Your Ad Here
注:整理了一份很傻瓜的RAC,是操作手记。很适合初学者参考(因为我也是初学者呵呵),看完记得评论一下 给个留言 说一下不明白的地方!
或者联系: 王日友 msn:wangriyou@hotmail.com
 

Oacle10g-RAC,db, Configuration all for linux

 

整理:  王日友

时间:2006-1-11

 

 

 


1.         引子:

熬了整整一周,总算是安装,配置好了oracle10gRAC。心里有好多感慨,,烦躁,无奈。 最近又没有钱吃饭,孤苦,无助,最近也没有想别的女人,寂寞,无聊。。在装完rac后真真的欣喜了一晚,就上了chinaunix 发了水贴。 不想这么多兄弟需要这篇文档,还是好好的认真的整理一下吧,还算权威,因为是真真实践出来的文档 也因为在这个过程中我请教过好多oracle的专家,这里我真的很感谢他们。还有我们同事给予我的大力帮助,谢谢! 因为俺的文采很烂,在加上懒,有些是我直接从参考文档copy的,念起来很顺的就是copy的啦,呵呵,是不是很恶心。如果你看了文档,还是搞不定的话,可以联系我,我可以帮你想想你是什么问题,不过这样的话,你的请我吃饭了,嘿嘿。联系方式,

例如: msn  [     wangriyou@hotmail.com       海参     ]

          QQ   [    34991198                    海参     ]

         Email  [    realismer@163.com                     ]

 

2.         概述:

oracle官方文档给出支持oracle10gRAC的操作系统:

这是在 Linux 上安装 Oracle 数据库 10g 软件主要组件,详细介绍了 Linux 的认证的英语发行版本(RHEL4ASupdate2)。指南逐步演示了主要 Oracle 10g 产品而在硬件上进行安装和配置的过程。 本文档的最终目的是帮助我以后安装和配置 Oracle 10g 网格的所有组件,也可以给大家做个扔砖的例子。

本指南将提供最权威的方法来完成任务。该方法通常意味着所选择的配置将只适用于我自己,呵呵。因此,本指南既适用于构建生产品质的环境,反映最佳实践。不过环境各异,问题多多,有问题只能好好想,慢慢去解决。不能扔鸡蛋给我。

参考文档有五个已通过 Oracle 数据库 10g 认证的 Linux 发行版本是:

The five Linux distributions certified for Oracle Database 10g covered are:

  • Red Hat Enterprise Linux  4 (RHEL4)
  • Red Hat Enterprise Linux 3 (RHEL3)
  • Red Hat Enterprise Linux 2.1 (RHEL2.1)
  • Novell SUSE Linux Enterprise Server 9
  • Novell SUSE Linux Enterprise Server 8

而我用的是Red Hat Enterprise Linux  4 (RHEL4ASupdate2),而且建议用RHEL4U2搭配oracle10g10.2

 

Oracle RAC 10g 配置的主要组件。 集群中的节点通常是单独的服务器(主机)。

 

 

 

1oracle-RAC

 

 

 

 

具体拓扑结构:

 

直接引用参考资料的拓扑,在加上我的具体配置,例如:

 

1.         我的环境:

ü         硬件:2HpDL360服务器[Xeon2.8G_2M/2*1G/2*73G/],做为数据库服务器,hp-MSA1000[8口光纤交换机,满配14*146G盘阵],共享存储。

 

现命名:db1db3 服务器

              mySAN  盘阵

 

ü         Network2*10-100-1000M以太卡,物理隔离的100M交换机2台。

现命名:

       db1 eth0,eth1

       db3 eth0,eth1

db1 eth0  [ 192.168.10.71]  eth1 [192.168.100.71]

db3 eth0  [ 192.168.10.73]  eth1 [192.168.100.73]

有两个虚拟ip,必须在公网网段,但不能绑在实际网卡上,这俩个ip是在安装rac时数据库自己配置的,用来解决实际公网ip有障碍问题:

db1eth0-vip  [192.168.10.171]

db3eth0-vip  [192.168.10.173]

具体方法:用ifconfig 命令改网络接口ip

例如:

#su  -  root

#ifconfig  eth0 192.168.10.71

 

ü         软件:oracle10g10.2.0.1  RACdb companion

ü         操作系统: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)

所有的包全装上(重要

#uname –a

Linux db1 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:32:14 EDT 2005 i686 i686 i386 GNU/Linux

 

2.         安装配置 linux

4. 1  工具包的安装

装配置系统也很关键,安装的时候我把包全部选装了,防火墙先不要安装;

尽量用新刻录的安装盘去安装,我用的安装盘划的比较厉害,结果ssh包装的有问题,找错误把我差点找死。 :)

最骑马的包:

make-3.80-5

gcc-3.4.4-2

compat-db-4.1.25-9

你的有,可以通过命令来查看有没有,如果没有就重来吧!在所有节点执行以下命令

              #rpm -q make gcc compat-db

make-3.80-5

gcc-3.4.4-2

compat-db-4.1.25-9

          

42  oracle配置 linux

       创建 Oracle 组和用户帐户

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

例如

# id nobody

uid=99(nobody) gid=99(nobody) groups=99(nobody)

#/usr/sbin/groupadd oinstall

#/usr/sbin/groupadd dba

#/usr/sbin/groupadd oper

#/usr/sbin/useradd -m -g oinstall -G dba,oper oracle

#id oracle

              uid=500(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper)

 

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

#/usr/sbin/groupadd -g 501 oinstall

#/usr/sbin/groupadd -g 502 dba

#/usr/sbin/groupadd -g 503 oper

#/usr/sbin/useradd  -m  -u  501  -g  oinstall  -G  dba,oper  oracle

   

              每个节点设置oracle用户密码,设置为强密码:

例如

#passwd   oracle

Changing password for user wangry.

New password:  [kill*m77e]

Retype new password:  [kill*m77e]

passwd: all authentication tokens updated successfully.

 

   

43  创建挂载点

现在创建存储 Oracle 10g 软件的挂载点。本指南在创建目录结构时所用的命名是参照oracle参考文档。有关 OFA 标准的更多信息,请参见 Oracle 数据库 10g 安装指南

root 用户身份在所有节点执行以下命令:

app挂载点

mkdir -p /u01/app/oracle

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01/app/oracle

例如:

# mkdir -p /u01/app/oracle

# chown -R oracle:oinstall /u01/app/oracle

# chmod -R 775 /u01/app/oracle

rac挂载点

mkdir -p /u01/crs/oracle

chown -R oracle:oinstall /u01/crs/oracle

chmod -R 775 /u01/crs/oracle

例如:

#mkdir -p /u01/crs/oracle

#chown -R oracle:oinstall /u01/crs/oracle

#chmod -R 775 /u01/crs/oracle

 

44  配置内核参数

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

查内存配置:

例如:

# free

             total       used       free     shared    buffers     cached

Mem:     2074964     1058512    1016452      0      55520     773880

-/+ buffers/cache:     229112    1845852

Swap:      4194232          0    4194232

配置内核参数:

cat >> /etc/sysctl.conf <<EOF

kernel.shmall = 2097152

kernel.shmmax = 1052397568[你机器内存的一半]

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.rmem_max = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 262144

EOF

#/sbin/sysctl –p

配置.bash_profile,给每个节点的oraclerootbash_profile添加如下代码

if [ -t 0 ]; then

   stty intr ^C

fi

umask 022

 

例如:

#vi  /home/oracle/.bash_profile

#vi  /root/.bash_profile

 

 

4.5  配置 Hangcheck 计时器

所有节点 RHEL 版本:

modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

cat >> /etc/rc.d/rc.local  << EOF

modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

EOF

       

46  配置 /etc/hosts

有些 Linux 发行版本将主机名与回送地址 (127.0.0.1) 相关联。 如果出现这种情况,则从回送地址中删除主机名, 每个节点上配置相同的hosts

例如:我刚装好机器 hosts 文件内容:

127.0.0.1        localhost.localdomain     db1   localhost

db1删掉象下面我配置好的一样!

        

用于此指南的 /etc/hosts 文件:

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1       localhost.localdomain   localhost

192.168.10.71   db1    # 公网 

192.168.10.73   db3    # 公网 

192.168.100.71  db1-priv    # 内网

192.168.100.73  db3-priv    # 内网

192.168.10.171  db1-vip      # 虚拟

192.168.10.173  db3-vip      # 虚拟

       

/etc/hosts文件的说明, db1db3 在公网段 网卡eth0上,db1-priv, db3-priv内网段 网卡eth1上,db1-vip, db3-vip 虚拟网段上,虚拟网段也在公网网段上,这两个ip地址不指定网卡,由oracle自己配置。内网和公网是物理隔离的,目前我是把内网段直接接在另外一个交换机上。但是一定要保证他们是相通的,可以用ping来测试。也可以用一个交换机做,在交换机上划出vlan 使得公网个内网隔离(时间很急,我还没有查资料)。

       

4.7 为用户等效性配置 SSH

在安装 Oracle RAC 10g 期间,OUI(Oracle Universal Installer) 需要把文件复制到集群中的其他主机上并在其上执行程序。 为了允许 OUI 完成此任务,必须配置 SSH 以启用用户等效性。 SSH 建立用户等效性就提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。

第一步是生成 SSH 的公共密钥和专用密钥。 SSH 协议有两个版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我们将创建这两种类型的密钥,以确保 SSH 能够使用任一版本。 ssh-keygen 程序将根据传递给它的参数生成任一类型的公共密钥和专用密钥。

当您运行 ssh-keygen 时,将提示输入一个用于保存密钥的位置。 当提示时只需按 Enter 接受默认值。 随后将提示输入一个口令短语。 输入能记住的口令,而我直接回车,然后再次输入该口令进行确认。 当完成以下步骤后,在 ~/.ssh 目录中将会有四个文件: id_rsaid_rsa.pubid_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

分别剪切和粘贴以下各行:

/usr/bin/ssh-keygen -t dsa

             

例如:

$ 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@db1

 

$ /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@db3

             

现在,必须将每个主机上的公共密钥文件 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@db3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

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

        ssh oracle@db3 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
 
        chmod 644 ~/.ssh/authorized_keys

例如:

        $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
        $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
         $ ssh oracle@db3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
         The authenticity of host 'db3 (192.168.10.73)' can't be established.
         RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
         Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added 'db3,192.168.10.73' (RSA) to the list of known hosts.
         oracle@db3's password: 
         $ ssh oracle@db3 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
         oracle@db3's password:
         $ chmod 644 ~/.ssh/authorized_keys

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

 

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

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

 

ssh oracle@db1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 
        ssh oracle@db1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
 
        chmod 644 ~/.ssh/authorized_keys

例如:

        $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
        $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
        $ ssh oracle@db1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 The authenticity of host 'ds1 (192.168.10.71)' can't be established.
RSA key fingerprint is bd:0e:39:2a:23:2d:ca:f9:ea:71:f5:3d:d3:dd:3b:65.