我正在编写一个从Oracle数据库提取数据的Node.js应用程序。DBA最近将数据库迁移到了另一台机器上,结果一切都崩溃了。
我已经尝试重新创建tnsnames.ora和sqlnet.ora文件。我非常确定它们是正确的,因为sqlplus可以很好地连接到服务。但是node-oracle一直报告错误:"ORA-12154: TNS: not not resolve the connect identifier specified“。
这对我来说是无法解释的。在我看来,如果我设置了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;
}
});发布于 2015-12-01 18:48:45
我可以使用sqlplus连接,但不能使用nodejs。我是这样做连接的
oracledb.getConnection(
{
user : "test",
password : "test",
connectString : "150.150.50.50:1521/MYDB"
}对我有效解决方案是编辑sqlnet.ora文件并更改
names.directory_path = (TNSNAMES)至
names.directory_path = (TNSNAMES, EZCONNECT)发布于 2012-07-20 04:59:11
尝试指定TNS_ADMIN环境变量。
发布于 2012-12-06 00:42:46
这个documentation帮助我使用node-oracle连接到oracle数据库。我的错误之处在于,我以为database属性是数据库的名称,但实际上它是service_name (即在Oracle数据库上的listener.ora文件中定义的GLOBAL_DBNAME,而不是SID_NAME)。
据我所知,node-oracle不支持tnsnames.ora,因为它使用选项来构建连接字符串,比如//{hostname}:{port}/{database}。
https://stackoverflow.com/questions/11568428
复制相似问题