Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
добрый день. DB2/iSeries делаю запрос: Код: plaintext 1. 2. или Код: plaintext 1. 2. 3. 4. 5. 6. при этом если вызвать более 2-х раз подряд, то таблица test блокируется. как этого избежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 10:27 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
А зачем вам понадобился commit в данном случае? Судя по обилию ";" это RPG Free format + embeded SQL под i5OS 5.4, и commit просто оператор SQL, а не команда на выполнение? в таком случае он там абсолютно лишний... и еще - лучше всегда использовать модификаторы - commit WORK , select * from table for read only Интересно было бы попытаться повторить ваш результат, но у меня так и не получилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 07:01 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Serg0А зачем вам понадобился commit в данном случае? Судя по обилию ";" это RPG Free format + embeded SQL под i5OS 5.4, и commit просто оператор SQL, а не команда на выполнение? в таком случае он там абсолютно лишний... и еще - лучше всегда использовать модификаторы - commit WORK , select * from table for read only Интересно было бы попытаться повторить ваш результат, но у меня так и не получилось... может это регулируется какими то настройками на аэске? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 08:11 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Serg0А зачем вам понадобился commit в данном случае? Судя по обилию ";" это RPG Free format + embeded SQL под i5OS 5.4, и commit просто оператор SQL, а не команда на выполнение? в таком случае он там абсолютно лишний... и еще - лучше всегда использовать модификаторы - commit WORK , select * from table for read only Интересно было бы попытаться повторить ваш результат, но у меня так и не получилось... может это регулируется какими то настройками на аэске? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 08:41 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Насонов Алексейможет это регулируется какими то настройками на аэске? Разговор ни о чем... не должен простой селект (на простенькой, как я понимаю таблице) так себя вести, какие-бы настройки где ни делались. а если это не просто селект, а часть распределенной транзакции, например, то где подробности? из STRSQL результат тот же? а через ODBC? что говорит WRKOBJLCK? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 09:47 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
C каким уровнем изоляции работаете? Возможно он слишком высокий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 14:29 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Serg0 Насонов Алексейможет это регулируется какими то настройками на аэске? Разговор ни о чем... не должен простой селект (на простенькой, как я понимаю таблице) так себя вести, какие-бы настройки где ни делались. а если это не просто селект, а часть распределенной транзакции, например, то где подробности? из STRSQL результат тот же? а через ODBC? что говорит WRKOBJLCK? через STRSQL - не блоктрует, через ODBC, JDBC блокирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 14:53 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Насонов Алексейчерез STRSQL - не блоктрует, через ODBC, JDBC блокирует. ну вот вам и ответ - значит параметр COMMIT при запуске STRSQL не блокирует чтение, а в ваших ODBC коннекциях и/или при компиляции сорца - если это все-таки хранимка (о чем вы молчите как партизан на допросе) - все с точностью до наоборот. и никакие настройки на сервере тут не при чем. если трудно(не возможно) определить дефолтовый уровень изоляции - укажите его явно в isolation-clause selecta'а : select * from ... with nc, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 16:34 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Насонов Алексейчерез STRSQL - не блоктрует, через ODBC, JDBC блокирует. ну вот вам и ответ - значит параметр COMMIT при запуске STRSQL не блокирует чтение, а в ваших ODBC коннекциях и/или при компиляции сорца - если это все-таки хранимка (о чем вы молчите как партизан на допросе) - все с точностью до наоборот. и никакие настройки на сервере тут не при чем. если трудно(не возможно) определить дефолтовый уровень изоляции - укажите его явно в isolation-clause selecta'а : select * from ... with nc, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 16:36 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Я в AS/400 ничего не понимаю, но, надеюсь, даже там после COMMIT все блокировки исчезают, если только курсор не WITH HOLD. И если в программе не используется WITH HOLD, то, быть может, где-то в настройках клиента стоит "открывать все курсоры с опцией WITH HOLD"? Да, нижний уровень изоляции позволит не создавать блокировки, так что и отпускать их не будет нужно, но это совершенно неспортивно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2008, 21:06 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Насонов Алексейдобрый день. DB2/iSeries делаю запрос: Код: plaintext 1. 2. или Код: plaintext 1. 2. 3. 4. 5. 6. при этом если вызвать более 2-х раз подряд, то таблица test блокируется. как этого избежать? простите, но каков смысл этого запроса? отсутсвие ключа по id? может таки лучше построить правильный LF и использовать native rpg? да и быстрее будет.. Serge Reva ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2008, 12:59 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Serg0 Насонов Алексейчерез STRSQL - не блоктрует, через ODBC, JDBC блокирует. ну вот вам и ответ - значит параметр COMMIT при запуске STRSQL не блокирует чтение, а в ваших ODBC коннекциях и/или при компиляции сорца - если это все-таки хранимка (о чем вы молчите как партизан на допросе) - все с точностью до наоборот. и никакие настройки на сервере тут не при чем. если трудно(не возможно) определить дефолтовый уровень изоляции - укажите его явно в isolation-clause selecta'а : select * from ... with nc, например. не имеет значения хранимка или явный select , все равно блокирует. Код: plaintext 1. тоже не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2008, 14:35 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Тех данных, что вы дали, ну абсолютно недостаточно для анализа... За всю свою 7-ми летнюю практику с АС/400 такого ни разу не встречал и повторить вашу ситуацию мне удалось только искусственно - c дефолтными настройками ODBC/JDBC и параметрами компиляции для SQLRPGLE все работает на ура. Если такая ситуация только с этой таблицей: WRKOBJLCK - смотрите кто держит объект, анализируйте job log, смотрите call stack... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2008, 15:50 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Ну, вот такое http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.apdv.cli.doc/doc/r0008781.html на AS/400 есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2008, 16:52 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaНу, вот такое http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.apdv.cli.doc/doc/r0008781.html на AS/400 есть? Именно такого параметра на клиенте я не знаю, но искусственно залочить можно - дурное дело не хитрое ;-) Мне удалось придумать похожую ситуацию (правда на большом объеме данных) - оптимизатор работает ну очень по разному в консоли и через ODBC + STRSQL не работает со статическим курсором. В результате, при запросе через ODBC с локальным курсором строится временный AccessPath и если объем данных достаточно велик, то можно нарваться на подобную ситуацию. В консоли при этом все будет ровно, поскольку курсор серверный и фетчится партиями... Дальше рыть уже не интересно - слишком много неизвестного, начиная с "таблица test блокируется" + любовь автора к голым абстракциям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 06:42 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Serg0 Victor MetelitsaНу, вот такое http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.apdv.cli.doc/doc/r0008781.html на AS/400 есть? Именно такого параметра на клиенте я не знаю, но искусственно залочить можно - дурное дело не хитрое ;-) Мне удалось придумать похожую ситуацию (правда на большом объеме данных) - оптимизатор работает ну очень по разному в консоли и через ODBC + STRSQL не работает со статическим курсором. В результате, при запросе через ODBC с локальным курсором строится временный AccessPath и если объем данных достаточно велик, то можно нарваться на подобную ситуацию. В консоли при этом все будет ровно, поскольку курсор серверный и фетчится партиями... Дальше рыть уже не интересно - слишком много неизвестного, начиная с "таблица test блокируется" + любовь автора к голым абстракциям это не голые абстракции, я недавно перешел на DB2 (до этого 7 лет отработал на Oracle) и не знаю с какой стороны подходить и вообще выпервые сталкиваюсь, чтобы простая выборка блокировала таблицу. Мне говорит наш главный разработчик, что таблица блокирована. если вы мне подскажете как пользоваться WRKOBJLCK , буду вам очень благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 10:35 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Добрый день. Это легко воспроизводится: создайте любую таблицу, вставьте в нее запись и через odbc, jdbc или даже из командного процессора db2 при подключении через db2 connect сделаете из нее одинаковый select 2 раза подряд. Посмотрите из wrkobjlck на эту таблицу. Блокировка на эту таблицу останется до конца сессии, что бы вы дальше не делали, с ключенным автокоммитом или нет. Некто Kent Milligan, уважаемый человек, называл эти блокировки, как soft object locks. Подробнее об этом здесь . Мне эта блокировка мешала, насколько я помню, только тем, что нельзя при этом из другой сессии таблицу удалить. Победить такое поведение не удалось, да и не надо было особо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 10:52 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
WRKOBJLCK OBJ(TESTLIB/TEST) OBJTYPE(*FILE) - появится список локов и их тип, в списке можно будет провалиться в WRKJOB и посмотреть подробности по JOB. под "голой абстракцией" я имел в виду, что вы не указали ни инструмент, ни драйвер, ни окружение, я уже молчу про версионность ;-) To Mark Barinstein: а вот родной, для iSeries, Client Access 5.2-5.4 такого "феномена" не обнаруживает ни через ADO-ODBC ни через JDBC. надо будет db2 connect поставить как-нибудь, попробовать из спортивного интереса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 13:11 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
С родным jdbc type 4 драйвером (jt400.jar) тоже есть "феномен". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 14:19 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
Serg0WRKOBJLCK OBJ(TESTLIB/TEST) OBJTYPE(*FILE) - появится список локов и их тип, в списке можно будет провалиться в WRKJOB и посмотреть подробности по JOB. под "голой абстракцией" я имел в виду, что вы не указали ни инструмент, ни драйвер, ни окружение, я уже молчу про версионность ;-) To Mark Barinstein: а вот родной, для iSeries, Client Access 5.2-5.4 такого "феномена" не обнаруживает ни через ADO-ODBC ни через JDBC. надо будет db2 connect поставить как-нибудь, попробовать из спортивного интереса. у меня IBM iSeries Acces fro windows Version 5 release 4 Modification level 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 15:04 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
н-да... почему же я не могу повторить? это уже интересно. основные эксперименты я делал под Client Acces 5.2 & i5OS V5R2M0. Повторю для "комплекта" 5.4. Насчет db2 connect - на DB2 ESE 8.2 (Win32) - делаю коннекцию к AS/400 5.2, пробую - никаких локов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2008, 16:00 |
|
||
|
блокировка таблиц
|
|||
|---|---|---|---|
|
#18+
удалось повторить с CA 5.4 и direct connect от DB2 UDB 9, с клиентами более ранних версий такого не наблюдается. Блокировка абсолютно не мешает - блокируется сам объект (PF), а не записи таблицы - их можно и удалять и обновлять. Так что, как уже и писал Mark Barinstein, это может помешать только если нужно удалять саму таблицу (удалить не получится и из той же сессии, что залочила PF, если не закрыть курсор). и WRKOBJLCK тому подтвеждение. ИМХО, это может гипотетически помешать только при работе с временными файлами, но их можно создавать в QTEMP (как это и принято) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2008, 07:56 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=35289238&tid=1603898]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 431ms |

| 0 / 0 |
