Гость
Форумы / Informix [игнор отключен] [закрыт для гостей] / Temp table exists? / 20 сообщений из 20, страница 1 из 1
17.11.2010, 07:32
    #36960821
Портос
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
Господа, а как определить наличие временной таблицы в данной сессии? В других сессиях временная таблица с таким именем может существовать. Поэтому выражение

select count(*) from sysmaster:systabnames s
inner join sysmaster:systabinfo i on i.ti_partnum=s.partnum
where tabname = 'bla-bla-bla'
and sysmaster:BITVAL(i.ti_flags,'0x0020') = 1

не подходит.
Сессию же я могу определить:
SELECT DBINFO('sessionid') FROM systables

Или другими словами:
Как определить, в какой сессии создана временная таблица?
Informix 7.31.
...
Рейтинг: 0 / 0
17.11.2010, 08:38
    #36960847
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
ПортосГоспода, а как определить наличие временной таблицы в данной сессии?
select 1 from вашатаблица where 1=0
...
Рейтинг: 0 / 0
17.11.2010, 10:57
    #36961089
Портос
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
Шутите, батенька?
Если таблицы нет, то:
The specified table (bla-bla-bla) is not in the database.

Эксепшенов нам не надо!
...
Рейтинг: 0 / 0
17.11.2010, 10:58
    #36961090
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
ПортосЭксепшенов нам не надо!а зря
...
Рейтинг: 0 / 0
17.11.2010, 12:04
    #36961240
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
Журавлев ДенисПортосЭксепшенов нам не надо!а зря
+1
делов-то - exception внутри ХП перехватить :).
Но: ХП неудобен (на 7.31), когда хочется одну ХП на проверку любой таблицы...

На 7.31 я так и не нашёл в своё время способа. Максимум, что получилось - по имени пользователя, что удовлетворит конечно не всех:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
-----------------------------------------------------------
-- Find all TEMP tables by Username (owner)
--
-- V.Shulzhenko   DBA_Tools
-----------------------------------------------------------
set isolation to dirty read;
select   tn.tabname[ 1 , 18 ]       temp_table
        ,tn.dbsname[ 1 , 18 ]       db_name
--        ,tn.owner[1,8]        owner
        ,s.name[ 1 , 14 ]           dbspace
        ,substr(sum(ti_nptotal), 1 , 6 )     pages
        ,substr(sum(ti_npused), 1 , 6 )      used
--        ,substr(sum(ti_nextns),1,4)    extents
        ,substr(sum(ti_nrows), 1 , 9 )       rows
from systabnames tn,systabinfo ti,sysdbspaces s
where   tn.partnum = ti.ti_partnum 
        and s.dbsnum=partdbsnum(ti_partnum)         
        and (bitval(ti_flags, 32 )= 1  or bitval(ti_flags, 64 )= 1  or bitval(ti_flags, 128 )= 1 )
        and tn.owner matches
--'Owner (username) or *'
--'*'
--group by 1,2,3
--order by 1,2,3
...
Рейтинг: 0 / 0
17.11.2010, 12:22
    #36961300
Портос
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
Ну ладно, картина ясна.

Похоже, эксепшн - это самое простое решение... :)

Благодарствую, друзья!
...
Рейтинг: 0 / 0
17.11.2010, 14:34
    #36961733
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
ПортосГоспода, а как определить наличие временной таблицы в данной сессии?
...
Как определить, в какой сессии создана временная таблица? Informix 7.31.
Temp таблица

P.S. Даже странно, что такой популярный и старый вопрос отсутствует в FAQ....
...
Рейтинг: 0 / 0
17.11.2010, 23:28
    #36962787
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
ПортосНу ладно, картина ясна.

Похоже, эксепшн - это самое простое решение... :)

Благодарствую, друзья!

Я пытаюсь дропнуть темп таблицу в начале, перехватывая эксепшн. минимум головной боли.
...
Рейтинг: 0 / 0
18.11.2010, 09:38
    #36963110
victor16
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
Главное, не дропнуть постоянную таблицу вместо временной.
А вообще, в 11.70 уже появились SQL-операторы
DROP IF EXISTS
CREATE IF NOT EXITS
...
Рейтинг: 0 / 0
18.11.2010, 13:20
    #36963712
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
vasilisПортосГоспода, а как определить наличие временной таблицы в данной сессии?
...
Как определить, в какой сессии создана временная таблица? Informix 7.31.
Temp таблица

P.S. Даже странно, что такой популярный и старый вопрос отсутствует в FAQ....

Указанная ссылка на топик заканчивается оптипессимистично: "теперь осталось только выяснить, откуда onstat берет информацию по временным таблицам для конкретного SID-а :)"...
Так что приемлемого ответа на вопрос "как для 7.31 определить наличие временной таблицы в данной сессии" кроме "select/drop-> exception -> АГА!" пока не имеется. И надеюсь, больше и не понадобится :)
...
Рейтинг: 0 / 0
18.11.2010, 23:31
    #36965064
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
АнатоЛойvasilisпропущено...

Temp таблица

P.S. Даже странно, что такой популярный и старый вопрос отсутствует в FAQ....

Указанная ссылка на топик заканчивается оптипессимистично: "теперь осталось только выяснить, откуда onstat берет информацию по временным таблицам для конкретного SID-а :)"...
Так что приемлемого ответа на вопрос "как для 7.31 определить наличие временной таблицы в данной сессии" кроме "select/drop-> exception -> АГА!" пока не имеется. И надеюсь, больше и не понадобится :)

А что SQLIDEBUG=2:xxx не показывает дамп для сессий onstat ?!

С уважением,
Вадим.
...
Рейтинг: 0 / 0
19.11.2010, 17:47
    #36966494
zaiets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
А как же - показівает:
# sqliprint /tmp/zzzz.dbg_23806
SQLIDBG Version 1
#
...
Рейтинг: 0 / 0
19.11.2010, 18:38
    #36966577
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
zaietsА как же - показівает:
# sqliprint /tmp/zzzz.dbg_23806
SQLIDBG Version 1
#

Ну и ... ?! ... дамп псевдо-запроса (через view на структуры SHM памяти)
есть или нет ?

С уважением,
Вадим.
...
Рейтинг: 0 / 0
20.11.2010, 00:04
    #36966909
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
GVF112GVFАнатоЛойпропущено...


Указанная ссылка на топик заканчивается оптипессимистично: "теперь осталось только выяснить, откуда onstat берет информацию по временным таблицам для конкретного SID-а :)"...
Так что приемлемого ответа на вопрос "как для 7.31 определить наличие временной таблицы в данной сессии" кроме "select/drop-> exception -> АГА!" пока не имеется. И надеюсь, больше и не понадобится :)

А что SQLIDEBUG=2:xxx не показывает дамп для сессий onstat ?!

С уважением,
Вадим.

onstat лезет непосредственно в shared memory и берет данные оттуда, из внутренних структур. Никаких обращений к псевдотаблицам не происходит.
...
Рейтинг: 0 / 0
20.11.2010, 11:42
    #36967175
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
ВыбегаллоGVF112GVFпропущено...


А что SQLIDEBUG=2:xxx не показывает дамп для сессий onstat ?!

С уважением,
Вадим.

onstat лезет непосредственно в shared memory и берет данные оттуда, из внутренних структур. Никаких обращений к псевдотаблицам не происходит.

Куда лезет onstat - Я знаю ... в свое время, изучал исходники на С.

Некоторые структуры в разделяемой памяти, могут проецироваться как view.
Другое дело, что эти view могут быть не документированы.

Насколько Я помню, в SMI, используются псевдо-таблицы (часть из них view на структуры памяти SHM). Они также могут использоваться в программах, реализованных на ESQL/C ... :)

Вообще-то, тенденция такова, что все чаще в продуктах IBM (DB2/Informix),
используются табличные функции в том числе и для досупа у структурам разделяемой памяти.

С уважением,
Вадим.
...
Рейтинг: 0 / 0
20.11.2010, 13:42
    #36967270
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
GVF112GVFВыбегаллопропущено...


onstat лезет непосредственно в shared memory и берет данные оттуда, из внутренних структур. Никаких обращений к псевдотаблицам не происходит.

Куда лезет onstat - Я знаю ... в свое время, изучал исходники на С.

Некоторые структуры в разделяемой памяти, могут проецироваться как view.
Другое дело, что эти view могут быть не документированы.

Насколько Я помню, в SMI, используются псевдо-таблицы (часть из них view на структуры памяти SHM). Они также могут использоваться в программах, реализованных на ESQL/C ... :)

Вообще-то, тенденция такова, что все чаще в продуктах IBM (DB2/Informix),
используются табличные функции в том числе и для досупа у структурам разделяемой памяти.

С уважением,
Вадим.

onstat-у сто лет в обед. Никаких SMI на момент его написания (1990-1994, I guess) не было. Так что не стоит задерживать дыхание, ожидая SQLIDEBUG trace от его вызова.
...
Рейтинг: 0 / 0
20.11.2010, 19:33
    #36967613
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
GVF112GVFКуда лезет onstat - Я знаю ... в свое время, изучал исходники на С.
А вы случайно не знаете, где можно увидеть, на какой таблице произошел затык по удалению?
Задача следующая: в БД есть основные таблицы и куча специализированных (для разных типов изделий и разных пользователей). Основные таблицы давно устоялись, а специализированные появляются вместе с изделиями новых типов. Периодически при удалении записей из основных таблиц возникает сбой из-за того, что у какой-нибудь новой специализированной таблицы (которая косвенно связана с основной ключом с каскадным удалением) не установлено разрешение на удаление данных для текущего пользователя. Можно ли как-нибудь увидеть имя таблицы, на которой произошел затык?
...
Рейтинг: 0 / 0
21.11.2010, 13:26
    #36968137
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
bk0010GVF112GVFКуда лезет onstat - Я знаю ... в свое время, изучал исходники на С.
А вы случайно не знаете, где можно увидеть, на какой таблице произошел затык по удалению?
Задача следующая: в БД есть основные таблицы и куча специализированных (для разных типов изделий и разных пользователей). Основные таблицы давно устоялись, а специализированные появляются вместе с изделиями новых типов. Периодически при удалении записей из основных таблиц возникает сбой из-за того, что у какой-нибудь новой специализированной таблицы (которая косвенно связана с основной ключом с каскадным удалением) не установлено разрешение на удаление данных для текущего пользователя. Можно ли как-нибудь увидеть имя таблицы, на которой произошел затык?

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

Например,
для этих целей, Вы можете использовать - AUDIT (фильтровать не удавшиеся события- DLRW (DELETE ROW), ACTB (Access Table), and so on).

Другой возможный вариант - анализ кодов SQL error, ISAM error для пользовательских
сессий (используя SMI - интерфейс, утилиту ONSTAT и т.д.).

Если есть деньги,
Вы можете использовать решение - IBM Guargium (Audit & Report)
http://www.guardium.com/index.php/pr/923

С уважением,
Вадим.
...
Рейтинг: 0 / 0
21.11.2010, 13:34
    #36968141
GVF112GVF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
ВыбегаллоGVF112GVFпропущено...


Куда лезет onstat - Я знаю ... в свое время, изучал исходники на С.

Некоторые структуры в разделяемой памяти, могут проецироваться как view.
Другое дело, что эти view могут быть не документированы.

Насколько Я помню, в SMI, используются псевдо-таблицы (часть из них view на структуры памяти SHM). Они также могут использоваться в программах, реализованных на ESQL/C ... :)

Вообще-то, тенденция такова, что все чаще в продуктах IBM (DB2/Informix),
используются табличные функции в том числе и для досупа у структурам разделяемой памяти.

С уважением,
Вадим.

onstat-у сто лет в обед. Никаких SMI на момент его написания (1990-1994, I guess) не было. Так что не стоит задерживать дыхание, ожидая SQLIDEBUG trace от его вызова.

Возможно, что Вы правы, но жизнь не стоит на месте.
Многие функции утилит (oncheck, onparams, onspaces...) уже реализованы как SQL-функции.

Так что все может быть ... ;)
Например, отключение Вашей инстанции посредством удаленного вызова SQL-функции ...
... шутка ... :)

С уважением,
Вадим.
...
Рейтинг: 0 / 0
22.11.2010, 10:48
    #36969092
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Temp table exists?
GVF112GVF, у топик-стартера Informix 7.31 (ещё и непонятно насколько пропатченый).
Портос, если Вас не затруднит, попробуйте предложение с SQLIDEBUG от GVF112GVF. Может прямого ответа на вопрос Вы и не получите (в чём уверен Выбегалло), но опыт использования SQLIDEBUG тоже чего-то стоит :).
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Temp table exists? / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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