监听器listener.ora中HOST参数配置

来源:互联网 发布:人工智能类电影 编辑:程序博客网 时间:2024/06/15 03:23

Oracle Net是我们使用Oracle过程中不可缺少的组件环节。对于初学者而言,三个配置文件tnsname.oralistener.orasqlnet.ora是最容易混乱的部分。而且,由于采用ASCII文本格式编辑,非常容易出现配置错误。

监听器控制文件listener.oraOracle服务器端管理重要组件文件。监听器监听端口、动静态注册等行为,与这个文件配置内容有千丝万缕的关系。其中的配置参数,如HOSTPort等,也是非容易混淆的内容。

本篇通过一系列的实验,来介绍HOST参数的使用配置方法,以及Oracle Net在处理Host时采用的算法模式。

 

1Host解析

 

我们在Listener.oraTnsname.ora中,都可以遇到Host参数。直观的看,这个参数作用就是指定连接的主机地址。在服务端,监听器listener.ora中的Host就是指定了监听器在哪些地址上进行监听动作。

监听器运行守候三个关键要素:伺候IP地址(一台主机可能有多个网卡、进而有多个IP地址)、连接协议(默认为TCP,但是很多时候处于安全考量会使用其他协议)、端口对象(在哪个端口进行连接等待)。

Host参数而言,我们可以在服务端listener.ora文件中选择IP地址和主机服务器名称。两种方法下,Oracle监听器是采用不同的策略方法的。

 

2、环境准备

 

准备一个多IP网卡的主机环境。实验机器上安装两个网卡对象,配置不同的IP地址。

 

[root@SimpleLinux network-scripts]# ifconfig

eth0      Link encap:Ethernet  HWaddr 08:00:27:C2:AB:D2 

          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fec2:abd2/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

eth1      Link encap:Ethernet  HWaddr 08:00:27:61:80:AF 

          inet addr:192.168.0.101  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe61:80af/64 Scope:Link

 

两个IP地址被绑定在一台主机上,分别为192.168.0.100192.168.0.101。如果使用名称解析,还要讲IP地址和服务器名称绑定在DNS或者本地/etc/hosts文件中。

 

 

[root@SimpleLinux network-scripts]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               SimpleLinux.localdomain SimpleLinux localhost.localdomain localhost

::1             localhost6.localdomain6 localhost6

192.168.0.100           SimpleLinux SimpleLinux.localdomain

192.168.0.101           SimpleLinux SimpleLinux.localdomain

 

3Host连接绑定主机名

 

如果HOST参数使用主机名,在进行连接监听的时候,Oracle会检索这个主机上所有的网络名称映射,将监听动作绑定在所有的IP地址上。落实到我们这个案例,就意味着对两个IP地址都存在监听行为。

 

 

oracle@SimpleLinux admin]$ ls -l

total 16

-rw-r--r-- 1 oracle oinstall  357 Sep  9 08:49 listener.ora

drwxr-xr-x 2 oracle oinstall 4096 Sep  9 08:39 samples

-rw-r--r-- 1 oracle oinstall  205 May 11  2011 shrept.lst

-rw-r----- 1 oracle oinstall  322 Sep  9 09:01 tnsnames.ora

[oracle@SimpleLinux admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = SimpleLinux.localdomain)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

 

ADR_BASE_LISTENER = /u01/app

 

注意:当前使用的就是主机名称。启动监听器进行监听动作。

 

 

[oracle@SimpleLinux admin]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-JAN-2014 15:00:17

 

Listener Parameter File   /u01/app/oracle/network/admin/listener.ora

Listener Log File         /u01/app/diag/tnslsnr/SimpleLinux/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=SimpleLinux.localdomain)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

 

从远程服务器进行连接测试。

 

 

D:\>tnsping ora11g

 

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-1 -

2014 15:00:51

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

已使用的参数文件:

D:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora

 

已使用 TNSNAMES 适配器来解析别名

尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora11g)))

OK (210 毫秒)

 

 

D:\>tnsping ora11g_101

 

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-1 -

2014 15:02:21

 

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

 

已使用的参数文件:

D:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora

 

已使用 TNSNAMES 适配器来解析别名

尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.101)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora11g)))

OK (10 毫秒)

 

使用sqlplus连接成功。

 

 

SQL> conn scott/tiger@ora11g

已连接。

SQL> conn scott/tiger@ora11g_101

已连接。

 

说明:当我们使用HOST主机名的时候,Oracle监听器会对该计算机上所有的IP地址开启监听动作。

 

4Host使用IP地址

 

下面使用IP地址配置Host的情况,修改listener.ora文件。

 

 

[oracle@SimpleLinux admin]$ cat listener.ora

# listener.ora Network Configuration File: /u01/app/oracle/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )

 

ADR_BASE_LISTENER = /u01/app

 

启动监听器。

 

 

[oracle@SimpleLinux admin]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-JAN-2014 15:06:15

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.100)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

The listener supports no services

The command completed successfully

 

注意,这个过程中出现一些问题。原有的动态注册动作失效。服务不能注册到IP192.168.0.100的服务器上。

此时的解决方法有两个,一个是转而使用静态注册方法,使用SID_LIST参数进行文件注册。另一种是使用local_listener参数直接配置注册对象。

 

SQL> alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1521))';

 

System altered.

 

SQL> show parameter local_list

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

local_listener                       string      (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1521))

SQL> alter system register;

 

System altered.

 

检查注册情况。

 

 

[oracle@SimpleLinux trace]$ lsnrctl status

 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-JAN-2014 15:35:44

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.100)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Services Summary...

Service "ora11g" has 1 instance(s).

  Instance "ora11g", status READY, has 1 handler(s) for this service...

Service "ora11gXDB" has 1 instance(s).

  Instance "ora11g", status READY, has 1 handler(s) for this service...

The command completed successfully

 

测试连接。

 

 

D:\>tnsping ora11g_101

 

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-1 -2014 15:30:34

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

已使用的参数文件:

D:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora

 

已使用 TNSNAMES 适配器来解析别名

尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.101)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora11g)))

TNS-12541: TNS: 无监听程序

 

D:\>tnsping ora11g

 

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 02-1 -2014 15:30:38

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

已使用的参数文件:

D:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora

 

已使用 TNSNAMES 适配器来解析别名

尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ora11g)))

OK (60 毫秒)

 

 

SQL> conn scott/tiger@ora11g

已连接。

SQL> conn scott/tiger@ora11g_101

ERROR:

ORA-12541: TNS: 无监听程序

警告您不再连接到 ORACLE

 

Oracle只能访问到位于192.168.0.100监听程序,101IP位置没有监听行为。

结论:如果Host配置IP地址,监听程序只能访问到所在的单独IP地址。其他网卡位置不能访问到。

 

 

5、结论

 

通过上面的实验,我们证明了在listener.ora文件中使用HOST配置主机名称和IP地址的差异,这个主要是由Oracle Net行为差异造成的。

最后说说客户端Host。对单实例而言,我们比较喜欢直接写IP地址在tnsname.ora里面。但是对于RAC环境,特别是11gR2RAC,引入SCAN的情况下,一些主机名称需单独配置在DNS中。

Oracle Net配置是我们经常遇到问题的环节,需要多多重视。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上传到微云中的视频下载不了怎么办 微云保存的小电影下载不了怎么办 苹果手机下载有云朵下载不了怎么办 手机下载登录忘了密码了怎么办 软软件被手机加密忘了密码怎么办 苹果手机想下载东西忘了密码怎么办 已经不念书几年了突然想上学怎么办 江湖风云录把王老爷子杀了怎么办 练扫踢胫骨旁边的肌肉受伤了怎么办 四个月宝宝没抱住摔了头部怎么办 老公老是跟年轻的小姑娘聊天怎么办 老婆出轨老公想离婚又舍不得怎么办 孕妇打完无痛分娩针就想睡觉怎么办 熟食店开空调菜品吹的很干怎么办 不锈钢锅在液化气烧了发黄怎么办 在小镇门面卤菜店不好卖怎么办? 被辣椒辣到嘴唇了该怎么办 沁园净水机不制水指示灯不亮怎么办 太辣了辣得胃疼怎么办 出现连接问题或mmi码无效怎么办 存折丢了怎么办卡号也不记得了 车内皮子被烂苹果腐蚀有印怎么办 锅被腐蚀后变黑色应该怎么办 后厨炉灶里的炉芯进水了怎么办 小儿九个月老是流黄鼻子该怎么办 肉炖的老了不烂怎么办 吃了凉东西现在一直打嗝应该怎么办 喝了很多水还是觉得口渴怎么办 刚买的猪肝没洗直接炒了怎么办 四个多月的宝宝吃了脏东西怎么办 狗吃了脏东西拉稀呕吐怎么办 五个月宝宝怕吃药导致奶不喝怎么办 蒸锅锅盖吸住了怎么办锅比锅盖要大 豇豆没熟孕妇吃了中毒怎么办 孩子积食拉不出粑粑憋的直哭怎么办 2岁宝宝总是半夜拉粑粑怎么办 金毛拉很臭的稀粑粑怎么办 点餐系统登录后没有菜单怎么办? 环亚在线微交易亏了钱怎么办 钢管舞报了教练班觉得学不会怎么办 微信上聊天被外国人给骗了该怎么办