DB2 - переместить таблицу из одного в другое табличное пространство - PullRequest
1 голос
/ 28 апреля 2020

Как можно переместить таблицу из одного табличного пространства (размер страницы 16 КБ) в другое табличное пространство (размер страницы 32 КБ) в DB2 версии 10 и далее? Я хочу избежать таких опций, как переименование, создание другой таблицы, копирование данных, удаление переименованных таблиц и т. Д. c.

В мире Oracle того же можно достичь с помощью простого оператора ALTER. Мой вопрос: есть ли что-нибудь подобное для DB2?

1 Ответ

2 голосов
/ 28 апреля 2020

Если в DB2 10 для z / OS в руководстве предлагается следующее

https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/admin/src/tpc/db2z_movetabledifferentpagesize.html

Чтобы переместить таблицу в табличное пространство другой размер страницы:

  1. Выгрузите таблицу, используя UNLOAD FROM TABLE или REORG UNLOAD EXTERNAL FROM TABLE.
  2. Используйте CREATE TABLE LIKE на таблице, чтобы заново создать ее в табличном пространстве новый размер страницы.
  3. Используйте DB2 Control Center, DB2 Administration Tool для z / OS или запросы каталога для определения зависимых объектов: представлений, авторизации, планов, пакетов, синонимов, триггеров, целостности ссылок, и индексы.
  4. Удалить исходную таблицу.
  5. Переименовать новую таблицу в имя старой таблицы с помощью RENAME TABLE.
  6. Повторно создать все зависимые объекты.
  7. Повторное связывание планов и пакетов.
  8. Перезагрузка таблицы с использованием данных из набора данных SYSRECnn и операторов управления из набора данных SYSPUNCH, который был создан при выгрузке таблицы.

для дб 2 (для LUW), используйте ADMIN_MOVE_TABLE

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0055069.html

Хранимая процедура ADMIN_MOVE_TABLE перемещает данные в активной таблице в новую объект таблицы с тем же именем, в то время как данные остаются в сети и доступны для доступа.

...