当前位置: 首页 > news >正文

数据库管理-第六十期 监听(20230309)

数据库管理 2023-03-09

  • 第六十期期 监听
    • 1 无法访问
    • 2 监听配置
    • 3 问题复现与解决
    • 4 静态监听
    • 5 记不住配置咋整
    • 总结

第六十期期 监听

不知不觉又来到了一个整10期数,我承认上一期有很大的划水的。。。嫌疑吧,本期内容是从帮群友解决ADG前置配置时候的一个问题展开,也算是一步一步进行实验测试。这里使用的环境是OL7.9+Oracle 19c,IP地址为10.10.10.102,sid为tdb。

1 无法访问

群友配置完静态监听后出现了两个问题:
第一个问题是:

ORA-01017: invalid username/password; logon denied

在处理完成之后又发现下面的问题:

ORA-12541:TNS:no listener

下面容我尝试复现一下。

2 监听配置

首先,为了避免动态监听的影响,我们把数据库给关了:

shutdown immediate

然后群友方式配置下静态监听:

LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.102)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = TDB)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = TDB))(SID_DESC =(GLOBAL_DBNAME = PDB1)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = TDB)))
#重启监听
lsnrctl stop
lsnrctl start
lsnrctl status

在这里插入图片描述

3 问题复现与解决

尝试访问数据库:
在这里插入图片描述
出现了群友相同的报错。这里修改一下监听文件并重启监听:

LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.102)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = TDB)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = tdb))(SID_DESC =(GLOBAL_DBNAME = PDB1)(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)(SID_NAME = tdb)))

在这里插入图片描述
在这里插入图片描述
这里访问数据库就成功了,对比配置文件发现问题其实sid大小写的问题,这里需要注意一点,service_name (GLOBAL_DBNAME)配置是不区分大小写的,访问也是不区分的,但是SID配置是区分大小写的,SID的错误配置让静态监听无法找到正确的实例并使用正确的密码文件,而空密码是无论如何也访问不上数据库的。

第二个问题的复现其实更简单一些:
在这里插入图片描述
这里监听配置是写了监听端口配置的,通过127.0.0.1是无法正确命中监听的。

4 静态监听

通过上面的问题处理其实可以在数据库没有启动的状态下通过静态监听连接到对应的空闲实例上,同时也可以对实例进行启停操作:
在这里插入图片描述
静态监听的作用就是在此,当一些情况下无法进入操作系统需要对数据库启停进行操作时,就需要静态监听。另一方面,静态监听配置也是DG的必须选项,因为在switchover的时候,原主库是会shutdown一次的,DG_Broker要去将这个库重新启动并将角色变更为standby就需要通过静态监听连接到空闲实例并进行后续操作。

5 记不住配置咋整

如果完全没有图形界面,记不住监听配置咋写,手边也没有可用文档咋整,在$ORACLE_HOME/network/admin/sample文件夹中有listener.ora的范例:

# <lsnr>
#   This parameter specifies both the name of the listener, and
#   it listening address(es). Other parameters for this listener
#   us this name in place of <lsnr>.  When not specified,
#   the name for <lsnr> defaults to "LISTENER", with the default
#   address value as shown below.
#
# LISTENER =
#  (ADDRESS_LIST=
#       (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
#       (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))   # SID_LIST_<lsnr>
#   List of services the listener knows about and can connect 
#   clients to.  There is no default.  See the Net8 Administrator's
#   Guide for more information.
#
# SID_LIST_LISTENER=
#   (SID_LIST=
#       (SID_DESC=
#                       #BEQUEATH CONFIG
#          (GLOBAL_DBNAME=salesdb.mycompany)
#          (SID_NAME=sid1)                      
#          (ORACLE_HOME=/private/app/oracle/product/8.0.3)
#                       #PRESPAWN CONFIG
#         (PRESPAWN_MAX=20)
#         (PRESPAWN_LIST=
#           (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
#         )
#        )
#       )

其中有对应的说明,将注释和不需要的内容删除并根据环境配置即可。

总结

老规矩,知道写了些啥。

http://www.lryc.cn/news/35171.html

相关文章:

  • 概率论与数理统计相关知识
  • SOC计算方法:卡尔曼滤波算法
  • 【C语言】自定义类型、枚举类型与宏定义
  • Java进阶(下篇2)
  • 03单链表
  • ESLint、Prettier插件的安装与使用
  • matlab在管理学中的应用简matlab基础【三】
  • NDK JNI 变声器实现
  • VMLogin防关联指纹浏览器的主帐号和子账号区别介绍
  • Apache DolphinScheduler GitHub Star 突破 10000!
  • 程序员中的女性力量——做不被定义的自己
  • pb中Datawindow中每页打印固定行
  • 华为OD机试 - 内存池(C 语言解题)【独家】
  • SaaS简介
  • unity 实现使用三张图片来表达车速,通过传值达到车速
  • 程序员看过都说好的资源网站,你值得拥有。
  • 【MySQL高级篇】第03章 用户与权限管理
  • MySQL的分库分表?通俗易懂
  • elasticsearch 查询语法
  • 深入剖析MVC模型与三层架构
  • 使用 Wall 搭建个人照片墙和视频墙
  • 03_Linux压缩解压,用户用户组,文件权限
  • 硬盘分区数据恢复?这些方法助您解忧
  • 高校竞赛信息管理系统
  • 还是要学好数学啊
  • ActiveMQ反序列化漏洞原理+复现
  • layui框架实战案例(19):layui-table模块表格综合应用(筛选查询、导入导出、群发短信、一键审核、照片展示、隐私加密)
  • 分析vmlinux,uImage,zImage,Image的生成以及之间的关系
  • 设计模式-六大设计原则详解(java 版)
  • Linux下Nginx安装使用