Portál AbcLinuxu, 18. července 2025 11:08
Zrovna jsem toto asi před 1 měsícem řešil. Je potřeba si uvědomit, že jedno veliké mazání DELETE FROM ...
, které by bylo jako jedna veliká transakce, může zhavarovat na nedostatku místa v undo segmentu (dokud neuděláte commit, tak stále musíte mít někde zálohu pro případ rollback).
Dále je potřeba si uvědomit, že smazané místo zůstává zabrané v segmentu do okamžiku, dokud neuděláte alter table shrink space cascade
nebo alter table modify lob ...
pro LOB. Netuším jak to vypadá při zálohování, zda se zálohují i prázdné ale zabrané bloky. V případě LOBu pak záleží i na tom, kam se LOBy sypou zda přímo do řádku, nebo LOB segmentu (viz fráze enable storage in row
při vytváření tabulky)
Já jsem skončil u mazání po časových úsecích v nočním okně. Už to běží 14 dní a ještě dalších 14 dní poběží. Každou noc se zvládnou odmazat tak 2-3 časové úseky.
Pak bude následovat zmíněné alter table modify lob (mylob) store as secure file compress high
které jednak sesype ementál tabulky a LOB segmentu do kompaktní formy, a jednak dojde ke kompresi dat LOBu. Přesný příkaz bude pro sesypání tabulky/LOBu do kompaktnější formy závisí na tom zda se Váš LOB umísťuje převážně do řádku nebo do separátního LOB segementu. Kam LOBY převážně tečou zjistíte pokud se podíváte na velikost LOB segmentu. Z této části mám největší obavu, protože tabulka bude po celou dobu sesypání exklusivně zamknutá a já jen doufám, že se vejdu s časem běhu do víkendového okna.
create table as select (bez blobu) nolog alter table add blob alter table nolog recyclebin=off drop table rename table alter table lognebo podobné variace na toto téma.
add column update drop column rename column
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.