Sauvegarde / restauration de la base de données pour les tests oracle 10g avec sqlplus ou rman

StackOverflow https://stackoverflow.com/questions/67666

Question

Utiliser Oracle 10g avec notre serveur de test est le moyen le plus efficace et le plus simple de sauvegarder et de restaurer une base de données à un point statique, en supposant que vous souhaitiez toujours revenir au point donné une fois qu'une sauvegarde a été créée.

Un exemple de cas d'utilisation serait le suivant

  1. installer et configurer tous les logiciels
  2. Modifier les données du point de test de base
  3. faire une sauvegarde en quelque sorte (cela fait partie de la question, comment faire cela)
  4. faire des tests
  5. retournez à l’étape 3 (restaurez le point de sauvegarde, c’est l’autre moitié de la question)

De manière optimale, cette opération serait effectuée via sqlplus ou rman ou une autre méthode scriptable.

Était-ce utile?

La solution

Vous n'avez pas besoin de faire une sauvegarde à votre heure de base. Activez simplement la base de données flashback, créez un point de restauration garanti, exécutez vos tests et faites un retour en arrière au point de restauration créé précédemment.

Les étapes à suivre sont les suivantes:

  1. Démarrez l'instance en mode montage.

    démarrage forcé du montage;

  2. Créez le point de restauration.

    créer un point de restauration before_test garantie dans la base de données flashback;

  3. Ouvrez la base de données.

    modifier la base de données ouverte;

  4. Lancez vos tests.

  5. Arrêtez et montez l'instance.

    arrêt immédiat; montage de démarrage;

  6. Retour au point de restauration.

    base de données flashback pour restaurer le point before_test;

  7. Ouvrez la base de données.

    modifier la base de données ouverte;

Autres conseils

Vous pouvez utiliser une fonctionnalité Oracle appelée Flashback , qui vous permet de créer un point de restauration sur lequel vous pourrez facilement revenir une fois les tests terminés.

Cité sur le site,

  

Flashback Database est comme un retour en arrière   bouton 'pour votre base de données. Il offre   récupération ponctuelle dans la base de données   sans nécessiter une sauvegarde du   la base de données à restaurer en premier. Quand   vous éliminez le temps qu'il faut pour   restaurer une sauvegarde de base de données à partir d'une bande,   base de données de récupération dans le temps est   rapide.

De par mon expérience, l'import / export est probablement la voie à suivre. L'exportation crée un instantané logique de votre base de données afin que vous ne la trouviez pas utile pour les bases de données volumineuses ou les exigences de performances élevées. Cependant, cela fonctionne très bien pour faire des instantanés et autres choses à utiliser sur plusieurs machines.

Je l'ai utilisé sur un projet de rails pour obtenir un instantané de produit que nous pourrions échanger entre développeurs pour des tests d'intégration et nous avons effectué le travail à l'aide de scripts rake. Nous avons écrit un petit script sqlplus qui détruisait la base de données, puis importé le fichier de vidage par dessus.

Certains articles que vous voudrez peut-être vérifier: Cheatsheet OraFAQ Oracle Wiki

Apparemment, Oracle n’aime plus imp / exp en faveur de data pompe , lorsque nous utilisions la pompe de données, nous avions besoin de choses que nous ne pouvions pas avoir (par exemple, des privilèges SYSDBA que nous ne pouvions pas obtenir dans un environnement partagé). Alors jetez un coup d'oeil mais ne soyez pas découragé si la pompe de données n'est pas votre sac, les vieux imp / exp sont toujours là :)

Je ne peux pas recommander RMAN pour ce genre de choses car RMAN nécessite beaucoup de configuration et nécessitera une configuration dans la base de données (il possède également son propre catalogue DB pour les sauvegardes, ce qui est un casse-tête pour une restauration à chaud ).

Si vous utilisez un système de fichiers prenant en charge les instantanés de copie sur écriture, vous pouvez configurer la base de données à l’état souhaité. Puis fermez tout et prenez un instantané du système de fichiers. Ensuite, effectuez vos tests et, lorsque vous êtes prêt à recommencer, vous pouvez restaurer l’instantané. Cela pourrait être plus simple que d’autres options, en supposant que vous disposiez d’un système de fichiers prenant en charge les instantanés.

La solution @Michael Ridley est parfaitement scriptable et fonctionnera avec n’importe quelle version d’Oracle.

C’est exactement ce que je fais, j’ai un script qui tourne toutes les semaines pour

  1. Restaurer le système de fichiers
  2. Appliquer les journaux d'archivage de production
  3. Prendre un nouveau " masquage préalable des données " Instantané FS
  4. Réinitialiser les journaux
  5. Appliquer " préproduction " masquage des données.
  6. Prendre un nouveau " masquage post-données " capture instantanée (permet à la restauration de publier des données masquées)
  7. Ouvrir la base de données

Cela nous permet de garder nos bases de données de développement proches de notre base de données de production.

Pour ce faire, j'utilise ZFS.

Cette méthode peut également être utilisée pour vos applications ou même pour votre "environnement" complet. (par exemple, vous pouvez "restaurer" tout votre environnement avec une seule commande (scriptée).

Si vous utilisez 10g, la première chose que vous voudrez probablement examiner est Flashback, car il est intégré à la base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top