通过 Oracledb Driver 使用 Nodejs 连接到远程 Oracle DB
Connecting to a remote Oracle DB with Nodejs through Oracledb Driver
嘿,我真的很想弄清楚如何连接到远程 Oracle 测试数据库,但我没有 Java 方面的经验。所以如果我能得到你的帮助,我将永远感激不已。
我有一个正在尝试连接的远程测试数据库,并且我有一个与旧式 SID 的 jdbc 连接。根据此 link: https://github.com/oracle/node-oracledb/blob/master/doc/api.md#notjdbc,我应该创建一个 tnsnames.ora 文件来放入连接,如下所示:
tnsnames.ora:
appDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA =
(SID = ORCL)
)
)
然后我应该在我的节点 server.js 文件中引用它,就像这样
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 文件放在哪里。我在网上 link $ORACLE_HOME/network/admin
找到了这个,但我不知道它指的是什么。我对数据库的访问权限有限。请原谅我的 Java 无知。我如何在我的节点应用程序中使用这个连接,它与数据库完全分开?我的应用如何知道 "appDB" 是什么以及如何在 tnsnames.ora 文件中找到它?
提前致谢!
把完整的连接地址放在connectString变量中
{
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 上有两个虚拟机。一个用于 Oracle12c DB,另一个用于带有 Oracle 客户端库的 nodejs oracledb 包。这是我从客户端连接到远程数据库的连接字符串。
module.exports = {
user : process.env.NODE_ORACLEDB_USER || "hr",
password : process.env.NODE_ORACLEDB_PASSWORD || "welcome",
connectString : process.env.LOCAL || "myipaddress:1521/servicename",
};
嘿,我真的很想弄清楚如何连接到远程 Oracle 测试数据库,但我没有 Java 方面的经验。所以如果我能得到你的帮助,我将永远感激不已。
我有一个正在尝试连接的远程测试数据库,并且我有一个与旧式 SID 的 jdbc 连接。根据此 link: https://github.com/oracle/node-oracledb/blob/master/doc/api.md#notjdbc,我应该创建一个 tnsnames.ora 文件来放入连接,如下所示:
tnsnames.ora:
appDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
(CONNECT_DATA =
(SID = ORCL)
)
)
然后我应该在我的节点 server.js 文件中引用它,就像这样
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 文件放在哪里。我在网上 link $ORACLE_HOME/network/admin
找到了这个,但我不知道它指的是什么。我对数据库的访问权限有限。请原谅我的 Java 无知。我如何在我的节点应用程序中使用这个连接,它与数据库完全分开?我的应用如何知道 "appDB" 是什么以及如何在 tnsnames.ora 文件中找到它?
提前致谢!
把完整的连接地址放在connectString变量中
{
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 上有两个虚拟机。一个用于 Oracle12c DB,另一个用于带有 Oracle 客户端库的 nodejs oracledb 包。这是我从客户端连接到远程数据库的连接字符串。
module.exports = {
user : process.env.NODE_ORACLEDB_USER || "hr",
password : process.env.NODE_ORACLEDB_PASSWORD || "welcome",
connectString : process.env.LOCAL || "myipaddress:1521/servicename",
};