Oracle监听配置终极笔记:
一、 Oracle网络拓扑图:
1. 侦听器的作用:在指定端口(默认:1521)和指定主机上监听client的连接数据库的请求,然后代表client转发连接请求至sever,再由sever启动相应的sever process与client建立session。
2. listener.ora 和 tnsnames.ora 默认位置:$ORACLE_HOME/network/admin
3. 使用netca来配置监听器:
① “Listener Configuration”创建监听器。(默认主机名,默认端口1521)----生成linstener.ora文件。
listener.ora内容如下:
[oracle@localhost admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
注:黄色部分的是监听器的名称,当只有一个监听器时监听器名称默认为listener,可以直接使用lsnrctl start 来启动监听。但当有多个监听器时要指定监听器名称来启动或停止监听器。
红色部分IP地址、端口要和tnsnames.ora相一致。
② “Local Net Service Name configuration”:配置client端。----生成tnsnames.ora
tnsnames.ora内容如下:
[oracle@localhost admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sales)
)
)
注:绿色部分是解析连接字符串的关键所在,如tnsping sales (大小写不敏感)
蓝色部分ip地址、端口必须与tnsnames.ora中保持一致
黄色部分必须与SQL> show parameter service_names 查询出来的服务名一致。
针对一个实例产生服务器进程需要使用侦听器。为此,需要“告诉”监听器运行在计算机上的哪些实例可用,这个“告诉”过程就是实例想数据库“注册”的过程。常用的注册方式有两种:静态注册和动态注册。
静态注册:在动态注册不稳定时使用,特点是:稳定,注册过程比动态过程慢
动态注册:向侦听器注册一个实例的首选方法。因为他确保仅仅将运行中的实例和可用服务注册到侦听器,而实例和服务明不存在错误。且在关闭实例时,将自动从侦听器中注销。
tnsnames.ora 中加入如下代码:
SID_LIST_LISTENER=
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME=sales)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = sales)
)
)
注:黄色部分为监听器名称
方式一:PMON进程使用local_listener参数来定位一个监听器,并通过instance_name、service_names向监听器自动注册;PMON进程会每一分钟自动执行一次注册。也可以通过SQL>alter system register 来强制注册。
SQL>show parameter local 命令来查看local_listener的主机和端口设置是否正确,若不对,在后即使使用SQL>alter system register 也无法数据库动态注册实例。
监听器名称非默认的LISTENER时,启动和停止监听器,需要制定监听器名称。如:
启动:#lsnrctl start listener2
停止:#lsnrctl stop listener2
当配置的监听器的监听端口不是1521时,如是1522端口,则需要如下配置:
SQL>alter system set local_listener=’address=(protocol=tcp)(host=127.0.0.1)(port=1522)’; -----先设置此参数
SQL>alter system register;-----强制将实例信息注册到监听器
原文:http://blog.itpub.net/29251748/viewspace-1395007/