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

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

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2017-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    通常在当前控制文件丢失,或者当前的控制文件与需要恢复的控制文件不一致的情况下,我们需要重新创建一个控制文件或者使用 unsing backup cont...

902
来自专栏瓜大三哥

双口同步RAM

具有两套地址总线,一套用于读数据,一套用于写数据,二者可分别独立操作。下面给出一个128× 8 位双口RAM 的Verilog HDL 设计实例。 modul...

1979
来自专栏AILearning

Apache Zeppelin 中 JDBC通用 解释器

概述 JDBC解释器允许您无缝地创建到任何数据源的JDBC连接。 在运行每个语句后,将立即应用插入,更新和升级。 到目前为止,已经通过以下测试: ...

3227
来自专栏bboysoul

如何黑入安卓手机(ezsploit)

安装很简单clone git clone https://github.com/rand0m1ze/ezsploit.git cd ezsploit ch...

1372
来自专栏沃趣科技

ASM 翻译系列第三十六弹:ACFS磁盘组的重平衡操作

原作者:Bane Radulovic 译者: 魏兴华 审核: 魏兴华 DBGeeK社区联合出品 原文链接:http://asmsupportguy....

36211
来自专栏乐沙弥的世界

配置共享服务器模式

两者完成相同的任务,即处理所有指定的SQL操作。假定从客户端提交一个任意查询(DQL)到数据库服务器不论是专用模式还是共享

2373
来自专栏Java学习123

未完全关闭数据库导致ORA-01012: not logged的解决

4397
来自专栏乐沙弥的世界

添加非oracle用户到dba, oinstall组

    oracle用户所拥有的权限比较大,因此有些时候需要使用非oracle用户来完成相关数据库管理工作。尤其是多个人维护系统或数据库时,有必要为其添加不同的...

1234
来自专栏Netkiller

PHP高级编程之守护进程

PHP高级编程之守护进程 http://netkiller.github.io/journal/php.daemon.html 摘要 2014-09-01 发表...

3877
来自专栏Android干货

Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

3407

扫码关注云+社区

领取腾讯云代金券