Oracle Net 12c DCD (Dead Connection Detection ) 功能的改变 (Doc ID 2403921.1)

0    28    1

Tags:

👉 本文共约1042个字,系统预计阅读时间或需4分钟。

Oracle Net 12c: DCD (Dead Connection Detection ) 功能的改变 (Doc ID 2403921.1)

适用于:

Oracle Net Services - 版本 12.1.0.2 到 12.2.0.1 [发行版 12.1 到 12.2]
本文档所含信息适用于所有平台

用途

本文档描述了在 12.1 版本上 DCD 功能的改变以及新的实现方式。

详细信息

之前 DCD 的实现方式使用 TNS 包并且依赖于底层的 TCP 发送失败。TCP 层需要重新发送以及传输探测包 – 导致一个断开的操作可能需要几分钟。而 DCD 新的实现方式使用了 KEEPALIVE 选项。

操作系统的 TCP keepalive 有3个参数(这是 Linux 参数,当然其它操作系统也有类似的参数)

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

TCP_KEEPALIVE_TIME (发送一个 keepalive 包之前需要等待的时间)
TCP_KEEPCNT (发送几次探测包)
TCP_KEEPINTVL (发送每个 keepalive 包之间的间隙)

现在 sqlnet.ora 的参数 SQLNET.EXPIRE_TIME 会设置 TCP_KEEPALIVE。

如果 sqlnet.expire_time=1,那么 TCP_KEEPALIVE 会被设置为60秒。参数 KEEPINTVL 和 KEEPCNT 会被设置为6和10(这是非常合理的)。这意味着,DCD 的最小值只能设置为2分钟。

Oracle Net 12c  DCD (Dead Connection Detection ) 功能的改变 (Doc ID 2403921.1)

有几种方式可以检测 DCD 是否已经设置。
请注意,除非链接的空闲时间(线缆上没有流量)达到 DCD 设置(SQLNET.EXPIRE_TIME)的2倍,否则 keepalive 包不会被发送。

检测 Oracle 进程的 OS trace(比如 strace)。tcp socket 选项可以确认 TCP Idle Time 已经被设置。这是 Linux 的例子:
setsockopt(19, SOL_TCP, TCP_KEEPALIVE_TIME, [60])
检测 TCP trace(比如 tcpdump 或者 snoop)
如果是通过 Wireshark 检查,可以简单的过滤 for: tcp.analysis.keep_alive
Oracle Net server trace: 查询字符串"ntconbrok"并检查日志

如果当前的 OS 不支持设置 keepalive,那么会使用旧的 DCD 实现方式。

如果,因为某种原因,需要设置旧的 DCD 实现方式(发送10字节的 TNS 数据),那么请在 sqlnet.ora 中设置 USE_NS_PROBES_FOR_DCD=true 。

有时需要在TNS连接串中加入 (ENABLE=BROKEN) 。对于某些平台上的 JDBC Thin, Thick 和 OCI 连接是这样的。

比如 在 (DESCRIPTION= 句子中设置

net_service_name=
(DESCRIPTION=
(ENABLE=BROKEN)
(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=test.us.example.com)
)
)

jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS=(PROTOCOL=tcp)(PORT=1521)(HOST=myhost))(CONNECT_DATA=(SID=)))

参考

Oracle Net 12c: Changes to the Functionality of Dead Connection Detection (DCD) (Doc ID 1591874.1)

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部