【问题标题】:DBeaver+Oracle: Turn Off IP to Hostname ResolutionDBeaver+Oracle:关闭IP到主机名解析
【发布时间】:2021-04-12 11:58:18
【问题描述】:

由于某些奇怪的原因,带有 Oracle 驱动程序 12.2.0.1 的 DBeaver 21.0.2 似乎将配置的 IP 地址作为主机,将其转换为主机名,然后使用该主机名进一步连接到数据库。

这显然是不希望的,因为我从外部工作场所访问该数据库并且所有额外的网络都在 IP 地址上进行,这显然是我要走的路。

更奇怪的是,该解决方案似乎发生在连接建立之后。我的意思是我有一次在服务名称中有一个拼写错误,而我得到了 ORA-12514。一旦我修正了那个错字,我就回到了主机名解析问题,它没有 ORA 编号。所以这可能是 DBeaver 中的东西。

DBeaver 的错误协议:

java.net.UnknownHostException: myunknowndbhost.sjngm.com
    at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(Unknown Source)
    at java.base/java.net.InetAddress.getAddressesFromNameService(Unknown Source)
    at java.base/java.net.InetAddress$NameServiceAddresses.get(Unknown Source)
    at java.base/java.net.InetAddress.getAllByName0(Unknown Source)
    at java.base/java.net.InetAddress.getAllByName(Unknown Source)
    at java.base/java.net.InetAddress.getAllByName(Unknown Source)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:126)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:161)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:639)
    at oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:189)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:317)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.lambda$0(JDBCDataSource.java:176)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:195)
    at org.jkiss.dbeaver.ext.oracle.model.OracleDataSource.openConnection(OracleDataSource.java:150)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:101)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.initializeMainContext(JDBCRemoteInstance.java:100)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.<init>(JDBCRemoteInstance.java:59)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:109)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:97)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:89)
    at org.jkiss.dbeaver.ext.oracle.model.OracleDataSource.<init>(OracleDataSource.java:84)
    at org.jkiss.dbeaver.ext.oracle.OracleDataSourceProvider.openDataSource(OracleDataSourceProvider.java:147)
    at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:896)
    at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
    at org.jkiss.dbeaver.runtime.jobs.ConnectionTestJob.run(ConnectionTestJob.java:103)
    at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

所以问题是:如何关闭此主机名解析?

【问题讨论】:

    标签: oracle dbeaver


    【解决方案1】:

    这可能是 Oracle 客户端行为...在用户身份验证期间,所有 Oracle 数据库客户端都需要向服务器报告“MACHINE”变量,描述客户端的主机名/IP - 这是machine 列中报告的内容v$session 数据库视图。而且我认为 JDBC 瘦客户端会在必要时进行反向 DNS 查找以尝试填充该变量。

    您可以尝试在DBeaver中设置v$session.machineOracleConnection Property...,编辑您的连接,在连接设置页面点击“编辑驱动程序设置”,点击“驱动程序属性”选项卡,并添加一个名为@的新属性987654326@ 使用您想要的任何名称作为值。

    或者您可以尝试将ORACLE_HOSTNAME 环境变量设置为您的主机名。我不清楚这是否会被 Oracle JDBC 驱动程序接收,但this documentation 可能暗示它可以提供帮助?

    您也可以尝试在 HOSTS 文件中为您的 IP 地址添加主机名。这似乎是最有可能解决此问题的方法,但实施起来却是最烦人的选择。

    【讨论】:

    • 我试过你的第二段,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2013-03-25
    • 2016-07-05
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多