---
title: "Реорганизация таблиц и индексов в DB2"
description: "Соcтавление списка таблиц и индексов для реорганизации в данном запросе происходит с использованием ..."
author: "PeterWilson"
published: "2009-04-28T11:12:58+00:00"
modified: "2009-04-28T11:12:58+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/reorganizaciya-tablic-i-indeksov-v-db2-9889"
markdown_url: "https://yvision.kz/post/reorganizaciya-tablic-i-indeksov-v-db2-9889/markdown"
site_name: "Yvision.kz"
---

# Реорганизация таблиц и индексов в DB2

> Соcтавление списка таблиц и индексов для реорганизации в данном запросе происходит с использованием ...

Соcтавление списка таблиц и индексов для реорганизации в данном запросе происходит с использованием хранимых процедур reorgchk_tb_stats, reorgchk_ix_stats соответственно (эквивалент команды REORGCHK CURRENT STATISTICS).

При реорганизации таблиц внимание акцентируется на таблицах, содержащих поля типов *BLOB,CLOB, LONG VARCHAR* и тд и тп. Процесс реорганизации данных таблиц будет протекать только при указании опции *LONGLOBDATA. * В остальном, как обычно: оффлайн-реорганизация (то есть, отсутствие полного доступа к таблице), используется временное табличное пространство (в данном случае TEMP32) в целях избежания переполнения основного табличного пространства. При подготовке реорганизации индексов уделяется значение формул F4-F8 (в таблице SESSION.IX_STATS данные значения хранятся в полях F4-F8 соответственно). Разъяснение по этим формулам и их значениям описано в справочной документации по команде REORGCHK.

Вот и сам скрипт, генерирующий набор инструкций для реорганизации таблиц.

` --сначала реорганизуем таблицы, содержащих BLOB и LONG-поля`

call reorgchk_tb_stats('T', 'ALL');

` --------------------------------------------------------- `

`select 'reorg table '||trim(table_schema)||'.'||trim(table_name)|| `

` ' allow no access longlobdata use temp32;' `

`from session.tb_stats `

`join syscat.columns on table_schema=tabschema `

` and table_name=tabname `

`where reorg like '%*%' and (typename like 'LONG%' or typename like '%LOB%') `

`--------------------------------------------------------- `

` union `

`--------------------------------------------------------- `

`--затем все остальное `

`select 'reorg table '||trim(table_schema)||'.'||trim(table_name)|| `

` ' allow no access use temp32;' `

`from session.tb_stats `

`join syscat.columns on table_schema=tabschema `

` and table_name=tabname `

`where reorg like '%*%' and (typename not like 'LONG%' or typename not like '%LOB%'); `

А ниже скрипт, генерирующий набор инструкций для реорганизаций индексов

` call reorgchk_ix_stats('T', 'ALL'); `

`--------------------------------------------------------- `

`select 'reorg table '||trim(table_schema)||'.'||trim(table_name)|| `

` ' index '||trim(table_schema)||'.'||trim(index_name)|| `

` ' indexscan allow no access uses temp32;' `

`from session.ix_stats where F5 100 `

`---------------------------------------------------------`

` union` `--------------------------------------------------------- `

`select 'reorg indexes all for table '||trim(table_schema)||'.'|| trim(table_name)||' cleanup only all;' from session.ix_stats where F7>20 or F8>20; `

При реализации данного решения, основная идея была почерпнута у [rpillai](http://techsatwork.com/blog/?p=18), и небольшие подробности были взяты в статье ["Automatic table maintenance in DB2, Part 2: Automatic table and index reorganization in DB2 for Linux, UNIX, and Windows"](http://www.ibm.com/developerworks/db2/library/techarticle/dm-0707tang/index.html)

---

Source: [https://yvision.kz/post/reorganizaciya-tablic-i-indeksov-v-db2-9889](https://yvision.kz/post/reorganizaciya-tablic-i-indeksov-v-db2-9889)