背景

由于安全原因,公司网络做了限制,必须通过代理才能连接数据库。
代理有两种方式,一种是动态代理,一种是端口转发,本文描述在基于socks动态代理下,DBeaver无法访问数据库的问题现象以及分析、解决。
在Dbeaver中创建Oracle连接时,设置了代理,如下:

其中的proxy.com是基于hosts文件配置的解析。
在DBeaver中通过socks代理访问Oracle数据库失败,报错信息如下:

由于通过socks连接数据库对我来说是刚需,所以这个问题需要快速解决。

问题分析

首先检查socks端口是否通畅,通过telnet proxy.com 1080发现没有问题。
于是打开wireshark,通过tcp.port == 1080监听1080端口,然后再通过DBeaver连接数据库,发现没有数据包,到此得出初步结论:
通过DBeaver连接Oracle数据库,即使设置有socks连接配置,但是在实际连接时也不会走代理服务器。
通过Google搜索,找到了原因:https://support.oracle.com/knowledge/Middleware/2589708_1.html

意思是jdbc驱动从12.2版本开始,不支持socks代理,即使设置了socks代理最终也没有效果。
Dbeaver是通过Java语言开发的程序,其连接数据库也是通过jdbc去连接,如果jdbc本身不支持代理,那么即使设置了代理也没有意义。

解决方案

定位到问题后开始尝试解决,第一次使用DBeaver连接Oracle时会自动下载驱动,通过DBeaver中的驱动管理可以看到,下载的驱动版本是12.2.0.1,正好在受影响的版本范围内。

知道原因,解决起来就方便多了,继续搜索,在stackoverflow中找到如下参数:oracle.jdbc.javaNetNio=false
地址如下:https://stackoverflow.com/questions/49357985/does-oracle-jdbc-driver-support-socks5-proxy
从字面意思看,通过该参数,可以限制oracle驱动使用Nio。
于是在DBeaver中设置自定义驱动属性,完成后问题解决。

DBeaver中Oracle连接使用socks代理相关推荐

  1. 使用 SecureCRT ®安全外壳连接作为 SOCKS 代理丨使用教程

    有时需要访问位于单个网关服务器后面的远程网络中的许多设备.一种解决方案是与网关服务器建立 SSH 连接,然后通过远程外壳从该服务器向每个设备发出另一个 SSH 连接.这可能是有问题且耗时的,尤其是在需 ...

  2. java 关闭oracle连接_Java应用中Oracle连接不关闭

    在一些不使用连接池的较老的Java Web应用程序中,我有一个连接泄漏. 查找泄漏很困难,因为它不会授予我访问v$session的权限 SELECT Count(*) FROM v$session; ...

  3. c 中oracle连接字符串,Oracle连接字符串C#

    Netty入门学习 一.他山之石 Netty实现原理浅析 http://www.importnew.com/15656.html netty线程模型 http://www.infoq.com/cn/a ...

  4. 使用ssh正向连接、反向连接、做socks代理的方法

    文章出处:http://dzmailbox.blog.163.com/blog/static/120534385201232642637847/ 最近才发现ssh有多么的强大! 在网上搜了半天,发现大 ...

  5. MobaXterm的SOCKS代理连接与bitvise client 软件的C2S与S2C连接

    1.MobaXterm的SOCKS代理连接的一种使用场景 远程两台Linux服务器,外网服务器和内网服务器,外网服务器有内外网ip,内网服务器不提供外网ip 外网服务器外网ip为100.100.100 ...

  6. 在64位的环境中使用VS建立Web项目进行Oracle连接需要注意WebDev是32位的

    我们平时使用的都是32位的机器进行开发,装的都是32位的软件,但是我们的服务器一般都是64位的,所以有时也需要在64位的环境下装一个VS调试程序.最近遇到的一个问题就是一个同事换了一个电脑,用的是X6 ...

  7. oracle 尚未从池中获取连接,解决一个问题的思路 之“解决已经写满con.close() 仍然出现但是尚未从池中获取连接的连接池耗尽问题”...

    这篇文章主要写解决一个网上答案不能解决自己问题的时候,解决问题的整个流程, 如果大家觉得这个没价值,还请管理员帮忙撤销发首页 先谢谢各位了. 一年前帮学校做了一个就业信息管理系统, 当时图热闹,觉得虽 ...

  8. python socks代理_Python中使用socks5设置全局代理的方法示例

    0x01介绍 PySocks使您可以通过SOCKS和HTTP代理服务器发送流量.它是SocksiPy的现代分支,具有错误修复和其他功能. 0x02 安装 λ pip3 install Pysocks ...

  9. vs2008 64位 如何连接64位oracle,vs2008中如何连接服务器上Oracle实例?

    vs2008中如何连接服务器上Oracle实例? 本地机器tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = f ...

最新文章

  1. Winform窗体应用程序的自动更新功能
  2. python数组文件_python数组
  3. 人事面试的那些问题及背后的考察点
  4. c语言数学语文英语成绩编程,急求一编程题!…
  5. c需要实现安装卸载Linux模块,Linux内核模块编译与加载
  6. Java快逸报表展现demo_快逸报表展示图片—来自本地/网络的图片
  7. 微软surface屏幕测试软件,Soomal作品 - Microsoft 微软 Surface Book 笔记本电脑屏幕测评报告和色彩校正 [Soomal]...
  8. 【干货分享】花坊类字体设计思路
  9. 思岚S2激光雷达2—SDK和实例程序的编译
  10. [转载]AlphaGo 的棋局,与人工智能有关,与人生无关
  11. flask+pytorch部署深度学习(图像识别)项目
  12. LabVIEW在模拟输入通道上同时使用差动(Differential)和RSE(ReferencedSingle Ended)作读取
  13. linux踢人命令 pkill踢人用法
  14. html的入门——从标签开始(2)
  15. 用Matlab进行快速傅里叶变换
  16. 服务器安装安卓模拟器_雷电模拟器、夜神模拟器、MUMU、逍遥、蓝叠和腾讯手游助手大对比...
  17. 【C语言】c语言中的数组和字符串
  18. Android自定义library上传到JitPack
  19. 细细品味Ubuntu Scope中的category renderer模版
  20. 自动控制原理2.2---控制系统的复数域数学模型

热门文章

  1. 计算机辅助英语怎么说,计算机辅助教学英文缩写、计算机辅助教学英语怎么读?...
  2. labview多线程
  3. 《月亮与六便士》阅读笔记
  4. python 数字转十六进制_405. 数字转换为十六进制数(Python)
  5. 齐向东:数字贸易没有“数字海关” 经营者要“自证清白”
  6. docker第五期 DockerFile讲解
  7. 计算机网络中时延计算题,计算机网络复习题参考解答
  8. quartusⅡ下载安装fpga
  9. 跑DRC 验证出现specify layout cell报错
  10. Ribbon和Nginx的区别