Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Необходимо получить список всех GTT. Есть идеи? / 4 сообщений из 4, страница 1 из 1
03.09.2009, 17:53
    #36177505
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо получить список всех GTT. Есть идеи?
Все GLOBAL TEMPORARY TABLES (GTT) убиваются вместе с закрытием соединения.
Если их не убивать, то происходит переплнение APP_CTL_HEAP_SZ.
Понятно, что инфа о всех созданных временных таблицах через SYSCAT и SYSIBM недоступна (как правило!).
Есть ли какой-либо валидный способ получить список всех созданных GTT?
...
Рейтинг: 0 / 0
04.09.2009, 12:40
    #36178741
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо получить список всех GTT. Есть идеи?
SELECT
SUBSTR(TABSCHEMA,1,8) AS TABSCHEMA,
SUBSTR(TABNAME,1,15) AS TABNAME,
TAB_TYPE,
DBPARTITIONNUM FROM TABLE(SNAP_GET_TAB('',-2)) AS T
WHERE
TAB_TYPE=3 /* TEMPORARY TABLE */

но к сожалению не видно какая сессия создала GTT
...
Рейтинг: 0 / 0
04.09.2009, 16:41
    #36179500
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо получить список всех GTT. Есть идеи?
gardenman,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
create procedure get_temp_tab_list(tmptab varchar( 128 ))
dynamic result sets  1 
begin
  declare err_flag int;
  declare stmt varchar( 4000 );
  declare c1 cursor for s1;
  declare cout cursor with return for sout;
  declare continue handler for sqlstate '56098', sqlstate '42704'
  begin
    set err_flag =  1 ;
  end;
  set tmptab = 'session.'||coalesce(upper(nullif(tmptab, '')), 'GET_TEMP_TAB_LIST');
  -- declare GTT for result set
  set stmt = 'declare global temporary table '||tmptab||'(tabname varchar(128)) with replace not logged';
  execute immediate stmt;
  -- prepare insert into DGTT
  set stmt = 'insert into '||tmptab||' values (?)';
  prepare sins from stmt;
  -- loop through list of tables
  for v as 
    select distinct tabschema, tabname
    from sysibmadm.snaptab
    where tab_type='TEMP_TABLE'
  do
    set err_flag =  0 ;
    -- test for existence
    set stmt = 'select 1 from '||rtrim(v.tabschema)||'.'||v.tabname||' fetch first 1 row only';
    prepare s1 from stmt;
    open c1;
    if err_flag =  0  then
      -- table exists
      execute sins using v.tabname;
      close c1;
    end if;
  end for;
  -- get result set
  set stmt = 'select * from '||tmptab;
  prepare sout from stmt;
  open cout;
end@
...
Рейтинг: 0 / 0
04.09.2009, 20:37
    #36179911
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо получить список всех GTT. Есть идеи?
Спасибо, Марк!) вижу вы скучаете без работы. Да, Ваша идея понятна. Спасибо.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Необходимо получить список всех GTT. Есть идеи? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]