Ошибка: ORA-12545 на контейнере Docker, но не всегда происходит - PullRequest
1 голос
/ 17 января 2020

У меня есть этот скрипт, работающий на контейнере 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);
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...