首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle 8客户端上使用Oracle 12c数据库(扫描)

在Oracle 8客户端上使用Oracle 12c数据库(扫描)
EN

Database Administration用户
提问于 2015-07-09 12:42:12
回答 1查看 829关注 0票数 3

我已经成功地使用Oracle 8客户端连接到我的12c数据库。连接是基于在tnsnames.ora中使用数据库扫描作为主机.

DNS中有3个IP地址可供扫描.

然而,我在oracle文档中看到:

如果使用预11g版本2客户端(Oracle数据库11g发行版或Oracle数据库10g Rel )。2,或更早)你不会从扫描的优势中完全受益。原因: Oracle客户端将无法处理DNS扫描返回的三组IP。因此,它将尝试连接到列表中返回的第一个地址,并且或多或少地忽略其他地址。如果监听此特定IP的扫描侦听器不可用或IP本身不可用,则连接将失败。为了确保负载平衡和连接故障转移与预11g版本2客户端,您将需要更改客户端的TNSNAMES.ora,以便它将使用3个地址行,其中每一个地址线解析为一个扫描贵宾。

尽管我的应用程序正在连接...so,但它可能没有最优地运行,并且只使用扫描中的一个IP地址。

我的问题是:

是什么原因导致监听此IP的扫描侦听器不可用?发生这种事的可能性有多大?

是什么导致扫描IP不可用?发生这种事的可能性有多大?

EN

回答 1

Database Administration用户

发布于 2021-11-16 00:13:21

你引用的是甲骨文白皮书甲骨文(甲骨文单一客户端访问名称(扫描),2013年年6月,第12p页。如果在DNS服务器上为扫描侦听器配置了一个循环系统中的三个地址,那么如果Oracle客户端通过DNS服务器解析名称,它将以随机顺序获得这三个地址。它将使用其中一个地址启动到数据库服务器的连接,如果不能工作,它将失败到另一个地址,如果这个地址仍然无法工作,它将尝试第三个地址。如果这也失败了,它就会放弃。但这只适用于11.2或更高的客户端。老客户端将只尝试第一个IP地址。如果这不起作用,它就会立即放弃。但是,如果您强制客户端再次连接,它可能以不同的顺序获得三重IP地址,如果第一个IP地址是工作的,它可能会成功。

如果以以下方式定义连接字符串,则可以克服此问题(本例来自上面引用的Oracle文档)

代码语言:javascript
复制
sales.example.com =(DESCRIPTION=
(ADDRESS_LIST= (LOAD_BALANCE=on)(FAILOVER=ON)
(ADDRESS=(PROTOCOL=tcp)(HOST=133.22.67.192)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=133.22.67.193)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=133.22.67.194)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME= salesservice.example.com)))

"LOAD_BALANCE=on“意味着客户端将随机选择一个IP地址,以连接到数据库扫描侦听器。"FAILOVER=ON“意味着,如果连接失败,客户端也会尝试其他地址。

客户端不知道哪个数据库承载了扫描侦听器地址。但是他不需要这些信息,因为所有的扫描lsitener都对集群的服务有相同的知识,而扫描侦听器将把客户机转发到适当的本地侦听器,最后客户端将连接到相应节点的本地侦听器。

如果侦听器没有在扫描侦听器地址上运行(这种情况很少发生),这将不会对已经连接到数据库的客户端产生影响。它可能只会影响到客户端,这些客户端现在就想以上述方式进行连接。

无法到达扫描侦听器IP的原因可能是您将其切换到不同的hos,或者您因任何原因重新启动它,或者它崩溃或无法为群集打开。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/106446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档