Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
Здравствуйте.Столкнулся с 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@
17 фев 17, 15:50    [20221877]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
m&m
Guest
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
17 фев 17, 16:40    [20222083]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
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-реорганизацию. Закончилась с той же ошибкой, что писал вначале.
17 фев 17, 17:18    [20222220]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
m&m
Guest
curious_man,

По-моему, в доке речь о том, что для таблицы с adaptive compression (page-level compression),
попытка выполнить inplace reorg будет выдавать SQL2219 error.
Т.е. такой тип реорга недопустим в данном случае.
17 фев 17, 17:48    [20222362]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 819
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-реорганизацию. Закончилась с той же ошибкой, что писал вначале.

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.
...

Сколько данных в таблице? Нужна ли там компрессия вообще?
17 фев 17, 17:51    [20222379]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
CawaSPb,

Спасибо, после этих реоргов реорг онлайновый проходит без ошибок.
Таблица оказалась вообще пустая...
17 фев 17, 18:46    [20222585]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
Еще 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 и как можно решить эту проблемму?
20 фев 17, 08:00    [20227221]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 819
curious_man,

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

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

Используется ли USE <tablespace> опция REORG'а?
20 фев 17, 13:49    [20228541]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
CawaSPb,

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

2.
USE <tablespace> опция REORG не используется.
21 фев 17, 13:05    [20232751]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
CawaSPb,

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

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

SQLCODE=-960, SQLSTATE=57011, SQ
LERRMC=TEMPSPACE1,

К сообщению приложен файл (ToadExport1.xlsx - 12Kb) cкачать
22 фев 17, 08:58    [20235758]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
CawaSPb
Member

Откуда: Питер/Москва/Wroclaw
Сообщений: 819
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,

А не могли бы Вы тогда добавить информации:
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 проблемной таблицы (если это одна проблемная таблица, отличная от таблицы в начале темы)
22 фев 17, 18:35    [20238182]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4694
curious_man,

Добрый день.

Покажите ddl таблицы.
Там много разделов (table partitions)?
22 фев 17, 20:32    [20238554]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
Думаю возникает общесистемная проблемма, из-за которой потом реорги не идут.
Вот сегодня реорг закончился с этой же ошибкой на первой, небольшой табличке.
Прикрепляю все метрики, которые просили собрать.
23 фев 17, 09:15    [20239279]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108


К сообщению приложен файл (DB2_metrics.rar - 6Kb) cкачать
23 фев 17, 09:16    [20239280]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
Еще включил несколько отчетов.

К сообщению приложен файл (DB2_metrics.rar - 17Kb) cкачать
23 фев 17, 09:26    [20239291]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4694
curious_man,

В db2diag.log есть сообщения типа такого?
FUNCTION: DB2 UDB, Automatic Table Maintenance, db2HmonEvalReorg
MESSAGE : Failed to evaluate table ...
23 фев 17, 10:56    [20239453]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
Mark Barinstein,

Высылаю лог db2diag, который фиксировал события с момента старта реорга до его аварийного завершения.

К сообщению приложен файл (db2diag.log - 13Kb) cкачать
23 фев 17, 11:14    [20239477]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4694
curious_man,

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

Можете также попробовать создать другое system temporary пространство, и использовать его в reorg.
23 фев 17, 16:06    [20239985]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
curious_man
Member

Откуда:
Сообщений: 108
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? По какой ссылке можно это сделать?
24 фев 17, 10:24    [20241138]     Ответить | Цитировать Сообщить модератору
 Re: DB2v10.1 for LUW.  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4694
curious_man,

http://www-01.ibm.com/support/docview.wss?uid=swg21593214
24 фев 17, 19:48    [20242092]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить