DBeaver+;Oracle:关闭IP到主机名的解析

DBeaver+;Oracle:关闭IP到主机名的解析,oracle,dbeaver,Oracle,Dbeaver,出于某种奇怪的原因,带有Oracle驱动程序12.2.0.1的DBeaver 21.0.2似乎将配置的IP地址作为主机,将其转换为主机名,然后使用该主机名进一步连接到数据库 这显然是不希望的,因为我从外部工作场所访问该数据库,而且所有额外的网络都在IP地址上运行,这显然是我的出路 更奇怪的是,这项决议似乎是在建立联系之后作出的。我的意思是,我在服务名称上有一次输入错误,而我得到的是ORA-12514。一旦我纠正了这个错误,我就回到了主机名解析问题上,这个问题没有ORA号。所以这可能是DBeave

出于某种奇怪的原因,带有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)
java.net.UnknownHostException:myunknowndbhost.sjngm.com
位于java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(本机方法)
位于java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(未知源)
位于java.base/java.net.InetAddress.getAddressesFromNameService(未知源)
位于java.base/java.net.InetAddress$NameServiceAddresses.get(未知源)
位于java.base/java.net.InetAddress.getAllByName0(未知源)
位于java.base/java.net.InetAddress.getAllByName(未知源)
位于java.base/java.net.InetAddress.getAllByName(未知源)
位于oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:126)
位于oracle.net.nt.connpoption.connect(connpoption.java:161)
在oracle.net.nt.connstategy.execute(connstategy.java:470)
位于oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521)
位于oracle.net.ns.NSProtocol.buildConnection(NSProtocol.java:660)
位于oracle.net.ns.NSProtocol.buildConnection(NSProtocol.java:639)
位于oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:189)
位于oracle.net.ns.NSProtocol.connect(NSProtocol.java:317)
位于oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)
位于oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
位于org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.lambda$0(JDBCDataSource.java:176)
位于org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:195)
位于org.jkiss.dbeaver.ext.oracle.model.OracleDataSource.openConnection(OracleDataSource.java:150)
位于org.jkiss.dbeaver.model.impl.jdbc.jdbExecutionContext.connect(jdbExecutionContext.java:101)
位于org.jkiss.dbeaver.model.impl.jdbc.jdbRemoteInstance.InitializeMainText(jdbRemoteInstance.java:100)
位于org.jkiss.dbeaver.model.impl.jdbc.jdbcmoteinstance。(jdbcmoteinstance.java:59)
位于org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:109)
位于org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource(JDBCDataSource.java:97)
位于org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource(JDBCDataSource.java:89)
位于org.jkiss.dbeaver.ext.oracle.model.OracleDataSource。(OracleDataSource.java:84)
位于org.jkiss.dbeaver.ext.oracle.OracleDataSourceProvider.openDataSource(OracleDataSourceProvider.java:147)
位于org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:896)
位于org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
位于org.jkiss.dbeaver.runtime.jobs.ConnectionTestJob.run(ConnectionTestJob.java:103)
位于org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105)
位于org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

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

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

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

或者您可以尝试将
ORACLE\u HOSTNAME
环境变量设置为您的主机名。我不清楚这是否会被OracleJDBC驱动程序接受,但可能是暗示它会有所帮助


您还可以尝试在主机文件中添加IP地址的主机名。这似乎是最有可能解决这个问题的方法,但却是最烦人的方法。

我尝试了你的第二段,但没有成功。