我们在后端使用 oracle,node-oracledb
并希望使用连接池来提高性能:
oracledb.createPool({
poolAlias: 'default',
connectString: connectString,
user: user,
password: password,
poolMin: poolMin,
poolMax: poolMax
}).then(conpool => {
console.log('Connection Pool created!');
},
err => {
console.log('Error creating pool! Error:');
throw err;
});
并使用这样的连接:
public async execute (sql: string, data: object, options: object): Promise<any[]> {
try {
const con = await this.getConnection();
try {
console.log(sql);
const result = await con.execute(sql, data, { outFormat: oracledb.OBJECT, ...options });
return result.rows;
} finally {
con.release();
}
} catch (ex) {
console.log(`database.execute exception: ${ex.message}`);
throw ex;
}
}
现在,我们经常收到以下错误:
ORA-02396: 超过最大空闲时间
并假设它与IDLE_TIME
可能UNLIMITED
出于安全原因未设置的相关(老实说,我真的不明白)。
有没有其他方法可以保持连接活跃?我的意思是,由于 nodejs 是单线程的,我不能简单地定期执行虚拟查询吗?