powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Необходимо получить список всех GTT. Есть идеи?
4 сообщений из 4, страница 1 из 1
Необходимо получить список всех GTT. Есть идеи?
    #36177505
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все GLOBAL TEMPORARY TABLES (GTT) убиваются вместе с закрытием соединения.
Если их не убивать, то происходит переплнение APP_CTL_HEAP_SZ.
Понятно, что инфа о всех созданных временных таблицах через SYSCAT и SYSIBM недоступна (как правило!).
Есть ли какой-либо валидный способ получить список всех созданных GTT?
...
Рейтинг: 0 / 0
Необходимо получить список всех GTT. Есть идеи?
    #36178741
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Необходимо получить список всех GTT. Есть идеи?
    #36179500
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Необходимо получить список всех GTT. Есть идеи?
    #36179911
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Марк!) вижу вы скучаете без работы. Да, Ваша идея понятна. Спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Необходимо получить список всех GTT. Есть идеи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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