问题:
当我尝试在我的 Oracle 19c 数据库上通过 OpenVPN 运行收集统计信息时,如果运行超过一定时间,SQL Developer 不会返回典型的“PL/SQL 过程已成功完成”消息。
显然,连接会在一段时间后挂起,我要么需要断开与 OpenVPN 的连接,要么需要在 Windows 任务管理器中杀死 SQL Developer 以关闭它。
我的 Oracle 19c 数据库和 OpenVPN 服务器位于不同的云提供商上。
在此数据库上运行收集统计信息通常需要大约半小时。
我检查了什么:
OpenVPN 服务器上的 Iptables 和 OpenVPN 日志或 Oracle 19c 服务器上的侦听器和警报日志上没有任何异常。
net.ipv4.tcp_keepalive_time 和 net.netfilter.nf_conntrack_tcp_timeout_established 在两台机器上都设置为它们的默认值 7200(2 小时)和 432000(5 天)。
如果我以系统身份连接到数据库并运行:
选择 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';
大约半小时后,我注意到收集统计信息的会话处于非活动状态。所以我假设收集统计信息确实运行并成功完成,但只是不返回上述输出消息。
我尝试了什么:
在同一实例中的较小数据库上,通过 OpenVPN 运行收集统计信息会返回上述成功消息。这个大约需要 10 分钟。
通过将我的 IP 地址添加到云提供商的防火墙并运行收集统计信息来直接(不使用 OpenVPN)连接到数据库也会返回上述成功消息。
在 Oracle 19c 服务器上生成 SSH 公钥/私钥对并在 SQL Developer 上使用 SSH 主机,但连接非常不稳定/总是在重置。
设置 Dante 代理服务器。显然,SQL Developer 只能使用某种特殊的代理服务器。
使用 StrongSwan 设置 IPSEC VPN。由于某种原因,我的 Windows 10 无法与其建立连接。