2009-11-11 2 views
7

Ich würde gerne herausfinden, die beste Möglichkeit, die Daten zu archivieren, die nicht mehr benötigt wird, um die Anwendungsleistung zu verbessern und auch Speicherplatz zu sparen. Was ist nach Ihrer Erfahrung der beste Weg dies zu implementieren, welche Art von Tools kann ich verwenden? Ist es besser, zu diesem Zweck eine spezifische Inhouse-Anwendung zu entwickeln?Wie kann die Datenarchivierung in einer Oracle-Datenbank am besten durchgeführt werden?

+0

Es gibt viele Möglichkeiten der Archivierung von Oracle. U müssen keine Werkzeuge entwickeln. Was für Hardware/Budget hast du? Haben SANS installiert. Brauchen Sie Ihre Archivdaten, die fast verfügbar sind, oder können Sie sie jahrelang in einem externen Schrank aufbewahren? –

+0

Warum wird Archivierung die Anwendungsleistung verbessern? Wenn Sie Daten archivieren möchten, müssen Sie sich überlegen, wie Sie später darauf zugreifen werden (falls erforderlich). Denken Sie daran, dass zukünftige Schemaänderungen und Datenbankaktualisierungen die Fähigkeit beeinträchtigen werden, sie "nur" neu zu laden. –

+4

Ich denke, dass wir hier mehr über Ihre Bedürfnisse erfahren müssen ... die Datenmenge, wie komplex das Schema ist und wie viele Tabellen Sie archivieren müssen, ob Sie diese Daten jemals wieder benötigen und wenn ja, was wäre das SLA für den Zugriff darauf ... –

Antwort

-2

Ich würde die Daten in eine kommagetrennte Datei exportieren, damit sie in fast jede Datenbank exportiert werden kann. Wenn Sie also Oracle-Versionen ändern oder Jahre später zu etwas anderem wechseln, können Sie es ohne große Bedenken wiederherstellen.

die Spool-Datei-Funktion von SQL * Verwenden Sie dazu, dies zu tun: http://cisnet.baruch.cuny.edu/holowczak/oracle/sqlplus/#savingoutput

+1

Dies ist eine legitime Operation, die in Oracle SQL dokumentiert ist. Es gibt Beweise in dem Link. –

+2

Für alles andere als kleine Datenmengen ist dies eine schlechte Option. Es hat Schwierigkeiten mit komplexen Datentypen und sogar mit einfachen VARCHAR2-Spalten, die das Trennzeichen enthalten könnten. –

+0

Es gibt auch potentielle Probleme mit Clobs. – EvilTeach

0

Der beste Weg, die alten Daten in Oracle-Datenbank zu archivieren ist:

  1. ein Archiv und Aufbewahrungsrichtlinien definieren basierend auf Datum oder Größe.
  2. Exportieren Sie archivierbare Daten basierend auf einer definierten Richtlinie in eine externe Tabelle (Tablespace).
  3. Komprimieren Sie den externen Tisch und speichern Sie ihn in einem günstigeren Speichermedium.
  4. Löschen Sie die archivierten Daten aus Ihrer aktiven Datenbank mit SQL DELETE.
  5. Dann, um den Raum zu bereinigen, führen Sie die folgenden Befehle aus: alter table T_XYZ aktivieren Zeilenbewegung; alter table T_XYZ Schrumpfraum;
  6. Wenn Sie immer noch etwas Speicherplatz auf dem Betriebssystem freigeben möchten (da Oracle jetzt den gesamten zuvor verwendeten Speicherplatz reserviert hätte), müssen Sie möglicherweise die Größe der Datendatei selbst ändern: SQL> alter database datafile '/home/oracle/database/../XYZ.dbf' Größe 1m;

Für weitere Informationen siehe auch: http://stage10.oaug.org/file/sroaug080229081203621527.pdf

+0

Zu Schritt 4. Wenn das Löschen ein Leistungsbedenken ist, könnte ich die aktuellen Daten in eine neue Tabelle ziehen, die alte Tabelle löschen und die neue in den alten Namen umbenennen – EvilTeach

1

Eine Möglichkeit der Archivierung verwalten:

  1. Partition Tabellen auf Datumsbereich, z.B. monatliche Partitionen
  2. Da Partitionen veraltet werden, z. Nach 36 Monaten können diese Partitionen jetzt in Ihr Data Warehouse verschoben werden. Dies kann je nach Zugriffsanforderungen eine andere Datenbank mit nur Textdateien sein.
  3. Nach dem Verschieben können die veralteten Partitionen aus Ihrer Primärdatenbank entfernt werden, sodass immer nur aktuelle Daten (z. B. 36 Monate) beibehalten werden.
  4. All dies kann mit einer Mischung aus SQL/Shell-Skripten automatisiert werden.