• Oracle故障案例 | 19C动态监听无法注册实例的处理


    📢📢📢📣📣📣
    哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
    一位上进心十足的【大数据领域博主】!😜😜😜
    中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
    擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
    ✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
    ❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

    前言

    有客户的Oracle 19C数据库反应,数据库重启后,动态监听无法注册实例,本文分析了详细过程

    ⛳️ 1.故障现象

    [oracle@jeames admin]$ lsnrctl start
    SQL> select * from v$version;
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    SQL> alter system register;
    
    [oracle@jeames ~]$ lsnrctl status
    
    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2022 23:05:27
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=jeames)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                18-SEP-2022 23:03:37
    Uptime                    0 days 0 hr. 1 min. 49 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/jeames/listener/alert/log.xml
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=jeames)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    The listener supports no services
    The command completed successfully
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    在这里插入图片描述

    ⛳️ 2.故障排查

    ✨ 2.1 尝试添加静态监听

    [oracle@jeames ~]$ cd $ORACLE_HOME/network/admin
    [oracle@jeames admin]$ ls
    listener.ora  samples  shrept.lst  sqlnet.ora  tnsnames.ora
    
    ## 在listener.ora中加入以下内容
    SID_LIST_LISTENER =
    (SID_LIST =
      (SID_DESC =
      (GLOBAL_DBNAME = PROD)
      (SID_NAME = PROD)
      )
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    [oracle@jeames admin]$ lsnrctl stop
    [oracle@jeames admin]$ lsnrctl start

    在这里插入图片描述

    为什么监听可以静态注册实例,不能动态注册实例呢?

    ✨ 2.1 排查local_listener

    SQL> show parameter local_listener
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    local_listener                       string      LISTENER_PROD
    
    
    ## 查看tnsnames.ora中有关LISTENER_PROD信息,host是OK的
    [oracle@jeames ~]$ more $ORACLE_HOME/network/admin/tnsnames.ora
    LISTENER_PROD =
      (ADDRESS = (PROTOCOL = TCP)(HOST = jeames)(PORT = 1521))
    
    故障原因:
    动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),
    因为pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,
    如果需要向非默认监听注册,则需要配置local_listener参数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    ⛳️ 3.故障处理

    由于监控使用默认的1521端口,可以将local_listener重置回之前的默认值,即空值
    SQL> alter system set local_listener=‘’;
    手动注册
    SQL> alter system register;
    SQL> !lsnrctl status
    我们此时发现;动态监听已经可以注册实例了

    在这里插入图片描述

    ⛳️ 4.技能拓展

    静态监听VS动态监听

    ✨ 4.1 静态监听

    静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。
    无论何时启动一个数据库,默认地都有
    两条信息注册到监听器中:数据库服务器对应的实例和服务。
    
    实例不必启动,静态监听也能注册
    服务器启动静态监听后,可以远程远程启库
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    ✨ 4.2 动态监听

    动态注册是在instance启动的时候PMON进程根据参数文件中的instance_name,service_names
    两个参数将实例和服务动态注册到listener中
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    JS判断最后一个字符是不是@,如果是则删除
    具有平滑正曲线边界的一般凸体的精确闭式闵可夫斯基研究(Matlab代码实现)
    QDockWidget组件的隐藏与显示(按钮控制)
    Day7_9 Java学习之JDBC访问MySQL数据库
    ASTM D2863: 塑料最低氧气浓度测试
    汽车一键启动点火开关按键一键启动按钮型号规格
    前端基础:协商缓存
    【蓝桥】小蓝的疑问
    安卓gradle使用
    【第2章 Node.js基础】2.1 JavaScript基本语法
  • 原文地址:https://blog.csdn.net/weixin_41645135/article/details/126924866