配置Oracle RAC时修改/etc/hosts文件的注意事项

首先,我们的问题是:在部署Oracle RAC的时候为什么需要修改/etc/hosts文件? 或者具体的说,我们在Linux平台部署Oracle RAC时为什么需要将/etc/hosts文件里的环路地址修改为
        127.0.0.1               localhost
格式? 当然,不同操作系统平台需要修改的hosts文件名称和位置,依赖于操作系统本身。如:Windows下需要修改的是C:\Windows\System32\drivers\etc\hosts文件。

接下来,要想搞清楚这个问题不难,了解一些网络相关的基础知识即可。
我们知道,在一个网络环境中,我们可以通过IP地址去精确访问某个网络设备[如主机、pc、打印机],也可以通过这个设备名来访问该设备。
通过IP地址去定位某个设备时,如果网络未遭受诸如ARP攻击的话,则通常都不会出现问题。关于ARP问题不是本篇重点,不再赘述。
而要想通过主机名去访问时,就需要有某种转换规则可以正确的将主机名称与IP地址成功映射。
这种转换规则通常可以有3种途径:
1 hosts配置文件;
2 NIS[Network Information System|Service],网络信息服务,或者称之为”网络黄页”;
3 DNS[Domain Name System],域名系统。

在没有配置NIS、DNS的网络环境下,/etc/hosts文件则成为我们通过主机名来访问该主机的唯一选择了。
这个配置文件里记录着网络中每一台主机名与其对应的IP地址,而且如果出现某个主机名对应多个IP的话,则只有第一条记录生效,可以用于正确的解析主机名,在解析过程中,后面出现的记录将被忽略。该文件的配置格式如下:
        IP Address    hostname    aliases

看个例子,如果保留默认情况下的环路地址:

[root@node1 ~]# hostname 
node1.oracleonlinux.cn
[root@node1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       node1.oracleonlinux.cn  node1 localhost.localdomain localhost localhost
::1             localhost6.localdomain6 localhost6

# public
172.16.0.33     node1.oracleonlinux.cn       node1
172.16.0.34     node2.oracleonlinux.cn       node2

# private
192.168.94.11   node1-priv.oracleonlinux.cn  node1-priv
192.168.94.12   node2-priv.oracleonlinux.cn  node2-priv

# virtual
172.16.0.35     node1-vip.oracleonlinux.cn   node1-vip
172.16.0.36     node2-vip.oracleonlinux.cn   node2-vip

# scan-ip
172.16.0.223            scan-cluster.oracleonlinux.cn
[root@node1 ~]# ping node1
PING node1.oracleonlinux.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=3 ttl=64 time=0.041 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=4 ttl=64 time=0.039 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.028/0.037/0.043/0.009 ms
[root@node1 ~]# ping node1.oracleonlinux.cn
PING node1.oracleonlinux.cn (127.0.0.1) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from node1.oracleonlinux.cn (127.0.0.1): icmp_seq=4 ttl=64 time=0.043 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.031/0.040/0.044/0.005 ms
[root@node1 ~]#

我们修改默认环路地址后:

[root@node1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost
::1             localhost6.localdomain6 localhost6

# public
172.16.0.33     node1.oracleonlinux.cn       node1
172.16.0.34     node2.oracleonlinux.cn       node2

# private
192.168.94.11   node1-priv.oracleonlinux.cn  node1-priv
192.168.94.12   node2-priv.oracleonlinux.cn  node2-priv

# virtual
172.16.0.35     node1-vip.oracleonlinux.cn   node1-vip
172.16.0.36     node2-vip.oracleonlinux.cn   node2-vip

# scan-ip
172.16.0.223            scan-cluster.oracleonlinux.cn
[root@node1 ~]# ping node1
PING node1.oracleonlinux.cn (172.16.0.33) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=2 ttl=64 time=0.040 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=3 ttl=64 time=0.050 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=4 ttl=64 time=0.034 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.026/0.037/0.050/0.010 ms
[root@node1 ~]# ping node1.oracleonlinux.cn
PING node1.oracleonlinux.cn (172.16.0.33) 56(84) bytes of data.
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=2 ttl=64 time=0.044 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=3 ttl=64 time=0.047 ms
64 bytes from node1.oracleonlinux.cn (172.16.0.33): icmp_seq=4 ttl=64 time=0.041 ms

--- node1.oracleonlinux.cn ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.038/0.042/0.047/0.007 ms
[root@node1 ~]#

最后,看完之后,你有答案了吗?现在你知道了部署Oracle RAC时为什么需要将/etc/hosts文件里的环路地址修改为

           127.0.0.1  localhost

格式吗?

评论 (6)

  • dog| 2014年1月10日

    127.0.0.1 localhost
    好像不修改都有这一句的吧。

    • admin| 2014年1月10日

      @dog 是的,你说的没错。但是,在很多时候,默认情况下,还有很多其它的“冗余”信息,如127.0.0.1 node1.oracleonlinux.cn node1 localhost.localdomain localhost localhost

  • test| 2014年1月20日

    没看懂为啥要写成 127.0.0.1 localhost
    ,只要这个ip中不要加入了主机名即可,其他可以随意

    • admin| 2014年1月20日

      @test
      127.0.0.1 localhost是主机的环路对应地址,约定俗成的“规则”需要这么配置。重点是,在配置RAC环境时127.0.0.1 localhost这一行,切记不要加入其它配置信息,否则就会出问题!

  • test| 2014年1月20日

    我看我们这边的DBA直接将这一行删去,运行也都是正常的

  • luoyanqing| 2014年6月12日

    我之前这个没改,装的11.2.0.3的rac老出错,最后查出来就这个问题

  • 发表评论

    邮箱地址不会被公开。 必填项已用*标注