嘿,我真的在试图弄清楚如何连接到远程Oracle测试DB,而我没有Java的经验。因此,如果我能得到您的帮助,我将永远感激不尽。
我有一个我要连接到的远程测试数据库,并且与旧样式SID具有JDBC连接。根据此链接:https://github.com/oracle/node-oracledb/blob/blob/master/doc/pi.md#notjdbc,我应该创建一个tnsnames.ora文件以放入连接,就像这样:
tnsnames.ora:
appDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA =
(SID = ORCL)
)
)
然后我应该在我的node server.js文件中引用它,就像so
一样server.js:
const oracledb = require('oracledb');
oracledb.getConnection(
{
user : process.env.ORACLE_USER,
password : process.env.ORACLE_PASSWORD,
connectString : "appDB"
},
function(err, connection)
{
if (err) {
console.error(err.message);
return;
}
connection.execute(
"SELECT * " +
"FROM BOS_course",
function(err, result)
{
if (err) {
console.error(err.message);
doRelease(connection);
return;
}
console.log(result.rows);
doRelease(connection);
});
});
module.exports = {
oracledb
};
但是,我不知道我应该在哪里放置tnsnames.ora文件。我在网上找到了此链接$ORACLE_HOME/network/admin
,但我不知道它指的是什么。我对数据库的访问只有有限。原谅我的爪哇无知。如何在我的节点应用程序中使用此连接,该应用程序与数据库完全分开?我的应用如何知道什么是" appdb"以及如何在tnsnames.ora文件中找到它?
预先感谢!
将完整的连接地址放在连接串变量
中 {
user : process.env.ORACLE_USER,
password : process.env.ORACLE_PASSWORD,
connectString : "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))(CONNECT_DATA =(SID= ORCL)))"
}
在技术上回答问题,设置环境变量TNS_ADMIN
。然后Node-oracledB(以及其他基于OCI的语言API,例如Python CX_oracle,PHP OCI8,Ruby Ruby-Oci8等(将寻找$TNS_ADMIN/tnsnames.ora
。
我也有一个类似的情况,即我在Azure上有两个VM。一个用于Oracle12c db,另一个用于Nodejs OracledB软件包,带有Oracle客户端库。这是我的连接字符串从客户端端连接到远程DB。
module.exports = {
user : process.env.NODE_ORACLEDB_USER || "hr",
password : process.env.NODE_ORACLEDB_PASSWORD || "welcome",
connectString : process.env.LOCAL || "myipaddress:1521/servicename",
};