Zgaduję, że używasz automatycznego przechowywania. (Nie żeby tak się stało inaczej. Po prostu łatwo to zrobić z automatycznym przechowywaniem.)
Problem najprawdopodobniej polega na tym, że baza danych odzyskała miejsce dla siebie, ale nie zwolniła dysku z powrotem do systemu operacyjnego. Można to bardzo łatwo pokazać, sprawdzając znak wysokiej wody dla obszaru tabel.
Wykonaj następujące czynności
db2 list tablespaces show detail
To pokaże każdy obszar tabel i to, czego używa na dysku. Used pages
to ile stron dysku używa baza danych. Porównując to z total pages
(całkowitą wartością żądaną na dysku) i High water mark (pages)
pokaże, czy „żądasz” więcej, niż faktycznie potrzebujesz. (tj. mało używanych stron, bardzo wysoka liczba stron i znak wysokiej wody blisko wszystkich stron).
Aby pozbyć się tej niewykorzystanej przestrzeni i powrócić do systemu operacyjnego, byś wydać następujące (w automatycznym przechowywania) db2 alter tablespace <tablespace name> reduce max
. przykład
db2 alter tablespace ts1 reduce max;
Spowoduje to, że DB2 obniży znak wysokiego poziomu i zwolni nieużywany dysk z powrotem do systemu operacyjnego. (Uwaga: możesz to zrobić tylko w przypadku regularnych i dużych obszarów tabel, a nie systemowych lub tymczasowych obszarów tabel).
Jeśli korzystasz z DMS bez automatycznego przechowywania, musisz użyć nieco innego zestawu poleceń:
db2 alter tablespace <tablespace name> lower high water mark;
db2 alter tablespace reduce (<containter name> or [all containers] integer K|M|G or integer PERCENT);
przykład
db2 alter tablespace ts1 lower high water mark;
db2 alter tablespace reduce (all containers 500 M);
Tam, gdzie pracujemy, umieszczamy to w niektórych naszych skryptach konserwacyjnych, aby automatycznie uruchamiać to po przeprowadzeniu ponownych porządków, aby upewnić się, że odzyskamy miejsce na dysku. W naszym przypadku korzystamy z programu DB2 LUW 9.7 FP 4, więc sprawdzenie, czy masz dostęp do odpowiednich informacji dla swojej wersji, nie szkodzi podwójnemu sprawdzeniu Centrum informacyjnego dla wersji 9.5.
EDYCJA: Jeśli obszary tabel pochodzą z bazy danych zaktualizowanej do wersji DB2 9.7, prawdopodobnie nie będzie ustawiony atrybut atrybutu pamięci masowej, który można odzyskać. Dzieje się tak nawet w przypadku uaktualnienia z DMS do automatycznego przechowywania. Tak czy inaczej gryzie, ponieważ nie można obniżyć znaku wysokiej wody. Musisz zrzucić tabelę i dane, upuścić obszary tabel. Następnie ponownie utwórz przestrzeń tabel za pomocą automatycznego przechowywania i zaimportuj dane do swoich tabel.