Oracle12c动态注册与静态注册的相关问题

概念

官网说明

The listener is a separate process that runs on the database server computer. 
It receives incoming client connection requests and manages the traffic of these requests to the database server. 
This chapter describes how to configure the listener to accept client connections

大概意思就是:监听器是运行在服务器上的一个单独进程,主要是用来接收客户端发送的数据库连接请求,然后处理数据库访问请求
所以说客户端想要访问数据库,则数据库服务器必须得启动Listener监听程序
动态注册与静态注册可以看看这篇文章
动态注册有以下特性:

  1. 简化配置
    服务注册减少了对SID_LIST_listener_name参数设置的需求,该参数设置在listener.ora文件中指定有关侦听器所服务的数据库的信息
  2. 连接时故障转移
    由于侦听器始终知道实例的状态,因此服务注册有助于在一个实例关闭时将客户端连接请求自动故障转移到其他实例。
    在静态配置模型中,侦听器将在收到客户端请求时启动专用服务器。服务器稍后会发现该实例未启动,从而导致出现“ Oracle not available”错误消息 。
  3. 运行时连接负载均衡
    服务注册使侦听器能够将客户端连接请求转发到负载最少的实例和调度程序或专用服务器。服务注册平衡服务处理程序和节点之间的负载。

动态注册

确保访问主机名为IPV4地址,如果是IPV6需Oralce开启IPV6访问接口,并且端口不能与IPV4端口冲突,访问主机名是IPV6地址的解决办法

默认的监听配置

在%Oracle_Home%\network\admin目录下不需要任何参数文件

  1. 查看Oralce的local_listener参数
SQL> show parameter local_listener;

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
local_listener                       string

值为空,默监听主机地址在1521端口的服务,如果不为空,执行以下命令:SQL> alter parameter local_listener='';

  1. 重启Oracle服务

  2. 查询Oracle数据库初始化配置中的实例名与服务名

  • 查询实例名
SQL> show parameter instance_name

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
instance_name                        string              orcl
  • 查询服务名
SQL> show parameter service_name

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
service_names                        string               orcl
  1. 查看监听状态
C:\WINDOWS\system32>lsnrctl status

LSNRCTL for 64-bit Windows: Version 12.2.0.1.0 - Production on 10-7月 -2019 21:19:33

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 12.2.0.1.0 - Production
启动日期                  10-7月 -2019 21:17:42
正常运行时间              0 天 0 小时 1 分 51 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序日志文件          F:\Oracle\OracleDB\diag\tnslsnr\test\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=test)(PORT=5500))(Security=(my_wallet_directory=F:\ORACLE\ORACLEDB\admin\orcl\xdb_wallet))(Presentation=HTTP)(Session=RAW))
服务摘要..
服务 "70b9444dfa524e899b04fa613f601413" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orclXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

默认监听到orclorclXDB服务

  1. 测试连接
C:\WINDOWS\system32>sqlplus

SQL*Plus: Release 12.2.0.1.0 Production on 星期三 7月 10 21:47:29 2019

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

请输入用户名:  sys as sysdba
输入口令:

连接到:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

SQL>

连接成功

指定主机与端口的监听配置

向非默认监听注册,则要修改相应系统参数。将要监听的信息添加到tnsnames.ora文件(pmon动态注册监听时从tnsnames.ora文件读取信息)

  1. 配置tnsnames.ora文件,加入如下内容:
LISTENER_TEST =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = Dionysus)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = ::1)(PORT = 1522))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
  1. 修改参数LOCAL_LISTENER
SQL > alter system set local_listener=LISTENER_TEST ;
  1. 手动注册
SQL > alter system register;
  1. 查看监听状态
[oracle@CentOS admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 31-MAR-2018 06:55:42

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                31-MAR-2018 06:55:14
Uptime                    0 days 0 hr. 0 min. 28 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/CentOS/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=CentOS)(PORT=1522)))
Services Summary...
Service "sn01" has 1 instance(s).
  Instance "vmdb", status READY, has 1 handler(s) for this service...
Service "sn02" has 1 instance(s).
  Instance "vmdb", status READY, has 1 handler(s) for this service...
Service "sn03" has 1 instance(s).
  Instance "vmdb", status UNKNOWN, has 1 handler(s) for this service...
Service "vmdb" has 1 instance(s).
  Instance "vmdb", status READY, has 1 handler(s) for this service...
Service "vmdbXDB" has 1 instance(s).
  Instance "vmdb", status READY, has 1 handler(s) for this service...
The command completed successfully

测试连接OK

静态注册

  1. 实例启动时读取文件$ORACLE_HOME/network/admin/listener.ora文件的配置,将实例和服务注册到监听程序。listener.ora文件配置如下
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = sn03)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = vmdb)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = CentOS)(PORT = 1521))
  )

ADR_BASE_LISTENER = /u01/app/oracle
  1. 先启动数据库再启动监听
SQL> startup
ORACLE instance started.

Total System Global Area  776646656 bytes
Fixed Size            2217384 bytes
Variable Size          583010904 bytes
Database Buffers      188743680 bytes
Redo Buffers            2674688 bytes
Database mounted.
Database opened.

启动数据库
  1. 启动监听
[oracle@CentOS ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 13:03:11

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

TNS-01106: Listener using listener name LISTENER has already been started
[oracle@CentOS ~]$ lsnrctl reload

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 13:03:19

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=1521)))
The command completed successfully
[oracle@CentOS ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 13:03:25

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                28-MAR-2018 13:03:08
Uptime                    0 days 0 hr. 0 min. 16 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/CentOS/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=CentOS)(PORT=1521)))
Services Summary...
Service "sn03" has 1 instance(s).
  Instance "vmdb", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

发现监听服务有静态注册的sn03,连接测试OK

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值