Einschränkung: ich bin nicht auf einem Oracle-system-administrator sind, außer für den persönlichen installiert. Nehmen Sie alles, sage ich mit einem großen Körnchen Salz.
Ich gehe davon aus, dass Sie erstellt die datafiles mit auto-verlängern, und Sie haben gewesen verlängerte Vergangenheit, was Sie fühlen, die Sie enthalten sollte. Gibt es eine Klausel zu ÄNDERN-DATENBANK wird die Größe einer Datei, hier ist das Beispiel von der Oracle-SQL-Referenz:
ALTERDATABASE
DATAFILE 'diskb:tbs_f5.dat' RESIZE 10 M;
Jedoch, ich glaube wirklich nicht, dass Sie dies tun wollen blind.Eine bessere Lösung IMO wäre, um die export-Befehl dump der Tabellen in dieser Datenbank, und erstellen Sie anschließend den Tabellenbereich.
Hier ist ein Weg, mit freundlicher Genehmigung von Tom Kyte, um die block-Größe der db-Liste, wie viel Speicherplatz können Sie möglicherweise zurückfordern, und zu bauen, das alter... - Befehle tatsächlich ausführen, die Datenbank verkleinert. Hoffe, das hilft,
Oder gehen Sie einfach direkt auf AskTom und bekommen maxshrink.sql, und Sie können ein Skript, das funktioniert, und leiden keine Werbung: asktom.oracle.com/pls/asktom/...
Dem ALTER TABLESPACE....Die GRÖßE ist nur zulässig, jenseits der HWM. So haben Sie viele nicht verwendete segmnets unten. Vor dieser operation ein Problem:
ALTER TABLE .. .SHRINK SPACE auf einige Tabellen, tablespace/datafile, um neu zu organisieren, die Inhalt der Datendateien.
Könnte eine lange Aufgabe, aber Sie können die Befehle generiert werden, die mit SQL.
@Dave's Antwort zum exportieren und importieren ist die richtige und die beste Wahl, um kostenlos den Speicherplatz.
Auch in Oracle gibt es keinen Befehl shrink, @Dave ist richtig, aber es gibt resize-Befehl, der als @David sagte: "Daten-Dateien können in der Größe verändert werden bis auf den letzten block verwendet" ABER es ist eine große Sache, dass freie Blöcke in der Datendatei zugewiesen werden können, wie
durch Größenänderung datafile bis zum letzten block verwendet wird es so:
010100000111100000000000000000000111|---------
Aber was ist mit anderen freien Blöcke in der Datei?? Sie sind nicht verfügbar für andere Datendateien oder das system selbst.
Wenn die Datei so:
1111111111111100000000000000000
dann die Größenänderung wäre nützlich, aber nicht in der vorherigen Variante.
Trotzdem zu erkennen, bis welche Größe Sie sind in der Lage resize datafile, hier ist das Skript:
select'alter database '||a.name||' datafile '''||b.file_name||''''||' resize '||greatest(trunc(bytes_full/.7),(bytes_total-bytes_free))||chr(10)||'--tablespace was '||trunc(bytes_full*100/bytes_total)||'% full now '||
trunc(bytes_full*100/greatest(trunc(bytes_full/.7),(bytes_total-bytes_free)))||'%'from v$database a
,dba_data_files b
,(Select tablespace_name,sum(bytes) bytes_full
From dba_extents
Groupby tablespace_name) c
,(Select tablespace_name,sum(bytes) bytes_total
From dba_data_files
Groupby tablespace_name) d
,(Select a.tablespace_name,a.file_id,b.bytes bytes_free
From(select tablespace_name,file_id
,max(block_id) max_data_block_id
from dba_extents
groupby tablespace_name,file_id) a
,dba_free_space b
where a.tablespace_name = b.tablespace_name
and a.file_id = b.file_id
and b.block_id > a.max_data_block_id) e
Where b.tablespace_name = c.tablespace_name
And b.tablespace_name = d.tablespace_name
And bytes_full/bytes_total <.7And b.tablespace_name = e.tablespace_name
And b.file_id = e.file_id
Mach dir keine sorgen das Skript wird nicht geschnitten, alle verwendeten Bausteine aus der Datendatei.
Für standard-Datendateien in Oracle, Sie können nicht schrumpfen. Sie würde etwas zu machen wie:
Verschieben der Segmente zu einem anderen tablespace oder exportieren, und legen Sie Sie
Drop datafile
Erstellen Sie eine neue, kleinere Datei zu
Verschieben Sie die Segmente zurück zu den ersten Tabellen, oder importieren Sie Sie aus der dump-Datei
Für eine "bigfile" tablespace-was bedeutet, dass CREATE BIGFILE TABLESPACE verwendet wurde, um es zu schaffen-Sie können mit ALTER TABLESPACE .. die GRÖßE ...
Falsch. Daten-Dateien können in der Größe verändert werden bis auf den letzten block verwendet, der kann bestimmt werden aus der dba_extents data-dictionary-view. Welchen Befehl würden Sie für das, David? Nevermind, ich sehe es in kdgregory Antwort.
Einschränkung: ich bin nicht auf einem Oracle-system-administrator sind, außer für den persönlichen installiert. Nehmen Sie alles, sage ich mit einem großen Körnchen Salz.
Ich gehe davon aus, dass Sie erstellt die datafiles mit auto-verlängern, und Sie haben gewesen verlängerte Vergangenheit, was Sie fühlen, die Sie enthalten sollte. Gibt es eine Klausel zu ÄNDERN-DATENBANK wird die Größe einer Datei, hier ist das Beispiel von der Oracle-SQL-Referenz:
Jedoch, ich glaube wirklich nicht, dass Sie dies tun wollen blind.Eine bessere Lösung IMO wäre, um die export-Befehl dump der Tabellen in dieser Datenbank, und erstellen Sie anschließend den Tabellenbereich.
InformationsquelleAutor kdgregory
Hier ist ein Weg, mit freundlicher Genehmigung von Tom Kyte, um die block-Größe der db-Liste, wie viel Speicherplatz können Sie möglicherweise zurückfordern, und zu bauen, das alter... - Befehle tatsächlich ausführen, die Datenbank verkleinert. Hoffe, das hilft,
http://cglendenningoracle.blogspot.com/2009/08/how-do-i-shrink-datafiles-to-reclaim.html
Craig Glendenning
InformationsquelleAutor
Dem ALTER TABLESPACE....Die GRÖßE ist nur zulässig, jenseits der HWM. So haben Sie viele nicht verwendete segmnets unten. Vor dieser operation ein Problem:
ALTER TABLE .. .SHRINK SPACE auf einige Tabellen, tablespace/datafile, um neu zu organisieren, die Inhalt der Datendateien.
Könnte eine lange Aufgabe, aber Sie können die Befehle generiert werden, die mit SQL.
InformationsquelleAutor user173422
@Dave's Antwort zum exportieren und importieren ist die richtige und die beste Wahl, um kostenlos den Speicherplatz.
Auch in Oracle gibt es keinen Befehl shrink, @Dave ist richtig, aber es gibt resize-Befehl, der als @David sagte: "Daten-Dateien können in der Größe verändert werden bis auf den letzten block verwendet" ABER es ist eine große Sache, dass freie Blöcke in der Datendatei zugewiesen werden können, wie
wo:
0-frei-block
1-block verwendet
durch Größenänderung datafile bis zum letzten block verwendet wird es so:
Aber was ist mit anderen freien Blöcke in der Datei?? Sie sind nicht verfügbar für andere Datendateien oder das system selbst.
Wenn die Datei so:
dann die Größenänderung wäre nützlich, aber nicht in der vorherigen Variante.
Trotzdem zu erkennen, bis welche Größe Sie sind in der Lage resize datafile, hier ist das Skript:
Mach dir keine sorgen das Skript wird nicht geschnitten, alle verwendeten Bausteine aus der Datendatei.
InformationsquelleAutor kupa
Für standard-Datendateien in Oracle, Sie können nicht schrumpfen. Sie würde etwas zu machen wie:
Für eine "bigfile" tablespace-was bedeutet, dass CREATE BIGFILE TABLESPACE verwendet wurde, um es zu schaffen-Sie können mit ALTER TABLESPACE .. die GRÖßE ...
Welchen Befehl würden Sie für das, David?
Nevermind, ich sehe es in kdgregory Antwort.
InformationsquelleAutor Dave Costa