我有一个使用 oracledb 模块连接许多 oracle 数据库的 nodejs 应用程序。此应用程序在一个地方监视所有数据库。
但有一个问题。我正在创建一个文件来连接到 oracle db 并执行 sql。我正在使用此文件连接到数据库。例如:
let conections = [];
function connectToDb(dbid, connStr){
const oracledb = require('oracledb');
oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT;
oracledb.poolMax = 10;
oracledb.poolMin = 1;
oracledb.createPool(connStr).then((conn) => {
conections[dbid] = dbid;
});
}
function executeSql(dbid, sql, callback){
conections[dbid].getConnection().then(conn => {
conn.execute(qry, params, function(err, rows) {
callback(rows);
});
});
}
connectToDb(1, {......});
connectToDb(2, {......});
connectToDb(3, {......});
executeSql(1, 'select * from ....', function(){...}); //response time 1 sn everthing is okey
executeSql(2, 'select * from ....', function(){...}); //response a long time. Than i am getting queue timeout error
executeSql(3, 'select * from ....', function(){...}); //it not working a while time!!
executeSql(1, 'select * from ....', function(){...}); //it not working a while time!!
//this functions are async. Please assume that there is setInterval function.
在这段代码中,一切都很好,但是当一个数据库NJS-040: connection request timeout. Request exceeded queueTimeout of 60000
出现一个数据库错误时,所有数据库都会受到这种情况的影响。
我认为这些连接不是孤立的,我认为如果我可以创建孤立的连接,这种情况就会得到解决。例如,我可以使用 import 而不是 require 吗?
谢谢你的帮助