zoukankan      html  css  js  c++  java
  • oracle 监听文件 说明

    MAR:电脑笔记 不做整理 。。

    ORACLE_SID=orcl2

    instance_name=sicca

     

    静态注册文件中SID_NAME=ORACLE_SID

    动态注册的时候是用的instance_name

     

    在tnsname.ora中,动态注册的话,监听器知道实例的状态。注册的是参数文件中的instance_name 。客户端要与注册端保持一致SID就是instance_name .

    静态注册,在没有实例起来的情况下也可以链接,注册用的是ORACLE_SID。客户端与注册段保持一致,就是ORACLE_SID

     

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

    可以在同一个oracle home 下存在两个不相同的oracle sid ,相同的instance name ,db name 。动态注册到监听后,如果不通过服务名,默认哪个实例先注册,就连哪个实例。

     

     

    SQL> alter system set service_names='eygle,julia' scope=both;

    System altered.

    SQL> show parameter service_names

    NAME TYPE VALUE

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

    service_names string eygle,Julia

     

    tnsnames.ora

    EYGLE=

    (DESCRIPTION =

    (ADDRESS_LIST =

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

    )

    (CONNECT_DATA =

    (SERVICE_NAME = eygle)

    (SID = sicca) 这个sid就是数据库instance_name的值,可以跟ORACLE_SID不同。--- 补充:这个sid 跟要跟静态或者动态注册的SID_NAME保持一致。动态注册是用的参数instance_name的值,静态注册用ORACLE_SID。

    )

    )

    ADDRESS 部分包含了服务器的地址及监听端口信息,CONNECT_DATA 部分包含了连接信息,用于定义目标服务的名称。

    SERVICE_NAME 在这里用于识别访问的数据库服务;

    ERVICE_NAME 在这里也经常可以用 SID 来替代,从 Oracle 9i 开始,Oracle 推荐使用SERVICE_NAME 而不是 SID

     

    因为oracle默认的服务名就是数据库的名字或者数据库的global_name .所以这里的service_name=global_db_name=db_name.db_domain

    也可以如文章开头那样,指定其他服务名。

     

    同样在$ORACLE_HOME/network/admin 目录下可以找到 listener.ora 文件,以下是一个监听器文件的典型配置:

    第一部分 LISTENER 信息,这部分包含了监听的协议、地址以及端口等信息。

    第二部分 SID_LIST_LISTENER 信息,这部分信息用于提供对外的数据库服务列表。第一个 SID_DESC 部分(SID_NAME = PLSExtProc)是数据库缺省就包含的对外部存储过程提供

    的本地监听,此外两个 SID_DESC 部分就是对数据库的两个 SERVICE_NAMES 所设置的监听服务,对于同一个 SID 对应的数据库,可以对外提供多个服务名供客户端访问。

    设置服务名的参数为 GLOBAL_DBNAME,当处理客户端连接请求时,监听器首先尝试将 GLOBAL_DBNAME 和客户端请求中的 SERVICE_NAME 相匹配;如果客户端连接请求的是 SID 信息,则 Oracle 不检查 GLOBAL_DBNAME 设置,而是对监听器中设置的 SID_NAME进行匹配

     

    LISTENER =

    (DESCRIPTION_LIST =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

    )

    (ADDRESS_LIST =

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

    )

    )

    )

    SID_LIST_LISTENER =

    (SID_LIST =

    (SID_DESC =

    (SID_NAME = PLSExtProc)

    (ORACLE_HOME = /opt/oracle/product/9.2.0)

    (PROGRAM = extproc)

    )

    (SID_DESC =

    (GLOBAL_DBNAME = eygle)

    (ORACLE_HOME = /opt/oracle/product/9.2.0)

    (SID_NAME = eygle)

    )

    (SID_DESC =

    (GLOBAL_DBNAME = julia)

    (ORACLE_HOME = /opt/oracle/product/9.2.0)

    (SID_NAME = eygle)

    )

    )

     

    RAC中有点区别

    动态注册可以不要监听文件。因为rac每个服务要向多个实例注册,需要设置初始参数remote_listener。

    简单来说,动态注册会根据参数文件中如下参数去进行注册:

    local_listener

    对于专用服务器模式,参数可以设置为:

    LOCAL_LISTENER=listener_alias (别名就是在listener_alias=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=prod-server)(PORT=1522))))

    对于共享服务器模式,参数可以设置为:

    DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener_alias)"

     

    remote_listener

    10g rac中可以指定一个相同的名字remote_listener=LISTENERS_SMSDB

    然后 tnsnames.ora 文件配置包含如下信息: 全部是虚拟IP

    LISTENERS_SMSDB =

    (ADDRESS_LIST =

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

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

    )

     

    11g rac中 用了scan-vip(比如我自己电脑)

    remote_listener =scan-vip:1521

     

     

    简捷的 Easy Connect 方式

     

    从 Oracle Database 10g 开始,一种称为 Easy Connect Naming Method 被引入到数据库中来,通过在 客 户 端 和 数 据 库 服 务 器 端 的 sqlnet.ora 文 件 中 设 置 NAMES.DIRECTORY_PATH命 名 方 法 可 以 启 用 这 个 特 性 ,例如如下设置,指定数据库可以接受 EZCONNECT 方式的连接:

    NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

    进行了这样的设定之后,可以在客户端使用如下方式进行数据库连接:

    [oracle@drac1 admin]$ sqlplus eygle/eygle@172.16.3.248:1521/orcl.local.com

     

     

    (留)

    对应于 RAC 环境,客户端的 tnsnames.ora 文件配置也有所不同,以下是一段 RAC 环境下客户端的配置示例。与单实例的不同之处在于地址列表段包含多个实例的地址信息,同时支持

    负载均衡和在多实例之间的 FailOver 切换:

    SMSRAC =

    (DESCRIPTION =

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

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

    (LOAD_BALANCE = yes)

    (CONNECT_DATA =

    (SERVER = DEDICATED)

    (SERVICE_NAME = smsrac)

    (FAILOVER_MODE =

    (TYPE = SELECT)

    (METHOD = BASIC)

    (RETRIES = 180)

    (DELAY = 5)

    )

    )

    )

     

    oracle 11g rac 中静态监听的不同

     

    listener.ora配置文件中的信息是Grid Infrastructure安装过程中Agent自行添加的(During the Grid Infrastructure installation, the (default) node VIP listener is always created referencing the public network),比较难以理解的可能是LISTENER仅指定了PROTOCOL=IPC的信息, 而没有指定监听的地址、端口等信息。

    实际上11.2 GI的LISTENER 监听器配置默认受到11.2新引入的endpoints_listener.ora配置文件的管理:

    注意:使用 endpoints_listener.ora的情况 下不应使用lsnrctl管理LISTENER,而需使用srvctl或crsctl工具管理,否则lsnrctl将不会识别 endpoints_listener.ora中的信息,造成监听没有在必要地址、端口上工作。如:

    而在11.2 RAC中listener.ora仅记录LISTENER的IPC条目。这样做的目的是方便dbca配置数据库参数及tnsnames.ora配置文件。了解到以上信息后可能你对当前11.2 RAC中的listener.ora文件中的监听配置信息不再感到奇怪。我们可以使用netca图形化工具或者srvctl 命令行工具添加监听配置; 如果仅仅是手动在listener.ora中添加记录的话是无法被注册为Cluster Ready Service的服务的,将不会被CRS管理。

     

    1 $ srvctl config listener

    Name: LISTENER

    Network: 1, Owner: grid

    Home: <CRS home>

    End points: TCP:1521

     

    2 $ srvctl add listener -l SICCA_LISTENER -o $ORACLE_HOME -p 1588 -k 1

     

    3 $ srvctl start listener -l SICCA_LISTENER

    srvctl start listener启动新添加的监听后listener.ora和endpoints_listener.ora会出现新的记录:

     

    4 在listener.ora配置文件中加入(SID_LIST_($LISTENER_NAME),并重启监听即完成静态注册:

     

    5 $ srvctl stop listener -l SICCA_LISTENER --or-- $ crsctl stop res ora.MACLEAN_LISTENER.lsnr

     

    6 $ srvctl start listener -l SICCA_LISTENER --or-- $ crsctl start res ora.MACLEAN_LISTENER.lsnr

     

    7 $ lsnrctl status SICCA_LISTENER --or-- $ crsctl status res ora.MACLEAN_LISTENER.lsnr

     

  • 相关阅读:
    kendoUI行编辑器的使用grid.editRow($("#grid tr:eq(1)"))无效
    Kendo-UI学习 DataSource 数据源属性说明
    fineReport 下拉联动 js
    报表FineReport中单元格中各种颜色的标识说明
    keil DSP最新版本
    ESP8266固件烧录篇
    git 报错 时出现Clone failed early EOF错误解决
    STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)
    再谈EPLAN 中的项目结构-帮助理解
    启动EPLAN时,应该选哪个版本?Compact/select start/professional/select/maintenance/professional+/ultimate
  • 原文地址:https://www.cnblogs.com/51linux/p/3507600.html
Copyright © 2011-2022 走看看