Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / мониторинг sql / 25 сообщений из 25, страница 1 из 1
02.08.2008, 19:38
    #35466953
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
Есть программа которая работает с db2.

Она добавляет записи в таблицу, в которой поле id уникальное и не NULL
Добавляю в эту же таблицу запись sql запросом сам.
Т.к. id надо передавать, беру предыдущее + 1, добавляется нормально.
Но после при попытки добавить заказ (записи) через программу, ругается на то что id не уникален (уже есть).
Вопрос:
Как узнать где храниться следующий уникальный id.
Как отследить запросы к бд, чтобы понять ответ на предыдущий вопрос.
...
Рейтинг: 0 / 0
04.08.2008, 10:57
    #35468174
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
Скорее всего какой-то sequence использует.

1.
Запустите свою программу, найдите ее application_id в выводе команды
db2 list applications
на сервере.
2.
Создайте event monitor для statements для этого соединения
Код: plaintext
1.
2.
3.
4.
5.
CREATE EVENT MONITOR TEST FOR STATEMENTS
WHERE APPL_ID='...'
WRITE TO TABLE 
  CONNHEADER (TABLE TEST_CONN, IN USERSPACE1)
, STMT (TABLE TEST_STMT, IN USERSPACE1);
SET EVENT MONITOR TEST STATE  1 ;
3.
Заставьте программу вставить строку в таблицу.
4.
Остановите монитор и посмотрите, что он поймал:
Код: plaintext
1.
SET EVENT MONITOR TEST STATE  0 ;
SELECT STMT_TEXT FROM ORDER BY SQL_REQ_ID;
...
Рейтинг: 0 / 0
04.08.2008, 12:16
    #35468460
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
А можно посмотреть ddl таблицы и код, который осуществляет вставку?
...
Рейтинг: 0 / 0
04.08.2008, 13:06
    #35468642
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
rimanА можно посмотреть ddl таблицы и код, который осуществляет вставку?

-- Этот файл CLP создан при помощи DB2LOOK Версии 9.1
-- Timestamp: 8/4/2008 1:04:55 PM
-- Database Name: CMS
-- Версия менеджера баз данных: DB2/NT Version 9.1.2
-- Кодовая страница базы данных: 1251
-- Последовательность слияния базы данных -: UNIQUE


CONNECT TO CMS;

-- Табличное пространство Mimic

ALTER TABLESPACE SYSCATSPACE
PREFETCHSIZE 16
OVERHEAD 24.100000
TRANSFERRATE 0.900000;


ALTER TABLESPACE TEMPSPACE1
PREFETCHSIZE 16
OVERHEAD 24.100000
TRANSFERRATE 0.900000;


ALTER TABLESPACE USERSPACE1
PREFETCHSIZE 16
OVERHEAD 24.100000
TRANSFERRATE 0.900000;


------------------------------------------------
-- Операторы DDL для таблицы "SHL "."SMORDER"
------------------------------------------------


CREATE TABLE "SHL "."SMORDER" (
"ID" INTEGER NOT NULL ,
"CUSTID" INTEGER ,
"CUSTCLASSID" SMALLINT WITH DEFAULT ,
"CREATEDATE" DATE NOT NULL ,
"CREATORID" SMALLINT NOT NULL ,
"REGDATE" DATE ,
"REGUSERID" SMALLINT ,
"DROPDATE" DATE ,
"DROPID" SMALLINT ,
"CLOSEDATE" DATE ,
"CLOSEID" SMALLINT ,
"DISCOUNT" DOUBLE WITH DEFAULT ,
"INUSE" SMALLINT ,
"CURS" DOUBLE WITH DEFAULT ,
"PRIM" CHAR(100) WITH DEFAULT '' ,
"CNID" INTEGER NOT NULL ,
"NDSP" DOUBLE WITH DEFAULT ,
"TYPE" SMALLINT WITH DEFAULT 0 ,
"DOCID" INTEGER ,
"PAYEDCOST" DOUBLE WITH DEFAULT )
IN "USERSPACE1" ;


-- Операторы DDL для первичных ключей таблицы "SHL "."SMORDER"

ALTER TABLE "SHL "."SMORDER"
ADD PRIMARY KEY
("ID");









-- Операторы DDL для внешних ключей таблицы "SHL "."SMORDER"

ALTER TABLE "SHL "."SMORDER"
ADD CONSTRAINT "SQL060307174455511" FOREIGN KEY
("CUSTID")
REFERENCES "SHL "."CUSTOMER"
("ID")
ON DELETE NO ACTION
ON UPDATE NO ACTION
ENFORCED
ENABLE QUERY OPTIMIZATION;

ALTER TABLE "SHL "."SMORDER"
ADD CONSTRAINT "SQL060307174455512" FOREIGN KEY
("CREATORID")
REFERENCES "SHL "."PERSONALL"
("ID")
ON DELETE NO ACTION
ON UPDATE NO ACTION
ENFORCED
ENABLE QUERY OPTIMIZATION;

ALTER TABLE "SHL "."SMORDER"
ADD CONSTRAINT "SQL060307174455530" FOREIGN KEY
("CNID")
REFERENCES "SHL "."CNARRAY"
("ID")
ON DELETE NO ACTION
ON UPDATE NO ACTION
ENFORCED
ENABLE QUERY OPTIMIZATION;

-- Операторы DDL для проверочных ограничений таблицы "SHL "."SMORDER"

ALTER TABLE "SHL "."SMORDER"
ADD CONSTRAINT "SQL060307180728010" CHECK
(TYPE IN (0,1,2))
ENFORCED
ENABLE QUERY OPTIMIZATION;

--------------------------------------------------------
-- Параметры конфигурации базы данных и менеджера баз данных
--------------------------------------------------------

UPDATE DBM CFG USING cpuspeed 1.889377e-007;
UPDATE DBM CFG USING intra_parallel NO;
UPDATE DBM CFG USING federated NO;
UPDATE DBM CFG USING fed_noauth NO;

UPDATE DB CFG FOR CMS USING locklist 1792;
UPDATE DB CFG FOR CMS USING dft_degree 1;
UPDATE DB CFG FOR CMS USING maxlocks 98;
UPDATE DB CFG FOR CMS USING avg_appls 1;
UPDATE DB CFG FOR CMS USING stmtheap 2048;
UPDATE DB CFG FOR CMS USING dft_queryopt 5;

---------------------------------
-- Значения переменных среды
---------------------------------


COMMIT WORK;

CONNECT RESET;

TERMINATE;

-- Генерировать статистику для всех создателей
-- Утилита db2look будет принимать во внимание только указанные таблицы
-- Создается DDL для таблиц
-- Автоматическое связывание пакета ...
-- Успешное связывание
-- Автоматическое связывание пакета ...
-- Успешное связывание
;

а вот как раз код, который осуществляет вставку, я и хотел бы сам увидеть
...
Рейтинг: 0 / 0
04.08.2008, 13:22
    #35468684
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
Ну раз кода нет, тогда совет Марка - единственный вариант.
...
Рейтинг: 0 / 0
04.08.2008, 13:36
    #35468734
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
SET EVENT MONITOR TEST STATE 0;
SELECT STMT_TEXT FROM ORDER BY SQL_REQ_ID;

Во второй строке между FROM и ORDER скорей всего вы что-то забыли...
...
Рейтинг: 0 / 0
04.08.2008, 13:43
    #35468753
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gicaSET EVENT MONITOR TEST STATE 0;
SELECT STMT_TEXT FROM ORDER BY SQL_REQ_ID;

Во второй строке между FROM и ORDER скорей всего вы что-то забыли...Виноват:
Код: plaintext
SELECT STMT_TEXT FROM test_stmt ORDER BY SQL_REQ_ID;
...
Рейтинг: 0 / 0
04.08.2008, 13:52
    #35468786
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
SELECT STMT_TEXT FROM test_stmt ORDER BY SQL_REQ_ID;

Успешно возвращено 0 строк. (((
...
Рейтинг: 0 / 0
04.08.2008, 14:01
    #35468812
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
проделал в ручную эти действия результат следующий, но что мне это даст?
...
Рейтинг: 0 / 0
04.08.2008, 14:19
    #35468892
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gicaпроделал в ручную эти действия результат следующий, но что мне это даст?Вам надо найти, как приложение делает insert в таблицу SMORDER.
Если вы сделали всё в той последовательности, как я написал, то приложение должно было сгенерировать insert в SMORDER, а текст этого insert должен был попасть в таблицу test_stmt.
Сделайте
Код: plaintext
1.
2.
select STMT_TEXT 
from test_stmt 
where UPPER(VARCHAR(stmt_text,  4000 )) like '%SELECT%SMORDER%';
Есть какой-то результат?
...
Рейтинг: 0 / 0
04.08.2008, 14:49
    #35468994
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
Mark Barinstein L0gicaпроделал в ручную эти действия результат следующий, но что мне это даст?Вам надо найти, как приложение делает insert в таблицу SMORDER.
Если вы сделали всё в той последовательности, как я написал, то приложение должно было сгенерировать insert в SMORDER, а текст этого insert должен был попасть в таблицу test_stmt.
Сделайте
Код: plaintext
1.
2.
select STMT_TEXT 
from test_stmt 
where UPPER(VARCHAR(stmt_text,  4000 )) like '%SELECT%SMORDER%';
Есть какой-то результат?Упс!
Опять ошибся:
Код: plaintext
1.
2.
select STMT_TEXT 
from test_stmt 
where UPPER(VARCHAR(stmt_text,  4000 )) like '%INSERT%SMORDER%';
...
Рейтинг: 0 / 0
04.08.2008, 14:54
    #35469014
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
нашёл, но вот как понять что в запросе вместо вопросов?
...
Рейтинг: 0 / 0
04.08.2008, 15:10
    #35469079
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
А что делает процедура smokeyn?
...
Рейтинг: 0 / 0
04.08.2008, 15:23
    #35469137
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
rimanА что делает процедура smokeyn?

Не нашёл где посмотреть это?
...
Рейтинг: 0 / 0
04.08.2008, 15:33
    #35469171
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gica rimanА что делает процедура smokeyn?

Не нашёл где посмотреть это?

Я не знаю как это делается для LUW, но для AS/400 - через меню "Generate SQL".
...
Рейтинг: 0 / 0
04.08.2008, 15:34
    #35469178
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gica rimanА что делает процедура smokeyn?

Не нашёл где посмотреть это?

в списке процедур её нет
...
Рейтинг: 0 / 0
04.08.2008, 15:38
    #35469190
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gica rimanА что делает процедура smokeyn?

Не нашёл где посмотреть это?Если это SQL процедура, то
Код: plaintext
SELECT TEXT FROM SYSCAT.ROUTINES WHERE ROUTINENAME='SMOKEYN';
...
Рейтинг: 0 / 0
04.08.2008, 15:41
    #35469198
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
результат 0, значит нет...
...
Рейтинг: 0 / 0
04.08.2008, 15:44
    #35469205
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
есть ли возможность просто отследить наличие изменения во всех таблицах, после выполнения операции с db2 сторонней программы
...
Рейтинг: 0 / 0
04.08.2008, 15:45
    #35469206
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gica
в списке процедур её нет

А что же тогда вызывается?
Это просто мое предположение, которое бы я на вашем месте проверил. Очень уж аккроним smokeyn похожа на "order-key-next".
...
Рейтинг: 0 / 0
04.08.2008, 15:46
    #35469210
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
L0gicaрезультат 0, значит нет...
У меня плохо отображается ваша картинка. Там действительно call smokeyn?
...
Рейтинг: 0 / 0
04.08.2008, 15:48
    #35469217
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
riman L0gicaрезультат 0, значит нет...
У меня плохо отображается ваша картинка. Там действительно call smokeyn?

да, именно так
...
Рейтинг: 0 / 0
04.08.2008, 15:52
    #35469225
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
нашёл smokeyn в Объекты программ -> пакеты
...
Рейтинг: 0 / 0
04.08.2008, 15:55
    #35469230
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
...
Рейтинг: 0 / 0
04.08.2008, 15:57
    #35469237
L0gica
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
мониторинг sql
далее уже всё понятно вроде бы))
огромное спасибо!
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / мониторинг sql / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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