Oracle连接问题实例分析

分类:编程技术 时间:2024-02-20 16:20 浏览:0 评论:0
0
今天给大家分享一些Oracle连接问题实例分析相关的知识点。内容详细,逻辑清晰。相信大多数人对这方面的知识还不太了解,所以分享这篇文章供大家参考。我希望你能读完它。看完这篇文章有一些收获,我们一起来了解一下。

我们知道Oracle启动时,fork进程会根据ORACLE_SID创建相关的后台进程。在Unix和Linux系统中,ORACLE SID和ORACLE_HOME将被哈希在一起以获得唯一值作为SGA键。

所以我提出了一个非常有趣的问题。同一台服务器上,有多个10g和11g的ORACLE_HOME。可以创建多个同名的 Oracle 实例。如果他们在同一个用户下(比如操作系统用户是oracle)。是否可以创建两个同名的实例?

我想你心里已经有了答案nd。我从另一个角度解释一下。通过一个非常有趣的DG配置问题。

我在使用RMAN的副本构建备用数据库时抛出以下错误。

RMAN> 从活动数据库 nofilenamecheck 复制备用目标数据库;
于 2017-08-03 10:40:42 启动复制数据库
RMAN-03002:复制数据库命令失败于 08/03/2017 10:40:42
RMAN-05501:中止目标数据库的复制
RMAN-06403:无法获取完全授权的会话
RMAN-04006:来自辅助的错误数据库:ORA-01034:ORACLE不可用
ORA-27101:共享内存领域不存在
Linux-x86_64错误:2:没有这样的文件或目录

错误很明显,备库启动,找不到内存结构。

但是实际看数据库流程,没有问题。

我尝试根据服务名称进行连接,以下结果让我感到惊讶。

sqlplus sys@s2Queuedb 作为 sysdba
SQL*Plus:2017 年 8 月 3 日星期四 10:41:53 发布 11.2.0.4.0 版本
版权所有 (c) 1982, 2013,Oracle。保留所有权利。
输入密码:
连接到空闲实例。

问题是什么?实例名称区分大小写吗?我脑子里好像没有。然后我只是尝试在这个窗口中启动它,但没想到居然启动了一个新实例。

SQL> 启动 nomount
ORACLE 实例已启动。
系统全局区域总计 9620525056 字节
固定大小   2261368 字节
可变大小   2248150664 字节
数据库缓冲区 7348420608 字节
重做缓冲区 21692416 字节

您看到同一用户下有两个同名的实例。

$ ps -ef|grep smon|grep -v grep
oracle43259 1 0 10:39 ? 00:00:00 ora_smon_Queuedb
oracle 43337 1 0 10:44? 00:00:00 ora_smon_Queuedb

当你到达这里时,不要认为这是bug,不要认为之前这些基础知识都不起作用。我们来整理一下思路。

首先,ORACLE_SID是统一的、相同的,区别在于ORACLE_HOME。我只安装了一个版本的这个数据库环境,所以并没有多个ORACLE_HOME,所以这个问题让我很纠结。我们继续看ORACLE_HOME的情况,检查环境变量的值。

$ cat /proc/43259/environ |xargs -0 -n1 |grep ORACLE_HOME
ORACLE_HOME=/U01/app/oracle/product/11.2.0.4

查看另一个实例的 ORACLE_HOME 变量的值。

$ cat /proc/43337/environ |xargs -0 -n1 |grep ORACLE_HOME
ORACLE_HOME=/home/U01/app/oracle/product/11.2.0.4

当我们到达这里时,我们似乎有了线索。原来ORACLE_HOME不一样。

这里的问题还是有点奇怪,因为/home/U01和/U01指向同一个目录。它们代表的东西是一样的。

lrwxrwxrwx 1 root root 9 Aug 1 17:53 U01 -> /home/U0

这个问题应该这样解释。我们继续思考关于它。当我们在RMAN中使用duplicate时,我们使用TNS连接模式,连接本地实例时TNS连接指向另一个实例(尽管一开始这个实例并不存在),那么本地连接配置其实还是在listener中.ora。

打开静态注册内容,一目了然。

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = Queuedb)
(ORACLE_HOME = /home/U01/app/oracle/product/ 11.2.0.4)
(SID_NAME = Queuedb)
)
)

所以理解了这个问题之后,我们就可以换个思路,想一下有什么场景可以发扬光大此功能。 ,在某些特定场景中扮演神助攻的角色。

至少在之前的数据迁移中,我使用了多个版本的ORACLE_HOME来在同一台服务器的多个实例之间进行切换,这样可以大大提高数据迁移的效率。

以上就是《Oracle连接问题实例分析》一文的全部内容。感谢您的阅读!相信大家看完这篇文章都会有所收获。小编每天都会为您更新不同的知识。如果您想了解更多知识,请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Oracle连接问题实例分析

用户评论