“LOCAL_LISTENER”参数导致业务无法连接数据库,文末附Oracle连接故障检查监听的排查流程

 1. 背景及问题

今天在Oracle BCV技术[1]做数据同步,建立生产库的测试库,需要DBA配合同步前后的停库和起库。在同步完起库后,有部门反应同步好的测试库连接不上去

2. 问题排查

以我当前的知识储备,能想到的可能就是以下几点进行检查:

  1. 数据库实例状态,是不是没有open ---> select status from v$instance;

  2. 监听器状态,是不是监听没起来 ---> lsnrctl status|start

  3. Oralce黑白名单配置问题 ---> $ORACLE_HOME/network/admin/sqlnet.ora

  4. 客户端 tnsnames.ora 配置问题,连接符写错了 ---> tnsping

  5. 网络连接问题,端口是否开放 ---> ping IP 、 telnet IP 1521

这些都不是,由于情况紧急,测试环境等着用,部门同事再三提示下,我还是不知道他们说的那个参数---LOCAL_LISTENER,这个就是引起这次数据库连接不上的罪魁祸首,导师一下就解决了👍!

我把生产的服务名拿到测试库注册了,导致测试库没有对外提供网络连接,只能通过本地访问数据库,通过将LOCAL_LISTENER该参数重置成默认参数、置空或者修改测试库的服务名就解决了,总之就是使测试库对外提供网络连接,但上面的问题还存在一个非常大的安全隐患,下面细说

3. 事后回顾

今天这个任务的流程是这样的:停库 ---> BCV同步测试数据 ---> 起库,1、3步骤是需要DBA配合来做的,因为是从其他库同步过来的数据,再数据库启动阶段Oracle会做一个数据库启动验证,其实就是对比各个文件数据是否一致,是否需要恢复,首先Oracle启动时会检查数据文件头中的checkpoint cnt是否与对应控制文件中的checkpoint cnt一致,如果一致,进行第二次检查,数据文件头的开始scn和对应控制文件中的结束scn是否一致,如果结束scn等于开始scn,则不需要要对那个文件进行恢复,没问题启动数据库。

我拿其中一部分操作步骤来说今天这次事故发生的原因:

刚刚从生产同步过来的测试库,需要经历启动验证这个阶段,回过来,数据库起库三阶段,

  1. 加载参数文件 --》startup nomount

  2. 加载控制文件 --》startup mount

  3. 加载数据文件等所有文件--》startup (打开到open)

同步过来的测试库可能有日志文件不一致,先以RESETLOGS方式起库

扩展一:Resetlogs  NoResetlogs 的区别

alter database open RESETLOGS;

找到测试库控制文件位置,在后面的参数文件修改成本库的

show parameter control_files

重点来了,关库,去同步的生产库创建一份参数文件:

cr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeBe@r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值