Вт, 26.11.2024, 10:32
Приветствую Вас Гость | RSS
Главная | Памажите люди добрые с db2 - Форум | Регистрация | Вход
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Памажите люди добрые с db2
slДата: Вт, 08.02.2011, 15:52 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
Извиняюсь, что вопрос уж очень по-ламерски звучит ...
Декорация: бардак полный, кто чем занимается я понятия не имею.... Итак, во время экскрементов юных дбшников, наблюдаю во множестве подобные сообщения:

Code

DSNT501I  -DB9G DSNILMCL RESOURCE UNAVAILABLE 238                  
             CORRELATION-ID=db2jcc_appli                             
             CONNECTION-ID=SERVER                     
             LUW-ID=NF000001.G80C.110207133622=20833                 
             REASON 00C9008E                     
             TYPE 00000302                     
             NAME DSNDB06 .SYSOBJ  .X'0000C3'                        
DSNT376I  -DB9G PLAN=DISTSERV WITH 239                             
          CORRELATION-ID=db2bp.exe                     
          CONNECTION-ID=SERVER                     
          LUW-ID=D90F12C3.A64B.C74C4216CCFF=22212                    
          THREAD-INFO=IBMUSER:DB2ESE:ibmuser:db2bp.exe               
          IS TIMED OUT. ONE HOLDER OF THE RESOURCE IS PLAN=DISTSERV
WITH                     
          CORRELATION-ID=db2jcc_appli                     
          CONNECTION-ID=SERVER                     
          LUW-ID=NF000001.G553.110207132733=20771                    
          THREAD-INFO=IBMUSER:4-111-2-15:ibmuser:db2jcc_application
          ON MEMBER DB9G                     

Хочется выяснить следующие вещи:
1. О каком ресурсе базар ?
2. Кто конкретно этот ресурс "держит" ?
3. К кому из экскрементаторов относятся эти сообщения ? Т.е. IP и порт запускальщика. (В z/OS никто лазать не умеет, все запросы приходят из линуха или виндов)

В ISPF я нашел место где могу посмотреть информацию о тредах DB2 ... Ну и смотрю на табличку как баран - не знаю что делать дальше.
В OMVS к моей великой радости обнаружилась работающая команда netstat smile Но она показывает мне десяток установленных соединений к DB2, "угадать" среди них виновников не представляется возможным...

Вообще, есть ли возможность "подсмотреть" кто какие запросы слал ?

Сообщение отредактировал sl - Вт, 08.02.2011, 15:53
 
krkДата: Ср, 09.02.2011, 06:15 | Сообщение # 2
Рядовой
Группа: Проверенные
Сообщений: 3
Репутация: 0
Статус: Offline
Quote
1. О каком ресурсе базар ?

О странице DSNDB06 .SYSOBJ .X'0000C3'.
Если интересует какая таблица, то её название можно узнать распечатав табличное пространство с помощью DSN1PRNT. Только вряд ли это нужно. Возможно, проблема в клинете DB2.

Quote
2. Кто конкретно этот ресурс "держит" ?

Возможно это:
Code
           CORRELATION-ID=db2jcc_appli                      
           CONNECTION-ID=SERVER                      
           LUW-ID=NF000001.G553.110207132733=20771                     
           THREAD-INFO=IBMUSER:4-111-2-15:ibmuser:db2jcc_application  

Quote
3. К кому из экскрементаторов относятся эти сообщения ? Т.е. IP и порт запускальщика. (В z/OS никто лазать не умеет, все запросы приходят из линуха или виндов)

Как переводить LUWID в IP-адрес описано здесь:
http://www-01.ibm.com/support/docview.wss?uid=swg21055269

Но в вашем случае это не подходит, т.к. первый символ LUW-ID должен был в интервале от 'G' до 'P'.
LUW-ID=NF000001 - возможно это localhost. Но это только предположение.

При возникновении подобной ситуации для обеих нитей посмотрите вывод команды

Code
-DB9G DIS THD(*) LUWID(xxxxx) det

где xxxxx берется из

Code
LUW-ID=D90F12C3.A64B.C74C4216CCFF=xxxxx

Quote
Вообще, есть ли возможность "подсмотреть" кто какие запросы слал ?

Есть несколько вариантов:
1. Запустить трассировку и преобразовать её в отчет, но это не тривиально.
2. Посмотреть кэш запросов, например, с помощью IBM Data Studio (самый простой вариант).
3. Использовать инструменты DB2 for z/OS, например DB2 Query Monitor for z/OS.
 
slДата: Ср, 09.02.2011, 22:08 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
Quote (krk)
Как переводить LUWID в IP-адрес описано здесь:
http://www-01.ibm.com/support/docview.wss?uid=swg21055269

Спасибо! Жить уже веселей smile
Quote

Но в вашем случае это не подходит, т.к. первый символ LUW-ID должен был в интервале от 'G' до 'P'.
LUW-ID=NF000001 - возможно это localhost. Но это только предположение.

Почему же не подходит ? N вообще-то в этом диапазоне и как раз равен 7, т.е. 7f 00 00 01 - таки да... Но я этого не понимаю, т.к. в z/OS НИКТО не работает, мамой клянусь... Еще раз пардон за глупость: может быть такое, что этот запрос с localhost'а явился следствием какого-то запроса извне ? Такое бывает в природе ?

Я в задачу стараюсь не вникать, потому что структура базы и логика работы перетянута из оракла, а там оно было спроектировано а) каким-то шизофреником, б) для совершенно другой задачи smile , в общем - бред на бреде сидит и бредом погоняет. А шиза - она заразна, как известно, так что я просто боюсь за свои мозги smile
Но знаю, что все делается на хранимых процедурах, которые многократно друг друга вызывают. А поскольку это разработка, то вполне себе рядовая ситуация что кто-то один дал запрос на какое-то длинное изменение в базе, или выборку, а кто-то другой в этот момент перетранслирует одну из процедур, вызываемых при обработке этого запроса. Но это не объясняет откуда может взяться запрос с localhost'а....

 
krkДата: Чт, 10.02.2011, 04:03 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 3
Репутация: 0
Статус: Offline
Quote (sl)
Почему же не подходит ? N вообще-то в этом диапазоне и как раз равен 7, т.е. 7f 00 00 01 - таки да...

Точно! 127.0.0.1 smile
Когда говорил, что не подходит, то имел ввиду LUW-ID=D90F12C3. Другой даже не подумал переводить.

У вас Java хранимые процедуры?

Сообщение отредактировал krk - Чт, 10.02.2011, 04:06
 
slДата: Пт, 11.02.2011, 03:01 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
Quote (krk)
Когда говорил, что не подходит, то имел ввиду LUW-ID=D90F12C3. Другой даже не подумал переводить.

А это просто IP, без изменений.
Задача как стоит - чтоб начиналось с буквы ? Ну вот, A-F отображаются как есть, а 0-9 преобразуются в G-P. IBM-овский стиль трудно с чем-нибудь спутать smile

Quote

У вас Java хранимые процедуры?

Вроде бы нет, насколько мне известно. Но поручиться не могу. Кто-то с явой играется как-то, подробности не знаю.

Добавлено (11.02.2011, 03:01)
---------------------------------------------
Прикол: в какой-то момент увидел LUW-ID, который "расшифровал" как 10.0.2.15 .
Приторчал. Вроде не было у них там такой сетки. (А даже если б была - какого черта местному басурману понадобилось в НАШЕЙ DB2 ? smile )
Тут же попробовал пингануть этот адрес. Естественно , не пингуется. netstat -r про такую сетку ничего не знает.
Из детства вспоминается - вроде бы slirp любил такой адрес выдавать... И кто-то еще, кажется, из эмулятров, стянувших к себе соотв.кусок кода... Но какое отношение это имеет к DB2 под z/OS - фантазия буксует.

 
EHabarovДата: Пн, 14.02.2011, 10:17 | Сообщение # 6
Майор
Группа: Доверенные
Сообщений: 86
Репутация: 7
Статус: Offline
А на самой системе нет интерфейса с таким адресам?
D TCPIP,,N,HOME не покажет такой адрес в списке "домашних"?
Ну плюс еще может где-то NAT-преобразование есть?

Могу дать еще одно предположение, более "изощренное".
Если в z/OS стоит пакет OpenSSH и пользователи имеют право туда ходить, то можно через SSH-соединение форварднуть порт.
В таком случае диагностика может "валять дурака". Т.е. сэмулировать подключение с адреса 127.0.01 можно "на раз".

 
GregoryДата: Пн, 14.02.2011, 12:01 | Сообщение # 7
Генерал-майор
Группа: Доверенные
Сообщений: 482
Репутация: 22
Статус: Offline
Quote (sl)
Кто-то с явой играется как-то, подробности не знаю.

а с WebShere никто не играется? если да, то запрос с 127.0.0.1 не удивителен...
 
slДата: Пн, 14.02.2011, 22:16 | Сообщение # 8
Лейтенант
Группа: Проверенные
Сообщений: 55
Репутация: 0
Статус: Offline
Quote (EHabarov)

А на самой системе нет интерфейса с таким адресам?
D TCPIP,,N,HOME не покажет такой адрес в списке "домашних"?

Code
EZZ2500I NETSTAT CS V1R11 TCPIP 024
HOME ADDRESS LIST:
ADDRESS          LINK             FLG
192.86.32.76     OSDL             P
127.0.0.1        LOOPBACK
2 OF 2 RECORDS DISPLAYED
END OF THE REPORT

Буржуи, блин - им не впадлу было туда повесить ЧЕСТНЫЙ ipшник, без всяких натов и пробросов.

Quote

Если в z/OS стоит пакет OpenSSH и пользователи имеют право туда ходить, то можно через SSH-соединение форварднуть порт.
В таком случае диагностика может "валять дурака". Т.е. сэмулировать подключение с адреса 127.0.01 можно "на раз".

ssh есть. Но хожу на него я один.

Quote (Gregory)
а с WebShere никто не играется? если да, то запрос с 127.0.0.1 не удивителен...

Ошметки от нее в фс видны. Но из наших никто не играется точно, а у IBMовцев для поиграцца есть более подходящие места, чем сдаваемая в аренду "юзерская" виртуальная машинка.
 
EHabarovДата: Вт, 15.02.2011, 09:59 | Сообщение # 9
Майор
Группа: Доверенные
Сообщений: 86
Репутация: 7
Статус: Offline
Ну тогда проверить все jar-архивы хранимых процедур и функций на предмет строки jdbc:db2://
Для этого нужно выгрузить все архивы из таблицы SYSIBM.SYSJAROBJECTS и провести текстовый поиск по файлам классов.
Пример java-класса, который умеет вытаскивать jar-ы из архивов:
Code
import java.sql.*;
import java.io.*;

class db2_get_jars
{
  public static void main(String args[]) throws Exception
  {
   if (args.length != 2)  
   {
    System.out.println("Usage: get_jars <JDBC URL> <output dir>");
    return;
   }
   System.out.println("Loading DB2 Driver 'com.ibm.db2.jcc.DB2Driver'");
   Class.forName("com.ibm.db2.jcc.DB2Driver");
   System.out.println("Connecting to database.");
   Connection con = DriverManager.getConnection(args[0]);
   Statement stmt = con.createStatement();
   System.out.println("Executing request to SYSIBM.SYSJAROBJECTS");
   ResultSet rs = stmt.executeQuery("SELECT STRIP(JARSCHEMA) CONCAT '_' CONCAT STRIP(JAR_ID) as NAME, JAR_DATA as JAR from SYSIBM.SYSJAROBJECTS");
   String filename = "";
   while ( rs.next() )
   {
    filename = args[1]+System.getProperty("file.separator")+rs.getString("NAME")+".jar";
    System.out.println("Writing : "+filename);
    FileOutputStream fout = new FileOutputStream(filename);
    fout.write(rs.getBytes("JAR"));
    fout.close();
     
   }
   rs.close();
   stmt.close();
   System.out.println("Disconnecting from database.");
   con.close();
   System.out.println("Done.");
  }
}
 
  • Страница 1 из 1
  • 1
Поиск: