AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1092071
Accepted
js1018
js1018
Asked: 2022-02-02 04:11:02 +0800 CST2022-02-02 04:11:02 +0800 CST 2022-02-02 04:11:02 +0800 CST

SQL Developer PL/SQL 脚本在运行一定时间后无法通过 OpenVPN 显示输出

  • 772

问题:

当我尝试在我的 Oracle 19c 数据库上通过 OpenVPN 运行收集统计信息时,如果运行超过一定时间,SQL Developer 不会返回典型的“PL/SQL 过程已成功完成”消息。

显然,连接会在一段时间后挂起,我要么需要断开与 OpenVPN 的连接,要么需要在 Windows 任务管理器中杀死 SQL Developer 以关闭它。

我的 Oracle 19c 数据库和 OpenVPN 服务器位于不同的云提供商上。

在此数据库上运行收集统计信息通常需要大约半小时。

在 SQL Developer 上运行收集统计信息命令

我检查了什么:

  1. OpenVPN 服务器上的 Iptables 和 OpenVPN 日志或 Oracle 19c 服务器上的侦听器和警报日志上没有任何异常。

  2. net.ipv4.tcp_keepalive_time 和 net.netfilter.nf_conntrack_tcp_timeout_established 在两台机器上都设置为它们的默认值 7200(2 小时)和 432000(5 天)。

  3. 如果我以系统身份连接到数据库并运行:

    选择 x.sid, x.serial#, x.username, x.status, x.osuser, x.machine, x.program, x.event, x.state, sql.sql_text from v$sqlarea sql, v$session x 其中 x.sql_hash_value = sql.hash_value 和 x.sql_address = sql.address 和 x.username = 'myuser';

大约半小时后,我注意到收集统计信息的会话处于非活动状态。所以我假设收集统计信息确实运行并成功完成,但只是不返回上述输出消息。

收集在数据库上运行的统计信息

大约半小时后收集统计信息会话处于非活动状态

我尝试了什么:

  1. 在同一实例中的较小数据库上,通过 OpenVPN 运行收集统计信息会返回上述成功消息。这个大约需要 10 分钟。

  2. 通过将我的 IP 地址添加到云提供商的防火墙并运行收集统计信息来直接(不使用 OpenVPN)连接到数据库也会返回上述成功消息。

  3. 在 Oracle 19c 服务器上生成 SSH 公钥/私钥对并在 SQL Developer 上使用 SSH 主机,但连接非常不稳定/总是在重置。

  4. 设置 Dante 代理服务器。显然,SQL Developer 只能使用某种特殊的代理服务器。

  5. 使用 StrongSwan 设置 IPSEC VPN。由于某种原因,我的 Windows 10 无法与其建立连接。

openvpn oracle sqldeveloper
  • 1 1 个回答
  • 79 Views

1 个回答

  • Voted
  1. Best Answer
    js1018
    2022-02-05T06:16:37+08:002022-02-05T06:16:37+08:00

    首先,我能够通过运行确认收集统计信息确实成功完成:

    select * from v$session_longops where opname like '%Schema%' order by start_time desc;
    

    之后,我在两台服务器上运行了以下 tcpdump 命令:

    tcpdump -i eth0 -A "(src <myipaddress> or src <myoracle19caddress> or dst <myipaddress> or dst <myoracle19caddress>) and not port ssh and not port openvpn and not icmp" (OpenVPN Server)
    
    tcpdump -i eth0 -A "(src <myipaddress> or src <myopenvpnserveraddress> or dst <myipaddress> or dst <myopenvpnserveraddress>) and not port ssh and not icmp" (Oracle 19c Server)
    

    并发现 Oracle 19c 服务器确实发送了成功消息,但 OpenVPN 服务器从未收到它。

    在各个站点上进行了一些挖掘之后,我发现我误解了 net.ipv4.tcp_keepalive_time 的实际作用。

    这意味着 [默认] keepalive 例程 在发送第一个 keepalive 探测之前等待两个小时(7200 秒) ,然后每 75 秒重新发送一次。

    之后,我发现了托管 OpenVPN 服务器的云提供商的网络配置。

    空闲连接

    [...] 对具有连接概念的 IP 协议实施 10 分钟的连接跟踪。这意味着只要在过去 10 分钟内为该连接发送或接收了至少一个数据包,就允许与已建立的连接关联的入站数据包。如果 10 分钟或更长时间没有发送或接收连接的数据包,则删除空闲连接的跟踪条目。在连接的跟踪条目被删除后,[...] 在至少发送一个新的出站数据包之前不允许额外的入站数据包。此连接跟踪适用于所有源和目标 - 内部和外部 IP 地址。

    有了这些新信息,我通过在 Oracle 19c 服务器上运行以下命令将 keepalive 时间设置为小于 10 分钟的值,从而绕过了这个限制:

    sysctl -w net.ipv4.tcp_keepalive_time=300 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
    

    并通过将它们保存到 /etc/sysctl.conf 使这些更改永久化。

    最后,SQL Developer 收到成功消息并关闭连接。

    • 0

相关问题

  • OpenVPN:在哪里生成私钥?

  • 将 iPhone 连接到 OpenVPN

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • 最好的点对点 VPN?

  • 通过 VPN 使您的打印机可用的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve