通过TNS连接到外部Oracle数据库



我需要连接到一个外部数据库,从那里复制数据到我的表。我有这个外部数据库的TNS文件,我正在尝试使用JDBC进行连接,如下所示:

try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" +
host +
")(PORT=" +
port +
")))(CONNECT_DATA=(SERVICE_NAME=" +
service +
")))",
user,
password);
...

但是当尝试连接时,我得到错误java.net.UnknownHostException(主机无法识别)。我想问题是这是一个内部主机,我无法访问它。如何使用TNS连接到数据库?

您不应该需要完整的TNS文本。以下内容应该足够了

getConnection("jdbc:oracle:thin:myuser/mypass@//"+host+":"+port+"/"+service);

如果您有一个tnsnames。然后,您可以提供TNS别名作为连接字符串的一部分。请确保您尝试使用tnnames .ora中的连接字符串通过sqlplus登录到Oracle数据库。

// dbname_tnsalias - It is the TNS alias present in tnsnames.ora.
// TNS_ADMIN --> Absolute path where tnsnames.ora is present. 
final String DB_URL="jdbc:oracle:thin:@dbname_tnsalias?TNS_ADMIN=/Users/test/";

最新更新