У меня есть этот скрипт, работающий на контейнере docker, который каждые две минуты делает вызов БД oracle и сохраняет результаты в файл. Дело в том, что в некоторых случаях сценарий ничего не записывает в файл, и после просмотра журналов docker этого контейнера я обнаружил, что он выдает эту ошибку ORA-12545
. Но не каждый раз, потому что в некоторых других случаях он работает правильно.
2020-0-16 21:37:57:557 Error: ORA-12545: Connect failed because target host or object does not exist
2020-0-16 21:39:59:753 Connection succeeded.
2020-0-16 21:41:57:336 Error: ORA-12545: Connect failed because target host or object does not exist
Как вы можете видеть, на 21:39:59
он работает, но за две минуты до и после этого не работает.
Редактировать (добавлен скрипт)
'use strict';
const oracledb = require('oracledb');
const dotenv = require('dotenv');
const loggerWrite = require ('./loggerWrite');
dotenv.config();
oracledb.outFormat = oracledb.OBJECT;
const GetOracleDB = async (query,resource,prefix)=> {
let connection;
try {
// Get a non-pooled connection
connection = await oracledb.getConnection( {
user : process.env.ORACLE_USER,
password : process.env.ORACLE_PASSWORD,
connectString: process.env.ORACLE_CONNECT_STRING
});
let result;
// Default Array Output Format
result = await connection.execute(query);
let dataToSend ={'data' : result.rows, 'recurso':resource };
for (let index = 0; index < result.rows.length; ++index) {
let date = new Date();
let dataToSend ={'time':date,'data' : result.rows[index], 'recurso':resource };
loggerWrite(dataToSend,resource,prefix);
}
} catch (err) {
const date = new Date();
console.log(date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours(-3)+":"+date.getMinutes()+":"+date.getSeconds()+":"+date.getMilliseconds() + " "+ err);
} finally {
if (connection) {
try {
// Note: connections should always be released when not needed
await connection.close();
const date = new Date();
console.log(date.getFullYear()+"-"+date.getMonth()+"-"+date.getDate()+" "+date.getHours(-3)+":"+date.getMinutes()+":"+date.getSeconds()+":"+date.getMilliseconds() + " Conexión Cerrada");
} catch (err) {
console.log(new Date() + " " + err);
}
}
}
}