两个数据访问受限的问题

简介:     最近几天实在忙得厉害,处理了各种数据需求,有种顾及不来,而其中有一部分问题是和数据访问相关的,问题的原因很简单,但是分析问题的过程就需要很多的经验,推导,比如下面的两个案例。

    最近几天实在忙得厉害,处理了各种数据需求,有种顾及不来,而其中有一部分问题是和数据访问相关的,问题的原因很简单,但是分析问题的过程就需要很多的经验,推导,比如下面的两个案例。

   第一个是开发同学反馈,连接数据库的时候报出了下面的错误。

  第一个错误是:

ORA-12154: TNS:could not resolve the connect identifier specified

  第二个错误是:
ORA-12170: TNS:Connect timeout occurred连接10.129.xx..51 

如果直接看这个错误,可能没有思路,第一个错误明显是网络配置的问题,但是我查看了网络的配置,本机的网络服务都是正常的,另外需要说明一下,这是一套迁移的环境。

第二个问题看起来是网络超时,可能是网络情况不好,或者访问网络的权限限制。

同时我查看了防火墙的配置,该有的IP信息都有了。

到底是哪里出了问题呢,和开发的同学聊,他的回答让我有些诧异,

    访问数据的时候就报这个
    这个连接串没问题
    查询请求可以执行
    但是insert 的时候就报错了

看到这里,我脑海里就有了大概的思路了,这很可能是DB link的问题,而上面的两个错误很可能就是访问的两个DB link,是访问失败的两个问题,一个是目标环境的监听服务有问题,另外一个是防火墙的权限问题。明白了问题修复起来分分钟就能搞定,但是分析排查还是花了些时间。

第二个是一个数据访问报错,业务同学反馈,一台搬迁的服务器修改了IP之后,他们连接应用的时候抛出了下面的错误,

[show] java.sql.SQLException: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
 

看到这个错误,很明显是数据库实例出了问题,要么就是连接的数据库信息有误。

和业务同学反馈确认,他们的反馈是IP信息没有问题,我这边的权限信息也没有问题,经过了多方排查,还是没有进展,这时候我们就换一个角度来看,因为涉及到的系统是一个整体,可能包含很多子系统,所以不能完全依赖于已得到的信息,但是他们稍后反馈另一个业务出现了问题,带着疑问查看了他们的数据服务,发现这台数据库已经宕机了,错误日志如下:

PMON (ospid: 4354): terminating the instance due to error 471
System state dump requested by (instance=1, osid=4354 (PMON)), summary=[abnormal instance termination].
System State dumped to trace file /U01/app/oracle/diag/rdbms/csdb/csdb/trace/csdb_diag_4364.trc
Instance terminated by PMON, pid = 4354
可以看到是pmon终止了实例,而00471的错误是DBWR终止,

$ oerr ora 00471
00471, 00000, "DBWR process terminated with error"
// *Cause:  The database writer process died
到了这里,可以基本得到一个结论,这是一个异常宕机,而不是计划中的维护。我没有着急把数据库先启动,而是启动到了nomount状态,尝试看看有什么信息,错误的原因其实很简单,就是系统资源设置不足导致,比如memlock,可以通过启动的错误日志看出。

Starting ORACLE instance (normal)
Memlock limit too small: 65536 to accommodate segment size: 402653184

明白了问题之后,调整起来修很轻松了,这方面的信息也可以通过/proc/xxx/limits来查看





目录
相关文章
|
3月前
|
存储 监控 Linux
充分利用服务器的磁盘资源,提高系统的稳定性和可维护性
充分利用服务器的磁盘资源,提高系统的稳定性和可维护性
52 0
|
8月前
|
数据采集 API 数据库
如何解决访问速度受限问题
如何解决访问速度受限问题
128 6
|
存储 SQL 缓存
如何在高性能的前提下,降低数据库存储成本?
如何在高性能的前提下,降低数据库存储成本?
300 0
如何在高性能的前提下,降低数据库存储成本?
EMQ
|
存储 监控 JavaScript
桌面客户端性能提升,优化使用资源消耗
近期我们发布了1.9.1-beta.1版本:主要优化了MQTT X桌面端使用时的部分性能问题,优化数据存储方式,并在MQTT X CLI中加入自动重连功能。
EMQ
147 0
桌面客户端性能提升,优化使用资源消耗
|
资源调度 安全 Linux
安全与性能隔离|学习笔记
快速学习安全与性能隔离
|
缓存 Java
性能优化之@Contended减少伪共享
说到伪共享,就要说CPU缓存,我们程序执行时候信息会被保存到CPU缓存中 而这些缓存中的数据可能被多线程访问,假如一个线程还没处理完,另外一个线程 就对数据进行了修改,就会导致上一个线程发生幻读的情况,比如刚才看到a=1,然后准备a = a+1。 但是还没做,另外一个线程就先将a变成2了。导致了上一个线程计算后本来应该是a = 1 + 1,变成了a = 2 + 1 计算结果就不对了。
469 0
|
缓存 监控 Linux
CPU 隔离:管理和权衡
SUSE Labs 团队探索了 Kernel CPU 隔离及其核心组件之一:Full Dynticks(或 Nohz Full),并撰写了本系列文章..
372 0
CPU 隔离:管理和权衡
|
存储 缓存 监控
【高并发】在高并发环境下该如何构建应用级缓存?
随着我们的系统负载越来越高,系统的性能就会有所下降,此时,我们可以很自然地想到使用缓存来解决数据读写性能低下的问题。但是,立志成为资深架构师的你,是否能够在高并发环境下合理并且高效的构建应用级缓存呢?
270 0
【高并发】在高并发环境下该如何构建应用级缓存?