powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Создание скрипта создания объектов БД с помощью db2look
9 сообщений из 9, страница 1 из 1
Создание скрипта создания объектов БД с помощью db2look
    #39615186
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! У меня возникла следующая проблемная ситуация:
1. У меня есть БД EM255536;
2. Версия СУБД DB2 v9.1.1200.483 fixpack 12;
3. Версия сервера Windows Server 2003R2 Server Pack2;
4. Я хочу получить скрипт создания всех объектов EM255536, для это я запуская в командной строке следующую команду:
Код: plsql
1.
2.
3.
4.
C:\Program Files\IBM\SQLLIB\BIN>db2look -d EM255536 -e -a -o script.sql
-- Генерировать статистику для всех создателей
-- Создается DDL для таблиц
-- Вывод направлен в файл: script.sql   


5. Потом я открыл этот файл и заметил, что вначале идут команды создания процедуры или функции, а потом таблицы, вот фрагмент скрипта:
Код: plsql
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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
            ///.....

SET CURRENT SCHEMA = "METR    ";
SET CURRENT PATH = "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","METR";

CREATE PROCEDURE REPL_CSM_TRANSIT_UPDATE_SP

 (IN P_CSM_CODE INTEGER, 

  IN P_OP VARCHAR(3), 

  OUT P_RESULT INTEGER

 ) 

  LANGUAGE SQL

  NOT DETERMINISTIC

  CALLED ON NULL INPUT 

  MODIFIES SQL DATA

  INHERIT SPECIAL REGISTERS

  BEGIN

    DECLARE CSM_EXISTS INTEGER;--

    SET P_RESULT = 0;--

    IF NOT EXISTS (SELECT * FROM CSM_FK WHERE CSM_CODE = P_CSM_CODE) THEN<-----Тут идет ссылка на ещё не созданную таблицу CSM_FK

        SET P_RESULT = -1;--

        RETURN;--

    END IF;--

    SET CSM_EXISTS = (SELECT COUNT( * ) FROM REPL_CSM_TRANSIT WHERE CSM_CODE = P_CSM_CODE);--

    CASE P_OP

        WHEN 'INS' THEN

            IF CSM_EXISTS > 0 THEN

                SET P_RESULT = 1;--

                RETURN;--

            END IF;--

            INSERT INTO REPL_CSM_TRANSIT (CSM_CODE) VALUES (P_CSM_CODE);--

        WHEN 'DEL' THEN

            IF CSM_EXISTS = 0 THEN

                SET P_RESULT = 2;--

                RETURN;--

            END IF;--

            DELETE FROM REPL_CSM_TRANSIT WHERE CSM_CODE = P_CSM_CODE;--

        ELSE

            SET P_RESULT = 0;--

    END CASE;--

END;


///....

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

CREATE TABLE "METR    "."CSM_FK"  (
		  "CSM_CODE" INTEGER NOT NULL )   
		 IN "USERSPACE1" ; 


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

ALTER TABLE "METR    "."CSM_FK" 
	ADD CONSTRAINT "XPKCSM_FK" PRIMARY KEY
		("CSM_CODE");

///...  



6. Если в командной строке выполнить команду:
Код: plsql
1.
db2 -tvf script.sql


7. При выполнении скрипт возникают ошибки, связанные с тем, что процедуры, функции или триггеры создаются раньше чем таблицы, которые используются в них.

Вопросы:
1) Как исправить эту ситуацию?
2) Может быть есть какие то параметры у команды db2look?
3) Может есть какие то параметры для команды запуска скрипта?
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39615277
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
ASukhov19862) Может быть есть какие то параметры у команды db2look?Параметр -ct у db2look, если он там есть.
Но иногда может не помочь.
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39615283
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,
Спасибо все создалось как надо.
Есть еще один вопрос:
после параметра -z нужно указывать имя схемы, а можно указать несколько схем и как это сделать?
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39615352
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASukhov1986после параметра -z нужно указывать имя схемы, а можно указать несколько схем и как это сделать?
Только одно имя схемы.
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39615524
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

Спасибо за информацию
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39615564
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASukhov1986,

Сделайте бэкап базы, восстановите на отдельном стенде, там сделайте апгрейд до последнего фикспака хотя бы 9.7.
До того db2look был весьма и весьма глючен.
Что-то дублировалось, какие-то проблемы с UDF с одинаковым именем, но разной сигнатурой, c identity и сиквенсами и т.п.

Не забудьте про вытаскивание грантов, федеративные объекты (если они есть).

Если target база 9.7 или выше (по-моему с 9.7 добавилось), удобно будет выставить AUTO_REVAL в DEFERRED_FORCE (позволяет создавать невалидные объекты, при отсутствии, к примеру, какого другого объекта).

Потом:
Код: sql
1.
2.
call admin_revalidate_db_objects();
select * from syscat.invalidobjects;
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39616625
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb,
а можно в команде DB2move указать папку куда будут сохраняться файлы PC/IXF
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39616802
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASukhov1986CawaSPb,
а можно в команде DB2move указать папку куда будут сохраняться файлы PC/IXF
Не могу сказать, не пользовался.
Но что можно сказать с уверенностью, там есть куча "но". Генерируемые поля, сиквенсы, соблюдение ссылочной целостности, триггеры, от отработки которых при дублировании необходимо отказаться, и т.п.
Частично эти проблемы решаются использованием LOAD вместо IMPORT (но всё равно требует подбора различных опций - INDENTITY(IGNORE|MISSING|OVERRIDE),GENERATED(IGNORE|MISSING|OVERRIDE), ...)

Не могу с уверенностью утверждать, но предположил бы, что db2move должен использовать один и тот же внутренний механизм (API ?) вытаскивания DDL, что и db2load. Т.е. он тоже может быть глючный.

В этой ситуации лучше всё сделать самостоятельно - создание структуры + export/load


Рекомендация - замкнуть внесение изменений в структуру БД строго на себя (включая отбор DBADM, CONTROL и прочих прав), аккуратно конструировать DDL структуры и тестировать, тестировать, тестировать.
Попробовать пропихнуть идею поднятия версии совместно со сменой платформы - "семь бед, один ответ".
...
Рейтинг: 0 / 0
Создание скрипта создания объектов БД с помощью db2look
    #39617269
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CawaSPb, спасибо за информацию
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Создание скрипта создания объектов БД с помощью db2look
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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