• Java jdbc DataBase sniffer Необходимо перехватить JDBC трафик от произвольного приложения.
    Достаточно получить тексты SQL-запросов.
    И приложение и сниффер работают локально.
    Как-то изменить приложение возможности нет.
    Кто какие решения знает?

    p.s. Уже опробованы log4jdbc и jdbmonitor — эти не подходят.

Replies (10)

  • @wwarlock, к локальной бд фигачатся?
  • @cmortuorum, Сейчас нет, но в принципе можно к этому свести задачу
  • @wwarlock, просто мог предложить простое решение: логирование запросов средствами БД
  • @cmortuorum, В оракл такое есть и довольно часто использую.
    В ApacheDB не нашёл.
  • @wwarlock, апачдб — дерби?
    But first, we have to make some preparations. Before we can start tuning performance, we need to be able to see what is going on in the database when our query is executing. For that purpose, Derby provides the derby.language.logQueryPlan parameter. When this parameter is set, Derby will log the query plan for all executed queries in the derby.log file (located in the derby.system.home folder). You can achieve this through the appropriate derby.properties file or by executing the following Java statement:

    System.setProperty("derby.language.logQueryPlan", "true");
  • @cmortuorum, вот по дерби, два вопроса wiki.apache.org
  • @cmortuorum, БД поднимаю не я. БД поднимает Cognos BI.
    Я попробовал найти конфиги Derby внутри папки с приложением.
    Но пока эта попытка не увенчалась успехом.
    Поэтому и родилась идея промониторить траффик.
    Я уже думаю поставить Wireshark, но меня убивает его многословность.
  • @wwarlock, тогда не знаю. только вайршарк наверное
  • @cmortuorum, В любом случае, спасибо за отклик
  • @wwarlock, Вопрос снимается, но частично.
    Логирование в Дерби можно включить прямо из JDBC.
    CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.logStatementText', 'true');
    CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.language.logQueryPlan', 'true');
    Тогда в папке с когносовыми логами появляется derby.log, где видно все запросы.

    Интереснее было бы найти универсальное решение.