Oracle备库无法连接主库的问题分析

今天在搭建DG的时候碰到了一个蛮有意思的问题,耗费了不少脑细胞,简单记录一下。

首先主库是Queuedb,备库是s2queuedb,使用RMAN的duplicate来搭建,主备库的网络配置listener.ora,tnsnames.ora都没有问题。

但是使用RMAN命令的时候就抛出了下面的错误,从错误信息可以看出来,主库是没有启动起来。

$ rman target sys@Queuedb auxiliary sys@s2queuedb nocatalog
connected to target database: QUEUEDB (not mounted)
using target database control file instead of recovery catalog
auxiliary database Password:
connected to auxiliary database: QUEUEDB (not mounted)

看到这里,心里咯噔一下,难道数据库宕机了?

赶紧连接到主库去看,发现主库的状态都正常,松了一口气,继续在备库看问题的缘由。
在备库端使用TNS的方式连接,抛出了错误,看起来数据库是明显连接到备库了。

$ sqlplus xx/xx@queuedb
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
Process ID: 0
Session ID: 0 Serial number: 0

但是查看tnsping的结果,和主库的输出一致,完全没问题啊。

而换一个思路,直接连备库,因为还没有open,输出肯定是01033的错误。

$ sqlplus xx/xx@s2queuedb
ERROR:
ORA-01033: ORACLE initialization or shutdown in progress
Process ID: 0
Session ID: 0 Serial number: 0

反反复复确认了主机名的配置,暂时都没有发现问题。带着疑惑也对比了ORACLE_HOME,依然无果。

[oracle@s2queuedb admin]$ ps -ef|grep smon
oracle    43186      1  0 11:15 ?        00:00:00 ora_smon_Queuedb
oracle    43277  43064  0 11:28 pts/0    00:00:00 grep smon
$ cat /proc/43188/environ|xargs -0 -n1|grep ORACLE_HOME
ORACLE_HOME=/U01/app/oracle/product/11.2.0.4
$ echo $ORACLE_HOME
/U01/app/oracle/product/11.2.0.4所以说上面的检查就只能到这里了,我们得换个思路来看待这个问题。
既然/etc/hosts里面的配置没问题,主机名Queuedb_ZS.test.com指向主库,tnsping没问题,拿我就使用ping来测试。

$ ping Queuedb_ZS.test.com
PING Queuedb_ZS.test.com (127.0.0.1) 56(84) bytes of data.
64 bytes from Queuedb_ZS.test.com (127.0.0.1): icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from Queuedb_ZS.test.com (127.0.0.1): icmp_seq=2 ttl=64 time=0.008 ms
^C这个结果让我有一种顿悟的感觉,我再次审视/etc/hosts文件的配置。

$ cat /etc/hosts
127.0.0.1   Queuedb_ZS.test.com localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.127.xx.166  Queuedb_ZS.test.com
10.129.xx.190   s2queuedb.test.com

发现竟然在127.0.0.1的地方配置了一个主机名Queuedb_ZS.test.com,这样就会优先去走这个访问路径了,果断删除,再次尝试就没有问题了。

   而如果你删除不得当,直接把127.0.0.1的配置全删除了,那么启动监听肯定会抛出下面的错误。

-bash-4.1$ lsnrctl start LISTENER_1528
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=s3nstatdb.test.com)(PORT=1528)))
TNS-12547: TNS:lost contact
 TNS-12560: TNS:protocol adapter error
  TNS-00517: Lost contact
   Linux Error: 104: Connection reset by peer

所以这些看起来琐碎的配置还是尤其需要注意的。

时间: 2024-09-20 10:47:10

Oracle备库无法连接主库的问题分析的相关文章

Oracle备库TNS连接失败的分析

今天在测试12c的temp_undo的时候,准备在备库上测试一下,突然发现备库使用TNS连接竟然失败. 抛出的错误如下: $ sqlplus sys/oracle@testdb as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 8 15:30:10 2016 Copyright (c) 1982, 2014, Oracle.  All rights reserved. ERROR: ORA-12514: TNS:listen

论oracle备库的设计方案

oracle的ADG那是自不必多说,用存储圈的话说,现在存储正在从被动被动变为主动,但是总体上是被软件抢,RAID被ASM抢,快照被Flashback抢,DR被ADG抢. 如果这几种方案结合在一起那会是什么结果.这就涉及到一个备库的设计方法. 我也是抛砖引玉.环境都是基于11g的dg来说. 首先基本的,一个主库一个备库是很多系统都在采用的备库设计方式,如果数据库比较关键,这种方案有什么缺点呢. 11g的备库现在也被赋予了更多的责任. 容灾,首先就是容灾如果主库挂掉,备库能够进行failover,

备库批量查询失败的原因分析

目前线上有一套环境是10gR2的,采用了一主两备的架构.在其中一个备库上每天凌晨会开放一个窗口运行一些批量的查询,目前使用dg broker会在指定的时间把备库置为read-only,查询完毕之后修改为online状态.但是近几天开发的同事突然找到我说,最近几天开始批量查询会频频报错,希望我帮忙查看一下.语句运行报错,听起来原因应该很简单吧,最大的可能就是备库没有打开,或者是ddl,dml语句之类的.但是看到错误日志,让我着实有些奇怪.错误日志如下,可以看到是一条查询语句. [2016.03.0

一个备库中ORA错误信息的分析

最近也在处理一些遗留的问题,所以对于使用orabbix的报警还是心怀敬畏之心,一方面是我们让它能够做全方位的监控,另一方面也让我发现我们还是存在不少的小问题,小问题虽小,但是放大了,就是大麻烦,甚至数据库事故. 自从上次在社群分享了DB time的抖动案例之后,有不少的朋友似乎对这个工具很感兴趣,我做这个分享的一个主要原因就是希望大家在有些细节中发现问题,至于我分享的问题原因,都是各种各样的小问题,有些朋友也纳闷这种错误似乎还是比较低级的,通过一般的监控都应该解决,但是确实存在,发现了解决了,就

11g备库无法开启ADG的原因分析

今天碰到一个有些奇怪的问题,但是奇怪的现象背后都是有本质的因果. 下午在做一个环境的检查时,发现备库是在mount阶段,这可是一个11gR2的库,没有ADG实在是太浪费了,对于这种情况感觉太不应该了. 所以尝试启动至open阶段,发现状态一直是read only,在ADG中应该是READ ONLY WITH APPLY才对啊. 使用dg broker设置为READ-ONLY,备库的数据库日志如下:      Standby Database:           stestdb3, Enable

Oracle Data Guard学习(4) 在不停主库的情况下创建物理备库

今天需要对一个24*7的生产库创建一个DG的物理备库,要求主库不能停机,一开始以为不可能,后 来查了下文档,原来通过rman的duplicate命令可以实现在线创建物理备库. 主备库的信息如下: 角色      db_name      db_unique_name      主机           网络连接字符串 主库       jkka                jkka                                lx32            jkkapri 备

MySQL“异象”分析:备库的io util比主库重?

同事问了个线上现象:主备机器配置一样,主库上有更新查询,备库设置为主库的从库,没有其他更新和查询压力.但备库的io util比主库的重.本来看主库的压力比较大,想把一部分查询切到备库,一看io这样,不太敢切. 1.原因 这个原因两年前在之前公司碰到过一次,只是现象不同.那个现象描述起来比较复杂,这回刚好借这个现象说明一下. 原因还是从srv_master_thread说起.这个InnoDB后台的主进程一直在循环作各种事情.其中有一个for (i = 0; i < 10; i++) ,循环体每执行

MySQL · 答疑解惑 · 备库Seconds_Behind_Master计算

背景 在mysql主备环境下,主备同步过程如下,主库更新产生binlog, 备库io线程拉取主库binlog生成relay log.备库sql线程执行relay log从而保持和主库同步. 理论上主库有更新时,备库都存在延迟,且延迟时间为备库执行时间+网络传输时间即t4-t2. 那么mysql是怎么来计算备库延迟的? 先来看show slave status中的一些信息,io线程拉取主库binlog的位置: Master_Log_File: mysql-bin.000001 Read_Maste

【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库(一)

[DATAGUARD] 基于同一个主机建立物理备库和逻辑备库(一)      之前发布过一步一步搭建 oracle 11gR2 rac + dg,这里的dg为物理dg,但是实际自己使用过程中发现需要开3个虚拟机,机器特卡,所以决定在同一台机器上再搭建一台物理和逻辑dg. 一步一步搭建 oracle 11gR2 rac + dg 之前传(一) http://blog.itpub.net/26736162/viewspace-1290405/  一步一步搭建oracle 11gR2 rac+dg之环