Les outils d’Oracle 10g
Oracle Export / Oracle Import
Ce paragraphe traite de l’utilisation pratique de l’utilitaire d’Export/Import. C’est un outil fort apprécié et pourtant négligé lors des formations Oracle. Ses principales utilisations sont les suivantes : • le déplacement du contenu d’une base vers une autre (regroupement, migrations…) ; • des sauvegardes partielles.
Principes de l’Export/Import
Le principe de l’Export/Import est d’extraire des données d’une base Oracle dans un format indépendant de tout système d’exploitation et de les réintégrer ailleurs, pour ce qui concerne l’Import. Cet objectif se réalise en deux étapes : • Extrayez tous les objets (tablespaces, tables, index, procédures…) de la base de données. Ce sont les vues interrogeant le dictionnaire de la base Oracle qui réalisent cette fonction. Les objets sont extraits dans un ordre particulier. • Extrayez les données contenues dans les tables. Ce sont des ordres SELECT qui interrogent les tables et enregistrent les données dans un format d’Export particulier. L’opération d’Export est graduelle. Elle permet de transférer, par étapes, le contenu de la base : • full : exportation complète de la base ; • user : exportation de l’ensemble des objets propriétés d’un utilisateur ; • table : exportation d’une table particulière. Figure 18-1 Principe de l’Export/Import Base Oracle version X xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx Transfert du fichier en mode binaire Système d’expoitation « X » xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx EXPORT IMPORT Base Oracle version Y Système d’expoitation « Y » =Briard.Livre Page 389 Mardi, 21. février 2006 1:46 13 Outils et langages de programmation PARTIE IV 390 À l’inverse, l’Import insère le contenu d’un Export dans une base de données. De même que l’Export, il fonctionne suivant plusieurs modes : • full : importation complète de tous les objets présents dans le fichier export en entrée ; • user : importation de l’ensemble des objets propriétés d’un utilisateur ; • table : importation d’une table particulière.
L’Export/Import est-il un outil de sauvegarde ?
Force est de reconnaître que l’on ne peut pas considérer l’Export/Import comme un moyen de sauvegarde fiable à 100%. En effet, dans certains cas, vous pouvez effectuer une exportation complète sans exporter la totalité du contenu de la base. Par exemple, si l’un des tablespaces est inactif (OFFLINE), aucun des objets de ce tablespace ne sera exporté. L’exportation sera partielle au vu du contenu global de la base, ce qui peut être grave. L’Export/Import est complémentaire des sauvegardes classiques, c’est-à-dire de la totalité des fichiers physiques qui constituent la base de données. Ce type de sauvegarde très puissant peut être étendu et inclure les journaux d’activité (archivage des redo-log). L’Export/Import est intéressant si, par exemple, une table et ses données sont supprimées par erreur. Il est alors possible d’importer cette table (dont les données sont à J-1 si l’exportation a eu lieu la veille), sans perturber la production ni arrêter la base. Avant de choisir une stratégie de sauvegarde, reportez-vous au chapitre 26, La sauvegarde d’une base Oracle 10g. Où se situe le jeu d’essai de l’Export/Import ? À la différence de SQL*Loader, PL/SQL, Pro*C, il n’y a pas de fichier d’exemple livré par Oracle concernant l’Export/Import. Configuration préalable Pour rechercher dans le dictionnaire de données Oracle l’ensemble des objets existants dans la base, l’Export s’appuie sur des vues. Elles sont créées par le script catexp.sql, sous le compte utilisateur SYS (propriétaire du dictionnaire de la base). Il est exécuté durant la création de la base de données, à la fin de l’exécution du script catalog.sql, qui crée le catalogue de la base. Toutefois, le script catexp.sql peut être lancé manuellement, quand vous le souhaitez. Malgré son nom, (catalog export) il est aussi utilisé par le logiciel d’Import. Si le script de création des vues n’est pas exécuté, l’Export/Import cherchera à accéder à des vues inexistantes et générera une erreur. Les programmes d’Export/Import sont indépendants de la base de données. Ils peuvent être lancés en client-serveur pour accéder à des bases locales ou distantes. Sous Windows, les exécutables se nomment exp (Export) et imp (Import). Ils sont situés dans ORACLE_HOME\bin soit généralement C:\oracle\product\10.1.0\db_1\BIN.
Compatibilité des Export/Import avec les précédentes versions d’Oracle
Puisque les exécutables d’Export/Import sont des outils clients, ils ne se situent pas forcément sur la même machine et au même niveau de version que la base de données qu’ils interrogent. C’est pourquoi certaines versions d’Export/Import incorporent dans leur nom le numéro de la base de données à laquelle ils peuvent accéder (imp, exp, imp7, exp7…). Une version prévue pour exporter des données d’une base Oracle8i permet, par rapport à la version Oracle7, d’exporter les nouvelles possibilités de cette base (extensions objet, partitionnement, etc.). Réaliser l’exportation complète d’une base Oracle8i avec la version Export d’Oracle7 conduit à une exportation incomplète, ce qui est grave. En conséquence, il sera toujours plus facile de réaliser une exportation sur une base Oracle7 et d’en importer le contenu dans une base Oracle 10g. Dans ce cas, la compatibilité ascendante est assurée. Dans le cas d’une exportation Oracle 10g importée dans une base Oracle7, des difficultés peuvent survenir si vous avez utilisé dans la nouvelle version des possibilités inexistantes dans l’ancienne. Ces difficultés se traduisent par des erreurs lors des opérations. Si vous devez exporter vos données d’une base Oracle7, 8, 9i pour les importer dans une base Oracle 10g, utilisez la version correspondante pour l’exportation et la version 10g pour l’importation. Ce cas est fréquemment rencontré lors de l’évolution des versions Oracle. Que contient un fichier export ? Un fichier export est d’une taille beaucoup plus réduite que celle de la base de données exportée. Il ne contient que les ordres SQL de création des index, rollback segments, tablespaces, utilisateurs, droits, etc. Pour les autres objets, il contient à la fois leur définition, leur données et le code des programmes (tables, triggers, fonctions, etc.). Cette technique fait gagner beaucoup d’espace disque par rapport au volume de l’ensemble des fichiers qui composent la base de données. Le format interne d’un fichier export n’est pas lisible facilement. Il faut toujours passer par les programmes d’Export/Import pour en manipuler le contenu. Nous vous déconseillons d’utiliser des éditeurs pour en visualiser le contenu. En effet, leur codage interne est binaire afin d’éviter les problèmes de conversion lors d’un changement de système d’exploitation. Comment transférer des fichiers Export ? Il faut toujours utiliser un outil (par exemple ftp) qui permet de transférer les fichiers d’Export de machine à machine sous forme binaire. Cette erreur (transfert en mode texte et non binaire) fréquente se manifeste par l’impossibilité de charger le fichier dans la base cible.