2009-11-11 4 views
7

Je voudrais trouver la meilleure façon d'archiver les données qui ne sont plus nécessaires, afin d'améliorer les performances de l'application et aussi d'économiser de l'espace disque. Selon votre expérience, quelle est la meilleure façon de mettre en œuvre ce type d'outils? Il est préférable de développer une application interne spécifique à cette fin?Quelle est la meilleure façon d'effectuer l'archivage de données sur une base de données Oracle?

+0

Il existe plusieurs façons d'archiver Oracle. Vous n'avez pas besoin de développer d'outils. Quel genre de matériel/budget avez-vous. Avez-vous installé SANS. Avez-vous besoin de vos données d'archives, presque disponibles, ou peut-il être emballé dans un placard hors site pendant des années? –

+0

Pourquoi pensez-vous que l'archivage améliorera les performances des applications? Si vous voulez archiver des données, vous devez réfléchir à la manière dont vous y accéderez plus tard (si nécessaire). Gardez à l'esprit que les changements de schémas et les mises à niveau de base de données affecteront la possibilité de le "recharger". –

+4

Je pense que nous avons vraiment besoin d'en savoir plus sur vos besoins ici ... le volume de données, la complexité du schéma et le nombre de tables à archiver, si vous avez encore besoin de ces données et si oui, quelle serait le SLA pour y accéder ... –

Répondre

-2

Je voudrais exporter les données dans un fichier délimité par des virgules afin qu'il puisse être exporté dans presque n'importe quelle base de données. Donc, si vous changez des versions d'Oracle ou allez à quelque chose d'autre des années plus tard, vous pouvez le restaurer sans trop de souci.

Utilisez le fichier de spool fonctionnalité de SQL * Plus pour ce faire: http://cisnet.baruch.cuny.edu/holowczak/oracle/sqlplus/#savingoutput

+1

Ceci est une opération légitime qui est documentée dans Oracle SQL. Il y a une preuve dans le lien. –

+2

Pour toute autre chose que de petites quantités de données, c'est une mauvaise option. Il a des difficultés avec les types de données complexes et même avec de simples colonnes VARCHAR2 qui pourraient contenir le délimiteur. –

+0

Il existe également des problèmes potiontiels avec les clobs. – EvilTeach

0

La meilleure façon d'archiver les anciennes données dans la base de données ORACLE est:

  1. Définir une archive et politique de conservation basée sur la date ou Taille.
  2. Exportez les données archivables dans une table externe (tablespace) en fonction d'une stratégie définie.
  3. Comprimez la table externe et rangez-la dans un support de stockage moins cher.
  4. Supprimez les données archivées de votre base de données active à l'aide de SQL DELETE.
  5. Ensuite, pour nettoyer l'espace, exécutez les commandes suivantes: alter table T_XYZ activer le mouvement de ligne; alter table Espace de rétraction T_XYZ;
  6. Si vous souhaitez toujours libérer de l'espace disque sur le système d'exploitation (Oracle ayant réservé l'espace total précédemment utilisé), vous devrez peut-être redimensionner le fichier de données lui-même: SQL> alter database datafile '/home/oracle/database/../XYZ.dbf' redimensionne 1m;

Pour plus de détails, reportez-vous s'il vous plaît: http://stage10.oaug.org/file/sroaug080229081203621527.pdf

+0

À l'étape 4. Si la suppression est un problème de performances, je pourrais envisager d'extraire les données actuelles dans une nouvelle table, de supprimer l'ancienne table et de renommer la nouvelle à l'ancien nom – EvilTeach

1

Une façon de gérer l'archivage:

  1. partition vos tables sur la plage de dates, par exemple Partitions mensuelles
  2. Lorsque les partitions deviennent obsolètes, par ex. après 36 mois, ces partitions peuvent maintenant être déplacées vers votre entrepôt de données, ce qui pourrait être une autre base de données contenant uniquement des fichiers texte en fonction de vos besoins d'accès.
  3. Après le déplacement, les partitions obsolètes peuvent être supprimées de votre base de données primaire, en conservant ainsi toujours (par exemple) 36 mois de données en cours.
  4. Tout cela peut être automatisé en utilisant un mélange de scripts SQL/Shell.
Questions connexes