Scratch Geschrieben 5. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 5. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
johnhaltonx Geschrieben 6. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 6. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Scratch Geschrieben 9. Oktober 2006 Autor Teilen Geschrieben 9. Oktober 2006 Hi, es ist ne 10.2.0.1 was also wäre der beste Weg? Gruß Scratch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.