Scratch Geschrieben 5. Oktober 2006 Geschrieben 5. Oktober 2006 Hi, ich habe hier ein Problem mit einem dbf das mir etwas zu groß geworden ist, um genau zu sein ist es exakt 32 GB groß :-) Ich möchte es wieder verkleinern erhalte aber jedes mal den Fehler: ORA-03297: file contains used data beyond requested RESIZE value Laut EM sind von diesen 32 GB gerade mal 8 GB belegt. Wie kann ich dieses Problem den lösen? Grüße Scratch Zitieren
Amstelchen Geschrieben 5. Oktober 2006 Geschrieben 5. Oktober 2006 das liegt wohl daran, dass die sogenannte "high water mark" über der bei ALTER ... RESIZE angegeben grösse liegt. ein blick auf die dba_extents und dort die höchste block_id verrät über umwege die maximal einsparbare grösse. ein beispiel zeigt z.b. http://www.oracleadvice.com/Tips/dfhwm.htm alles was darunter liegt, müsste IMO exportiert, gedroppt und wieder neu eingespielt werden. s'Amstel Zitieren
johnhaltonx Geschrieben 6. Oktober 2006 Geschrieben 6. Oktober 2006 nicht zwingend es kann auch sein das am ende des Datenfiles noch ein extent belegt ist auch wenn der größte teil des DBF-Files leer ist, verkleinern geht immer nur bis zum letzten verwendeten Extent. Welche Oracle Version? ab 9i könntest du die Objekte in dem Tablespace per "ALTER TABLE name MOVE neuer Tablespace name" in einen neuen TS umziehen und den zu großen alten hinterher löschen. select für TS angaben select nvl(b.tablespace_name, nvl(a.tablespace_name,'UNKNOWN')) "Tablespace", kbytes_alloc "Allocated MB", kbytes_alloc-nvl(kbytes_free,0) "Used MB", nvl(kbytes_free,0) "Free MB", ((kbytes_alloc-nvl(kbytes_free,0))/kbytes_alloc) "Used", data_files "Data Files" from ( select sum(bytes)/1024/1024 Kbytes_free, max(bytes)/1024/1024 largest, tablespace_name from sys.dba_free_space group by tablespace_name ) a, ( select sum(bytes)/1024/1024 Kbytes_alloc, tablespace_name, count(*) data_files from sys.dba_data_files group by tablespace_name )b where a.tablespace_name (+) = b.tablespace_name order by 1 Zitieren
mme Geschrieben 6. Oktober 2006 Geschrieben 6. Oktober 2006 Ab Version 10 folgende Möglichkeit: du kannst alle objekte die in dem Tablespace liegen shrinken. Alter ..... shrink space [cascade]; damit rückt der Speicherplatz der Tabellen zusammen und sie rücken wohl auch wieder hintereinander und du kannst dann das file resizen. Bevor du das machst musst du aber rowmovement anstellen... (und darauf hoffen das in deinen Applikationen sauber gearbeitet wird und keine Schweinereien mit rowids gemacht werden. Die können sich nämlich ändern).... (alter table ... enable row movement;) Zitieren
Scratch Geschrieben 9. Oktober 2006 Autor Geschrieben 9. Oktober 2006 Hi, es ist ne 10.2.0.1 was also wäre der beste Weg? Gruß Scratch Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.