如何在同一子网上处理具有相同SID的Oracle安装?

我在同一个子网上有两个Oracle RAC集群。 对于这个讨论,我们假设一个是QA集群,另一个是DEV集群。 它们都在RedHat Enterprise Linux 5,64位上运行。

它们configuration相同,所以它们都有一个名为“MyInstance”的实例,并具有相同的用户(包括系统和数据库),密码以及所有内容。

使用:

oracle @ QA1> sqlplus -S用户/密码@my_sql_file

实际上对DEV实例运行my_sql_file.sql,即使我在QA1服务器上。 我可以尝试这样的:

oracle @ QA1> sqlplus -S用户名/密码@ QA1 / MyInstance @my_sql_file

但是这给了我关于目标主机或对象不存在的错误(QA1在我的主机文件中,MyInstance在我的'lsnrctl状态'输出中)。

  1. 当你在同一个子网上有集群时,你会做什么? 有什么特别的,我应该configuration? 我一直在阅读,我想我应该给他们不同的服务名称。 你dbas同意吗? (我目前正在试图找出如何在11g上做到这一点)

  2. 有没有办法强制SQLPLUS只连接到本地实例?

  3. 我的SID或Listeners是否需要以任何特殊方式进行configuration,以允许SQLPLUS的用户/密码@ host / sid连接正常工作? 现在它不。

你所描述的是一个非常常见的情况。 通常你会有一个相互匹配的Beta,Dev和Production环境。 你只需要编辑你的tnsdames文件。 看下面的例子

# Generated by Oracle configuration tools. 

QA =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = computer.somedomain.com)(PORT = 1521)))(CONNECT_DATA =(sid = samesid))

DEV =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST =“computer2.somedomain.com”)(PORT = 1521)))(CONNECT_DATA =(sid = samesid))