我需要连接到一个外部数据库,从那里复制数据到我的表。我有这个外部数据库的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/";