我正在编写一个Node.js应用程序,从Oracle数据库中提取数据。DBA最近将数据库迁移到另一台机器上,结果一切都坏了。
我已经尝试重新创建tnsnames.ora和sqlnet.ora文件。我相当肯定它们是正确的,因为sqlplus可以很好地连接到服务。但是node-oracle一直报告错误:“ORA-12154:TNS:无法解析指定的连接标识符“”。
这对我来说是无法解释的。在我看来,如果我设置了ORACLE_HOME环境变量,那么node-oracle和sqlplus的功能应该是相同的。我做错了什么?
我尝试切换到node-db-oracle,但它报告了同样的问题。我被难倒了
编辑:这是我连接的方式:
database = new oracle.Database({
hostname: Preferences["oracle_host"], // FQDN of the database
port: Preferences["oracle_port"],
user: Credentials["oracle_login"],
password: Credentials["oracle_password"],
database: Preferences["oracle_database"]
});
connection = database.connect(function(error) {
if(error) {
Utilities.logger.error(error);
}
else {
Utilities.logger.info("Connected to Oracle database " + Preferences["oracle_host"]);
if(callback) callback.call(this, collection, options);
connection = this;
}
});
3条答案
按热度按时间u59ebvdq1#
我可以使用sqlplus连接,但不能使用nodejs。我是这样做的连接
对我有效的解决方案是编辑sqlnet.ora文件并更改
到
de90aj5v2#
尝试指定
TNS_ADMIN
环境变量。How can I configure my Oracle tnsnames file location?
lvjbypge3#
这个文档帮助我使用
node-oracle
连接到oracle数据库。我的错误之处在于我认为database
属性是数据库的名称,但实际上它是service_name
(即service_name
)。在Oracle数据库的listener.ora
文件中定义的GLOBAL_DBNAME
,而不是SID_NAME
)。从我可以告诉
node-oracle
不支持tnsnames.ora
,因为它使用选项来构建连接字符串,如//{hostname}:{port}/{database}
。