powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / ISAM error: non-exclusive access
8 сообщений из 8, страница 1 из 1
ISAM error: non-exclusive access
    #33052346
sitar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
informix 7.31.UD6

пытаюсь создать индекс к часто используемой табличке.

begin work;
lock table docum_kopf in exclusive mode;
create index vix311_10x on docum_kopf (ext_id);
commit work;
-------
ответ:
-------
Started transaction.
Table locked.
212: Cannot add index.
106: ISAM error: non-exclusive access.
Error in line 1
Near character position 97
Data committed.
-------

что-то непойму в чем проблемма %)
...
Рейтинг: 0 / 0
ISAM error: non-exclusive access
    #33052453
Valentyn Pidburtnyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sitarinformix 7.31.UD6

пытаюсь создать индекс к часто используемой табличке.

begin work;
lock table docum_kopf in exclusive mode;
create index vix311_10x on docum_kopf (ext_id);
commit work;


Как же может create index отработать, если таблица заблокирована на момент его выполнения??

Просто запускай:
create index vix311_10x on docum_kopf (ext_id);

Экслюзивную блокировку на таблицу create index поставит самостоятельно :)
...
Рейтинг: 0 / 0
ISAM error: non-exclusive access
    #33052523
sitar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valentyn Pidburtnyi
Как же может create index отработать, если таблица заблокирована на момент его выполнения??
Просто запускай:
create index vix311_10x on docum_kopf (ext_id);
Экслюзивную блокировку на таблицу create index поставит самостоятельно :)

ну блокирую ее ведь я блокирую %)
просто так нехочет выполнятся говорит: ISAM error: non-exclusive access.

почему залочить нарпямую дает, а сам create index этого сделать не может ?
...
Рейтинг: 0 / 0
ISAM error: non-exclusive access
    #33055565
Valentyn Pidburtnyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sitar
ну блокирую ее ведь я блокирую %)
просто так нехочет выполнятся говорит: ISAM error: non-exclusive access.

почему залочить нарпямую дает, а сам create index этого сделать не может ?

Хмм. Че-то я не то ответил в первый раз...:( Если явно открывать транзакцию и явно проставлять блокировку - должно работать, ты прав.

А может просто таблица заблокирована уже кем-то?
Если lock table in exclusive mode запустить, отрабатывает нормально?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ISAM error: non-exclusive access
    #36894303
ga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая же проблема. Не могу построить индекс.
CREATE INDEX "ifxguest".master_acc ON "informix".accounts(fiaccmaster)

Получаю:
Could not open database table (informix.accounts).
-106 ISAM error: non-exclusive access.

Если кто решил, расскажите как
...
Рейтинг: 0 / 0
ISAM error: non-exclusive access
    #36894484
Leonid Vorontsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Найти partnum "открытой" таблицы:
select hex( partnum ) from systables where tabname = 'accounts' -- получится например 0x011001c5

2. Найти сессию, которая держит таблицу "открытой":
2.1. Отфильтровать onstat по найденному partnum:
onstat -g opn | find "0x011001c5"
во второй колонке найдём thread control block интересующих нас сессий (например 12ee0bc8).
2.2. Отфильтровать onstat по найденному rstcb:
onstat -u | find "12ee0bc8"

Формат всех этих hex от версии к версии может отличаться (большие/маленькие буквы наличие/отсутствие префикса 0x). Я понимаю, не очень-то удобно, но другого способа я не знаю.
...
Рейтинг: 0 / 0
ISAM error: non-exclusive access
    #36894764
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gaЕсли кто решил, расскажите как
1. Работы по изменению структуры БД необходимо проводить без активных пользователей в системе
2. Поиск пользователей, заблокировавших (использующих) конкретную таблицу может быть разным в зависимости от версии IDS и причины
3. Если это стандартные блокировки - см. ниже пару примеров запросов (поиском можно найти еще множество подобных) как найти блокировки и их владельца для конкретной таблицы
4. В редких случаях причиной служат не стандартные блокировки - используйте "ручной" способ от Леонида.

Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
--------------------------------------------------
-- Who has locks on a table?
--  (whole instance, all db)
-- 
-- V.Shulzhenko DBA_Tools (by Scott Kolaya (CDI))
--------------------------------------------------
set isolation to dirty read;
select  dbsname[ 1 , 18 ]
        ,username[ 1 , 8 ]
        ,owner  sid_owner
        ,type
        ,case when rowidlk= 0  then 'all' when rowidlk= 256  then 'page' else 'row' end   locked
--        ,hex(rowidlk) 
from syslocks l, syssessions s
     ,outer flags_text f
where l.owner = s.sid
      and f.tabname='syslcktab' and f.flags=rowidlk
      and l.tabname matches
'table_name'    -- select table name
order by  1 
;

--------------------------------------------------------------------
-- Who has locks on a tables (include fragmented tables)
--    selected db only
--    NOT USING sysmaster:SYSTABNAMES
-- 
-- найти сессию, которая имеет блокировки на таблице (без использования systabnames)
-- 
--   для решения проблемы утечки памяти при работе с огромной systabnames (десятки тысяч)
--   из-за Bug 115066 - SYSTEM WITH LARGE NUMBER OF TABLES CAN CONSUME LARGE AMOUNTS OF MEMORY IN THE RSAM POOL
-- 
-- V.Shulzhenko DBA_Tools (by Taн (SQL.RU 2006-10))
--------------------------------------------------------------------
set isolation to dirty read;
select  
        t.tabname[ 1 , 18 ]
        ,e.txt[ 1 , 4 ]     lock_type
        ,username[ 1 , 8 ]
        ,sid            sid_owner
from sysmaster:sysrstcb a, sysmaster:syslcktab c, sysmaster:flags_text e, systables t
where   c.owner = a.txp 
        and e.tabname = 'syslcktab' and e.flags = c.type
        and ( c.partnum = hex(t.partnum) 
              or
              c.partnum in (select hex(partn) from sysfragments f,systables t 
                       where t.tabid=f.tabid and fragtype = 'T')
            )
        and t.tabname matches 
--'table-name or *'
order by  1 , 2 , 3 , 4 
...
Рейтинг: 0 / 0
ISAM error: non-exclusive access
    #36896242
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sitarinformix 7.31.UD6

пытаюсь создать индекс к часто используемой табличке.

begin work;
lock table docum_kopf in exclusive mode;
create index vix311_10x on docum_kopf (ext_id);
commit work;
-------
ответ:
-------
Started transaction.
Table locked.
212: Cannot add index.
106: ISAM error: non-exclusive access.
Error in line 1
Near character position 97
Data committed.
-------

что-то непойму в чем проблемма %)

/topic/751477&hl=lock#8644003
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / ISAM error: non-exclusive access
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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