最近的几个技术问题总结和答疑(二)(r8笔记第56天)

作者: admin 分类: 公众号存档            0 次浏览 发布时间: 2016-04-01 23:53

公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2016-04-01 23:53:48 · 原文链接

最近积累了几个问题,我就凑在一起做一个统一的答复,微信后台的留言回复超过24小时就无法回复了,有时候看到的时候已经过了时间点了,实在抱歉。
有时候有些朋友是通过qq或者微信来问我问题,有时候运气好能够马上定位,感觉非常侥幸。
今天回答5个小问题。
第一个问题是在昨天晚上准备睡觉前,一个微信好友的提问。说自己的DG备库上启动了两个一模一样的实例,感觉比较奇怪。
当时的截图如下。

一看这个问题,真是运气好,马上就知道原委了,我让他把当前环境变量的ORACLE_HOME提供给我。
然后找到两个PMON的进程的进程号,发给我。
稍作等待,就收到了相应的进程号为5261   5550,其实不一定选用PMON,SMON,LGWR这些进程都可以。
我提供了两个命令,让他把结果发给我。
cat /proc/5261/environ|xargs -0 -n1 |grep ORACLE_HOME
cat /proc/5550/environ|xargs -0 -n1 |grep ORACLE_HOME
收到的结果如下,

仔细看ORACLE_HOME的值就会发现唯一的差别就是末尾的斜杠。
至于原因也非常简单,在Unix,Linux系统中,SID和ORACLE_HOME在一起哈希后会得到一个唯一的值作为SGA的key。当oracle实例启动时,在操作系统上的fork进程会根据Oracle_SID来创建相关后台进程。
在这个例子里面,Oracle认为ORACLE_HOME是不同的,所以才可以启动到nomount状态,但是肯定启动不到mount状态,因为控制文件已经被占用了。

第二个问题是微信中的留言:
有个adg备库问题困扰我很久,正好请教一下,adg备库处于只读打开模式应用归档日志,我们在上面执行包含dblink的复杂查询,查询存在多个本地表 和远程表关联,会报一个这是只读数据库的错,这好像是和通过dblink查远程表会启动一个事务有关,不知道你有没有遇到这样的问题(O_O)?
这个也是运气好,我还真碰到过。而且碰到的例子比他还特殊一些。
使用db link在备库查询,可能会触发这个问题,可以参见MOS  参考链接如下:

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注