Mam tabelę LOB. Obecnie posiada 9 GB z 12 GB dostępnych. I, o ile wiem, usuwanie rekordów nie odzyskuje miejsca w przestrzeni tabel. (Było to dzięki prostej metodzie monitorowania pamięci - kwerendy skierowane do user_extents, co jest o wszystkim dozwolone jako non-DBA) Martwię się o obsługę dalszego przetwarzania.Jak odzyskać miejsce do przechowywania usuniętych obiektów LOB
Moją obawą jest po prostu brak miejsca - mamy około 9 GB z 12 GB dostępnych dla obszaru tabel i chcę dowiedzieć się, jak odzyskać miejsce przed pytaniem o więcej.
Kolumny LOB są przechowywane w osobnym obszarze tabel, ale "małe wiersze" są dozwolone.
To jest Oracle 11.1, a dane znajdują się w kolumnie CLOB i BLOB w tej samej tabeli. Segmenty indeksów LOB (SYS_IL ...) są małe, cała pamięć znajduje się w segmentach danych (SYS_LOB ...)
Próbowaliśmy oczyścić i połączyć się i nigdzie nie doszło - ta sama liczba bajtów w user_extents.
"Alter table xxx move" będzie działał, ale musielibyśmy mieć gdzieś miejsce, aby przenieść go do tego, co ma dość miejsca na zmienione dane. Musielibyśmy to zrobić poza godzinami pracy i oczywiście odbudować indeksy, ale to dość łatwe.
Kopiowanie dobrych danych i obcięcie, a następnie kopiowanie, również będzie działać. Ale to właśnie robi polecenie "zmień stół".
Czy brakuje mi łatwych sposobów na zmniejszenie rozmiarów i odzyskanie pamięci? Czy też "alter table xxx move" to najlepsze podejście? Czy to nie jest problem, a Oracle odzyska przestrzeń z usuniętych wierszy lobów, kiedy tego potrzebuje?
„która jest o wszystko wolno mi jako nie-DBA” Nie mógł nie zauważyć tego, a warto powiedzieć, że nie każdy ma problem techniczny techniczna odpowiedź. Jeśli jesteś osobą odpowiedzialną za martwienie się o te rzeczy, powinieneś otrzymać uprawnienia DBA lub przynajmniej uprawnienie systemowe SELECT DOWOLNEGO DYSCYJONEGO. Jeśli nie, powinieneś eskalować coś takiego, zanim wpłynie to na innych użytkowników. – durette