Académique Documents
Professionnel Documents
Culture Documents
I. SQL*LOADER
SQL LOADER est un utilitaire de chargement en bloc utilisé pour déplacer des
données de fichiers externes vers la base de données Oracle.
Donc pour exécuter l’outil SQL*LOADER, nous avons besoins des fichiers
suivants :
- Fichier de données d’entrée : stocke des données délimitées ou des données
brutes(.csv, .dat, .txt)
- Fichier de contrôle (.ctl) : contient la spécification sur la façon dont les données seront
chargées (append, insert, truncate)
- Fichier de journal (.log) : résumé du traitement
- Bad file (.bad) : stocke les données non valides
Les enregistrements lus à partir du fichier d'entrée peuvent ne pas être insérés dans la base de
données. Ces enregistrements sont placés soit dans un ‘bad file’, soit dans un ‘rejected file’.
1
un champ délimité dépasse sa longueur maximale, SQL*Loader rejette l'enregistrement. Les
enregistrements rejetés sont placés dans le ‘bad file’.
Exemple 1 :
SQL> DROP TABLE EMP_LOAD;
SQL> CREATE TABLE EM_LOAD
(EMPNO NUMBER, FNAME VARCHAR2(100), LNAME VARCHAR2(100)) ;
APPEND
Si des données existent déjà dans la table, SQL*Loader y ajoute les nouvelles lignes. Si les
données n'existent pas encore, les nouvelles lignes sont simplement chargées. Vous devez
disposer du privilège SELECT pour utiliser l'option APPEND.
REPLACE
L'option REPLACE exécute une instruction SQL DELETE FROM TABLE. Toutes les lignes
de la table sont supprimées et les nouvelles données sont chargées. La table doit figurer dans
votre schéma, ou vous devez disposer du privilège DELETE sur la table..
2
TRUNCATE
L'option TRUNCATE exécute une instruction SQL TRUNCATE TABLE nom_table REUSE
STORAGE, ce qui signifie que les extents de la table seront réutilisés. L'option TRUNCATE
supprime rapidement et efficacement toutes les lignes d'une table, afin d'obtenir les meilleures
performances possibles. Pour que l'instruction TRUNCATE fonctionne, les contraintes
d'intégrité référentielle de la table doivent d'abord être désactivées. Si elles n'ont pas été
désactivées, SQL*Loader renvoie une erreur.
INSERT
Insérer permet aux enregistrements d'entrer dans la table uniquement si celle-là est vide.
II. Chargement des Tables Externes (External Table Loads)
Les tables externes sont définies comme des tables qui ne résident pas dans la base
de données, et peuvent être dans n'importe quel format pour lequel un pilote
d'accès est fourni. La base de données Oracle fournit deux pilotes d'accès :
ORACLE_LOADER et ORACLE_DATAPUMP. En fournissant à la base de
données des métadonnées décrivant une table externe, la base de données est
capable d'exposer les données de la table externe comme s'il s'agissait de données
résidant dans une table de base de données ordinaire.
D’une autre façon, les tables externes sont des tables dont les méta données
(structures) dans la base de données, mais dont les données sont hors de la BDD.
Nous pouvons accéder aux données des tables externes par deux méthodes :
Oracle_loader ou oracle_datapump
Un chargement de table externe crée une table externe pour les données contenues
dans un fichier de données. Le chargement exécute des instructions INSERT pour
insérer les données du fichier de données dans la table cible.
Exemple 2 :
Ouvrir SQLPLUS
User-name: sys as sysdba
Mot de passe:4321
SQL> show con_name; -- le conteneur courant
SQL> alter session set container=orclpdb; --
SQL> grant create any DIRECTORY to hr; -- donner ce privilège à l’utilisateur
hr
SQL> CREATE OR REPLACE DIRECTORY EMP_DIR AS ‘C:\external’; --
même si hr --qui a créé le DIRECTORY, il sera attribué à l’admin ( seul admin
qui peut créer ---des ‘directories’.
3
SQL> SELECT * FROM ALL_DIRECTORIES WHERE
DIRECTORY_NAME=’EMP_DIR’;
SQL> drop table EMP_LOAD_EXT;
SQL> CREATE TABLE EMP_LOAD_EXT
(EMPLOYEE_NUMBER NUMBER,
FNAME VARCHAR2(40),
LNAME VARCHAR2(40)
)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER -- or ORACLE_DATA_PUMP
DEFAULT DIRECTORY EMP_DIR
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ‘,’
)
LOCATION (‘old_emp_data.csv’)
)
Reject limit unlimited; -- ignore toutes les erreurs dans le fichier
--Si on fait : reject limit 4; veut dire si les erreurs dépasse 4 affiche erreur
SQL> DELETE EMP_LOAD_EXT; -- DML non supporté sur les tables externes organisées
--ajouter des enregistrements dans le fichier, puis directement faites un select que remarquez-
vous ?
SQL> SELECT * FROM EMP_LOAD_EXT;
4
SQL> SELECT * FROM EMP_PUMP;
L’export propose différents modes pour décharger différentes parties des données de
la base de données Oracle.
Spécifiez les modes d'exportation sur la ligne de commande, en utilisant le paramètre
approprié :
5
Mode complet (Full Mode) :
Vous pouvez utiliser Data Pump pour effectuer une exportation complète de la base
de données en utilisant le paramètre FULL.
> expdp user_name FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir
TRANSPORTABLE=always VERSION=12.0 LOGFILE=export.log
Mode Tablespace :
Vous pouvez utiliser Data Pump pour effectuer une exportation en mode tablespace
en spécifiant les tables à l'aide du paramètre TABLESPACES.
6
Avec Oracle Data Pump Import, vous pouvez charger un ensemble de fichiers dump d'export
dans une base de données cible, ou charger une base de données cible directement à partir d'une
base de données source sans fichiers intermédiaires.
1.1. What Is Oracle Data Pump Import?
Oracle Data Pump Import est un utilitaire permettant de charger un ensemble de fichiers
dump d'export Oracle dans un système cible.
Un jeu de fichiers dump d'export est constitué d'un ou de plusieurs fichiers disque contenant
des données de table, des métadonnées des objets de base de données et des informations de
contrôle. Les fichiers sont écrits dans un format binaire propriétaire. Au cours d'une opération
d'importation Oracle Data Pump, l'utilitaire d'importation utilise ces fichiers pour localiser
chaque objet de base de données dans le jeu de fichiers de vidage.
Vous pouvez également utiliser l’import pour charger une base de données cible directement à
partir d'une base de données source, sans fichiers dump intermédiaires. Ce type d'importation
est appelé importation en réseau.
Les caractéristiques de l'opération d'import sont déterminées par les paramètres d'import que
vous spécifiez. Ces paramètres peuvent être spécifiés soit sur la ligne de commande, soit dans
un fichier de paramètres.
Remarque :
Ø il ne faut pas lancer l'importation en tant que SYSDBA, sauf à la demande du support technique
d'Oracle. SYSDBA est utilisé en interne et dispose de fonctions spécialisées ; son
comportement n'est pas le même que celui des utilisateurs généraux.
Ø Sachez que si vous effectuez une importation Data Pump dans une table ou un tablespace créé
avec la clause NOLOGGING activée, un fichier redo log peut toujours être généré. Le fichier
redo généré dans ce cas est généralement destiné à la maintenance de la table de contrôle
Data Pump, ou lié aux transactions récursives sous-jacentes, aux modifications du dictionnaire
de données et à la maintenance des index pour les index de la table qui nécessitent une
journalisation.
Ø Si la version du fuseau horaire utilisée par la base de données d'exportation est plus ancienne
que celle utilisée par la base de données d'importation, le chargement des colonnes avec le
type de données TIMESTAMP WITH TIMEZONE prend plus de temps qu'il n'en faudrait. Ce
temps supplémentaire est dû au fait que la base de données doit vérifier si les nouvelles règles
de fuseau horaire modifient les valeurs chargées.
7
Pour spécifier une importation de schéma avec Oracle Data Pump, utilisez le paramètre
SCHEMAS.
Mode table (Table Mode)
Pour spécifier une importation en mode table avec Oracle Data Pump, utilisez le paramètre
TABLES.
impdp hr@orclpdb DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees
Tablespace Mode (Tablespace Mode)
Pour spécifier une importation en mode tablespace avec Oracle Data Pump, utilisez le
paramètre TABLESPACES.
Mode Tablespace transportable (Transportable tablespace Mode)
Pour spécifier une importation en mode tablespace transportable avec Oracle Data Pump,
utilisez le paramètre TRANSPORT_TABLESPACES.
Dumpfile
You can supply multiple file_name specifications as a comma-delimited list, or in
separate DUMPFILE parameter specifications. If no extension is given for the file name,
then Export uses the default file extension of .dmp. The file names can contain a
substitution variable. The following table lists the available substitution variables.
%d, %D Specifies the current day of the month from the Gregorian calendar in
format DD.
%t, %T Specifies the year, month, and day in the Gregorian calendar in this
format: YYYYMMDD.
8
Substitution Variable Meaning
The file names can contain a substitution variable (%L), which implies that
multiple files can be generated. The substitution variable is expanded in
the resulting file names into a 2-digit, fixed-width, incrementing integer
starting at 01 and ending at 99 which is the same as (%U). In addition, the
substitution variable is expanded in the resulting file names into a 3-digit
to 10-digit, variable-width, incrementing integers starting at 100 and
ending at 2147483646. The width field is determined by the number of
digits in the integer.
exp01aa01.dmp
exp02aa02.dmp
and so forth, up until 99. Then, the next file name has 3 digits
substituted:
exp100aa100.dmp
exp101aa101.dmp
and so forth, up until 999, where the next file has 4 digits substituted.
The substitutions continue up to the largest number substitution
allowed, which is 2147483646.
-------------------------------------------------------------------------------------------------------
Pour plus de détailles
-------------------------------------------------------------------------------------------------------
9
1. Full Mode :
Vous pouvez utiliser Data Pump pour effectuer une exportation complète de la base
de données en utilisant le paramètre FULL.
Lors d'une exportation de base de données complète, la base de données entière est
déchargée. Ce mode nécessite que vous ayez le rôle
DATAPUMP_EXP_FULL_DATABASE.
§ Les objets résidant dans des tablespaces transportables n'ont que leurs
métadonnées déchargées dans le jeu de fichiers de vidage (dump file set) ; les
données elles-mêmes sont déplacées lorsque vous copiez les fichiers de
données dans la base de données cible. Les données elles-mêmes sont
déplacées lorsque vous copiez les fichiers de données dans la base de données
cible. Les fichiers de données qui doivent être copiés sont répertoriés à la fin du
fichier journal (log file) de l'opération d'exportation.
§ Les objets résidant dans des tablespaces non transportables (par exemple,
SYSTEM et SYSAUX) voient leurs métadonnées et leurs données déchargées
dans le jeu de fichiers de vidage (dump file set), à l'aide d'un déchargement par
chemin direct et de tables externes.
§ Tous les objets avec stockage qui sont sélectionnés pour l'exportation doivent
avoir tous leurs segments de stockage soit entièrement dans des tablespaces
10
administratifs non transportables (SYSTEM/SYSAUX), soit entièrement dans des
tablespaces transportables définis par l'utilisateur. Le stockage d'un seul objet
ne peut pas chevaucher les deux types de tablespaces.
§ Si les bases de données source et cible exécutent toutes deux Oracle Database
12c, pour effectuer une exportation transportable complète, le paramètre Data
Pump VERSION doit être défini sur au moins 12.0. ou le paramètre
d'initialisation de la base de données COMPATIBLE doit être défini sur au moins
12.0 ou une version ultérieure.
Les exportations transportables complètes sont prises en charge à partir d'une base
de données source exécutant la version 11.2.0.3. Pour ce faire, définissez le paramètre
VERSION de Data Pump sur au moins 12.0, comme indiqué dans l'exemple de syntaxe
suivant, où nom_utilisateur est l'utilisateur effectuant une exportation transportable
complète :
> expdp user_name FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir
TRANSPORTABLE=always VERSION=12.0 LOGFILE=export.log
2. Mode schéma
Vous pouvez spécifier une exportation de schéma avec Data Pump en utilisant le paramètre
SCHEMAS. L'exportation de schéma est le mode d'exportation par défaut.
Le schéma SYS ne peut pas être utilisé comme schéma source pour les tâches d'exportation.
Les références inter-schémas ne sont pas exportées à moins que le schéma référencé ne soit
également spécifié dans la liste des schémas à exporter. Par exemple, un déclencheur défini sur
une table dans l'un des schémas spécifiés, mais qui réside dans un schéma non explicitement
spécifié, n'est pas exporté. De même, les définitions de types externes dont dépendent les tables
des schémas spécifiés ne sont pas exportées. Dans ce cas, il est prévu que les définitions de type
existent déjà dans l'instance cible au moment de l'importation.
3. Mode Table
Vous pouvez utiliser Data Pump pour effectuer une exportation en mode table en spécifiant la
table à l'aide du paramètre TABLES.
11
En mode table, seul un ensemble spécifié de tables, de partitions et d'objets dépendants est
déchargé. Tout objet nécessaire à la création de la table, tel que le schéma propriétaire ou les
types de colonnes, doit déjà exister.
Vous devez avoir le rôle DATAPUMP_EXP_FULL_DATABASE pour spécifier des tables qui
ne font pas partie de votre propre schéma. Notez que les définitions de type pour les colonnes
ne sont pas exportées en mode table. Il est prévu que les définitions de type existent déjà dans
l'instance cible au moment de l'importation. De même, comme pour les exportations de
schémas, les références inter-schémas ne sont pas exportées.
Pour récupérer des tables et des partitions de table, vous pouvez également utiliser les
sauvegardes RMAN et la commande RMAN RECOVER TABLE. Au cours de ce processus,
RMAN crée (et éventuellement importe) un fichier de vidage d'exportation Data Pump qui
contient les objets récupérés. Reportez-vous à Oracle Database Backup and Recovery Guide
pour plus d'informations sur le transport de données entre plates-formes.
4. Mode Tablespace
Vous pouvez utiliser Data Pump pour effectuer une exportation de tablespace en spécifiant des
tables à l'aide du paramètre TABLESPACES.
En mode tablespace, seules les tables contenues dans un ensemble spécifié de tablespaces sont
déchargées. Si une table est déchargée, les objets qui en dépendent le sont également. Les
12
métadonnées et les données des objets sont déchargées. En mode tablespace, si une partie d'une
table réside dans l'ensemble spécifié, cette table et tous ses objets dépendants sont exportés. Les
utilisateurs privilégiés obtiennent toutes les tables. Les utilisateurs non privilégiés n'obtiennent
que les tables de leurs propres schémas.
En mode tablespace transportable, seules les métadonnées des tables (et de leurs objets
dépendants) dans un ensemble spécifié de tablespaces sont exportées. Les fichiers de données
des tablespaces sont copiés lors d'une opération distincte. Ensuite, une importation de
tablespace transportable est effectuée pour importer le fichier dump contenant les métadonnées
et pour spécifier les fichiers de données à utiliser.
Le mode tablespace transportable exige que les tables spécifiées soient complètement
autonomes. En d'autres termes, tous les segments de stockage de toutes les tables (et leurs index)
définis dans l'ensemble d'espaces de tables doivent également être contenus dans l'ensemble.
S'il existe des violations de l'autonomie, Export identifie tous les problèmes sans effectuer
l'exportation.
Les type de définition pour les colonnes des tables dans les tablespaces spécifiés sont exportées
et importées. Les schémas propriétaires de ces types doivent être présents dans l'instance cible.
Les exportations de tablespaces transportables ne peuvent pas être relancées une fois qu'elles
ont été arrêtées. De plus, elles ne peuvent pas avoir un degré de parallélisme supérieur à 1.
13