我在同一个子网上有两个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状态'输出中)。
当你在同一个子网上有集群时,你会做什么? 有什么特别的,我应该configuration? 我一直在阅读,我想我应该给他们不同的服务名称。 你dbas同意吗? (我目前正在试图找出如何在11g上做到这一点)
有没有办法强制SQLPLUS只连接到本地实例?
我的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))