powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2v10.1 for LUW.
20 сообщений из 20, страница 1 из 1
DB2v10.1 for LUW.
    #39406734
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.Столкнулся с SQL ERROR при реорганизации таблицы.
Самописная программа запускает реорганизацию таблиц. Однако реорг по одной таблице не проходит постоянно.
Вот синтаксис online-реорга:
CALL SYSPROC.ADMIN_CMD('REORG TABLE DB2ADMIN.MANAGE_USER INPLACE ALLOW WRITE ACCESS START')

Программа, запускающая реорганизацию получает такую ошибку от DB2:
SQLCODE=-2219, SQLSTATE=01H52, SQLERRMC=DB2ADMIN.MANAGE_USER;14

В логе DB2:
2017-02-17-14.56.36.610000+180 E1382H651 LEVEL: Error
PID : 7620 TID : 5728 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000 DB : MM13PT
APPHDL : 0-7 APPID: 10.200.2.30.4345.170217115303
AUTHID : DB2ADMIN HOSTNAME: manager
EDUID : 5728 EDUNAME: db2agent (MM13PT) 0
FUNCTION: DB2 UDB, data management, sqldOLRValidate, probe:100
MESSAGE : ADM5590E The specified INPLACE table reorganization action on table
"DB2ADMIN.MANAGE_USER" is not allowed on this node because of
SQLCODE -2219 reason code "14".

В чем может быть проблемма?

Может из-за типа данных в этой таблице?
Вот ее DDL:
CREATE TABLE DB2ADMIN.MANAGE_USER (
COLUMN1 VARCHAR(32) FOR BIT DATA,
COLUMN2 BLOB(4189000) INLINE LENGTH 2988 NOT NULL LOGGED COMPACT,
COLUMN3 BIGINT NOT NULL,
COLUMN4 TIMESTAMP NOT NULL,
COLUMN5 VARCHAR(128) NOT NULL,
COLUMN6 SMALLINT NOT NULL,
COLUMN7 BIGINT NOT NULL,
COLUMN8 BIGINT NOT NULL,
COLUMN9 VARCHAR(128),
COLUMN10 VARCHAR(128),
COLUMN11 VARCHAR(128),
COLUMN12 BIGINT
)
IN USERSPACE1
COMPRESS YES ADAPTIVE@

ALTER TABLE DB2ADMIN.MANAGE_USER
DATA CAPTURE NONE
PCTFREE 0
LOCKSIZE ROW
APPEND OFF
NOT VOLATILE@
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39406770
m&m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m&m
Гость
curious_manМожет из-за типа данных в этой таблице?
вполне. точне из-за типа сжатия:

Impact of classic table reorganization on table-level compression dictionaries
...
Note: Table-level dictionaries can be rebuilt using only classic table reorganization. If you attempt to perform an inplace table reorganization of a table that has any rows compressed using a page-level compression dictionary, the REORG command fails with a SQL2219 error.

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.1.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0056502.html
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39406801
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m&m,

Т.е как я понял, мне нужно выполнить оффлайновую реорганизацию с RESETDICTIONARY, т.к. для этой таблицы нет словаря сжатия?

You can force a new table-level compression dictionary to be built by performing a classic table reorganization that uses the RESETDICTIONARY parameter of the REORG TABLE command. When you specify the RESETDICTIONARY parameter, a new compression dictionary is built if there is at least one row in the table, replacing any existing dictionary.

Выполнил утилиту:
REORG TABLE DB2ADMIN.MANAGE_USER RESETDICTIONARY@
Предупреждение последовало:
2220: [IBM][DB2/NT] SQL2220W The compression dictionary was not built for one or more data objects.
В db2 логе ничего не отписало.

После запустил online-реорганизацию. Закончилась с той же ошибкой, что писал вначале.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39406830
m&m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m&m
Гость
curious_man,

По-моему, в доке речь о том, что для таблицы с adaptive compression (page-level compression),
попытка выполнить inplace reorg будет выдавать SQL2219 error.
Т.е. такой тип реорга недопустим в данном случае.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39406833
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
curious_manm&m,

Т.е как я понял, мне нужно выполнить оффлайновую реорганизацию с RESETDICTIONARY, т.к. для этой таблицы нет словаря сжатия?

You can force a new table-level compression dictionary to be built by performing a classic table reorganization that uses the RESETDICTIONARY parameter of the REORG TABLE command. When you specify the RESETDICTIONARY parameter, a new compression dictionary is built if there is at least one row in the table, replacing any existing dictionary.

Выполнил утилиту:
REORG TABLE DB2ADMIN.MANAGE_USER RESETDICTIONARY@
Предупреждение последовало:
2220: [IBM][DB2/NT] SQL2220W The compression dictionary was not built for one or more data objects.
В db2 логе ничего не отписало.

После запустил online-реорганизацию. Закончилась с той же ошибкой, что писал вначале.
Код: sql
1.
2.
ALTER TABLE DB2ADMIN.MANAGE_USER COMPRESS YES STATIC;
REORG TABLE DB2ADMIN.MANAGE_USER RESETDICTIONARY;



Но вообще говоря...
$ db2 \? SQL2220W|more
...
The object(s) either contained no records, or contained no records
larger than the minimum record length to be eligible for this page size.
...

Сколько данных в таблице? Нужна ли там компрессия вообще?
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39406880
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,

Спасибо, после этих реоргов реорг онлайновый проходит без ошибок.
Таблица оказалась вообще пустая...
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39407591
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще 1 проблемка. Периодически реорг заканчивается с ошибкой:

com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-960, SQLSTATE=57011, SQ
LERRMC=TEMPSPACE1,

Вот что в док-е пишут:
SQL0960C
The maximum number of objects have been created in table space tablespace-name.
Explanation
You cannot create a new object in the table space because the maximum number of objects for the table space has been reached.
User response
Specify a different table space in which to create the object or table. If the table space is a SYSTEM TEMPORARY table space, there are too many concurrent temporary tables in use.
sqlcode: -960
sqlstate: 57011

Т.е непонятно, чем забито системное табличное пространство TEMPSPACE1 и как можно решить эту проблемму?
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39407800
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
curious_man,

Странная ситуация...
Посмотрите, что выдаёт:
Код: sql
1.
select * from TABLE(MON_GET_TABLE(NULL,NULL,-2)) where tab_type='TEMP_TABLE';


Интересно, собственно, сколько их там всего и какие относятся к TEMPSPACE1?

Используется ли USE <tablespace> опция REORG'а?
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39408445
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,

1.
select * from TABLE(MON_GET_TABLE(NULL,NULL,-2)) where tab_type='TEMP_TABLE';
Пустой результат дает.

2.
USE <tablespace> опция REORG не используется.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39408877
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,

А вот сегодня я выполнил запрос, в момент, как шла реорганизация таблицы:
select * from TABLE(MON_GET_TABLE(NULL,NULL,-2)) where tab_type='TEMP_TABLE';

И вернулся результат непустой(Более 12000 строк). См. прикрепленный файл.
Также реорганизация закончилась с ошибкой:

SQLCODE=-960, SQLSTATE=57011, SQ
LERRMC=TEMPSPACE1,
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409331
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
curious_manCawaSPb,

А вот сегодня я выполнил запрос, в момент, как шла реорганизация таблицы:
select * from TABLE(MON_GET_TABLE(NULL,NULL,-2)) where tab_type='TEMP_TABLE';

И вернулся результат непустой(Более 12000 строк). См. прикрепленный файл.
Также реорганизация закончилась с ошибкой:

SQLCODE=-960, SQLSTATE=57011, SQ
LERRMC=TEMPSPACE1,
А не могли бы Вы тогда добавить информации:
1. Список табличных пространств: DDL или "db2 list tablespaces show detail" или "db2pd -db MM13PT -tablespaces".
2. Убедиться, что активность, плодящая временные таблицы - именно реорг:
db2 GET SNAPSHOT for APPLICATION AGENTID <app_handle>
Где <app_handle> - численный id из поля TABSCHEMA запроса по списку временных таблиц.
3. DDL проблемной таблицы (если это одна проблемная таблица, отличная от таблицы в начале темы)
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409392
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
curious_man,

Добрый день.

Покажите ddl таблицы.
Там много разделов (table partitions)?
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409484
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю возникает общесистемная проблемма, из-за которой потом реорги не идут.
Вот сегодня реорг закончился с этой же ошибкой на первой, небольшой табличке.
Прикрепляю все метрики, которые просили собрать.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409485
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409489
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще включил несколько отчетов.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409510
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
curious_man,

В db2diag.log есть сообщения типа такого?
FUNCTION: DB2 UDB, Automatic Table Maintenance, db2HmonEvalReorg
MESSAGE : Failed to evaluate table ...
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409513
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Высылаю лог db2diag, который фиксировал события с момента старта реорга до его аварийного завершения.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409606
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
curious_man,

По-хорошему надо открывать PMR.
Если хотите сами разобраться, то надо определить, что за приложение создает столько объектов в системном пространстве.
application_id приложения для запроса выше по временным таблицам есть в имени схемы, например: < 22565 ><DB2ADMIN>
Это что за приложение? Которое reorg делает или другое какое-то?

Можете также попробовать создать другое system temporary пространство, и использовать его в reorg.
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39409807
curious_man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Такое большое число объектов создает именно реорг.
В TEMPSAPCE1 на D:\DB2\NODE0000\SQL00001\SQLT0001.0 создано более 18000 пустых файлов.

У меня реорг c tempspace2 проходит только в таком виде:
REORG TABLE MM.SECTIONS use tempspace2 RESETDICTIONARY@

1.Создал TEMPSPACE2 и запустил реорг.Закончился с SQL0104N 42601:
CREATE SYSTEM TEMPORARY TABLESPACE TEMPSPACE2
MANAGED BY SYSTEM
USING ('D:\DB2\NODE0000\SQL00001\SQLT0011.0')@
REORG TABLE MM.SECTIONS use tempspace2 INPLACE ALLOW WRITE ACCESS START@
Lookup Error - DB2 Database Error: ERROR [42601] [IBM][DB2/NT] SQL0104N
An unexpected token "INPLACE" was found following "<identifier>". Expected tokens may include: "RESETDICTIONARY".

2.
Есть еще вариант онлайнового реорга. Но он тоже с ошибкой закончился SQL2221N 5U044:
REORG TABLE MM.SECTIONS reclaim extents allow write access@
ERROR [5U044] [IBM][DB2/NT] SQL2221N The REORG command failed because the specified table "SECTIONS" is incompatible with the request to reclaim extents.

3.
Реорганизуемая таблица:
CREATE TABLE MM.SECTIONS (
SEC_MOD CHARACTER(3) NOT NULL,
SEC_NUM CHARACTER(8) NOT NULL,
SEC_CODE CHARACTER(2) NOT NULL,
BEG_DT TIMESTAMP NOT NULL,
END_DT TIMESTAMP,
LP_0 SMALLINT NOT NULL,
LP_1 SMALLINT,
POSTR_DATE DATE,
ID_LM SMALLINT,
NEW_SEC_MOD CHARACTER(3),
NEW_SEC_NUM CHARACTER(8),
NEW_SEC_CODE CHARACTER(2),
PR_0 CHARACTER(1) NOT NULL DEFAULT '0',
PR_1 CHARACTER(1) DEFAULT '1',
A_SEC_ID_DPL INTEGER,
A_SEC_ID_OWNER INTEGER,
I_MM_DOR SMALLINT NOT NULL,
I_MM_ID INTEGER NOT NULL,
U_MM_DOR SMALLINT,
U_MM_ID INTEGER
)
IN TSMM;

ALTER TABLE MM.SECTIONS
DATA CAPTURE NONE
PCTFREE 0
LOCKSIZE ROW
APPEND OFF
NOT VOLATILE;

А как открывать PMI? По какой ссылке можно это сделать?
...
Рейтинг: 0 / 0
DB2v10.1 for LUW.
    #39410022
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / DB2v10.1 for LUW.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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