Objectifs A la fin de ce chapitre, vous pourrez : présenter l'utilisation d'opérations de chargement de données par chemin direct décrire l'utilisation de SQL*Loader réaliser les opérations de base de SQL*Loader répertorier les règles d'utilisation de SQL*Loader et du chargement des données par chemin direct Charger des données dans une base
Méthodes de chargement des données Base de données Oracle Utilitaire SQL*Loader Autres applications Export Import Chargement des données par chemin direct Base de données Oracle
Chargement des données par chemin direct Le chargement des données par chemin direct peut être réalisé de la manière suivante : Normale (en série) ou en parallèle Dans des tables partitionnées, dans des tables non partitionnées ou dans des partitions d'une table Avec ou sans consignation des données de journalisation
Chargement des données par chemin direct en série Espace libre après la suppression Blocs utilisés par les lignes insérées Repère high-water mark Bloc utilisé Table EMPLOYEES INSERT /*+ APPEND */ INTO emp NOLOGGING SELECT * FROM t_employees; COMMIT; Processus serveur
Chargement des données par chemin direct en parrallèle Segments temporaires ALTER SESSION ENABLE PARALLEL DML; INSERT /*+PARALLEL(hr.employees,2) */ INTO hr.employees NOLOGGING SELECT * FROM hr.old_employees; Espace libre après la suppression Bloc utilisé Table EMPLOYEES Repère high-water mark Processus esclave
SQL*Loader Fichiers de données de la base Fichiers de données en entrée Fichier de contrôle du programme de chargement SQL*Loader Fichier journal Insertion Sélection Fichier de paramètres (facultatif) Rejet Fichier des enregistrements refusés Rejet Sélection de l'enregistrement Acceptation Fichier de rebut (facultatif) Rebut Traitement du champ Serveur Oracle
Utiliser SQL*Loader SQL*Loader case1.log case1.ctl Table EMPLOYEES $sqlldr hr/hr \ > control=case1.ctl \ > log=case1.log direct=Y
Fichier de contrôle de SQL*Loader Le fichier de contrôle du programme de chargement indique à SQL*Loader : L'emplacement des données de chargement Le format des données Les détails de la configuration –gestion de la mémoire –rejet de l'enregistrement –détails du traitement des chargements interrompus La méthode de manipulation des données
Remarques sur la syntaxe du fichier de contrôle Le format de la syntaxe est libre. La syntaxe n'est pas sensible à la casse. Les commentaires sont précédés de deux traits d'union (--) et se terminent à la fin de la ligne. Le mot-clé CONSTANT est réservé.
Données et fichiers de données en entrée SQL*Loader lit les données à partir d'un ou de plusieurs fichiers définis dans le fichier de contrôle. Dans SQL*Loader, les données du fichier de données sont organisées en enregistrements. Un fichier de données peut avoir l'un des trois formats suivants : –Format d'enregistrement fixe –Format d'enregistrement variable –Format d'enregistrement de type "stream"
Enregistrements logiques Vous pouvez indiquer à SQL*Loader de suivre l'une des stratégies de création d'enregistrement logique suivantes : Combiner un nombre fixe d'enregistrements physiques pour la création de chaque enregistrement logique. Combiner des enregistrements physiques à des enregistrements logiques lorsqu'une condition donnée est vraie.
Méthodes de chargement des données Conventionnel Chemin direct Insertion de tableau Enregistrement des données Table Repère high-water mark Espace utilisé uniquement par le chargement par chemin conventionnel Instance Mémoire SGA Zone de mémoire partagée
Comparer les chargements de données par chemin direct et par chemin conventionnel Chargement des données par chemin conventionnel Utilise COMMIT s pour rendre les modifications permanentes Entrées de journalisation toujours générées Applique toutes les contraintes Les déclencheurs INSERT s'exécutent Peut effectuer un chargement dans des tables clusterisées Les autres utilisateurs peuvent modifier les tables Chargement des données par chemin direct Utilise des enregistrements de données Génère une journalisation uniquement sous certaines conditions Applique uniquement les contraintes de clé primaire, de clé unique et NOT NULL Les déclencheurs INSERT ne s'exécutent pas Ne peut pas effectuer de chargement dans des tables clusterisées Les autres utilisateurs ne peuvent pas modifier les tables
Chargement des données par chemin direct en parallèle Segments temporaires load2.dat load2.ctl load3.dat load3.ctl SQL*Loader Table Repère high-water mark load1.dat load1.ctl
Conversion des données Pendant le chargement des données par chemin conventionnel, les champs de données du fichier de données sont convertis en colonnes dans la base. La conversion s'effectue en deux étapes : Les spécifications de champ du fichier de contrôle permettent d'interpréter le format de ce fichier et de le convertir en instruction SQL INSERT à l'aide de ces données. Le serveur de bases de données Oracle accepte les données, puis exécute l'instruction INSERT pour les stocker dans la base.
Enregistrements de rebut ou refusés Fichier des enregistrements refusés –SQL*Loader rejette les enregistrements dont le format d'entrée n'est pas valide. –Si la base de données Oracle considère que la ligne n'est pas valide, l'enregistrement est rejeté et placé par SQL*Loader dans le fichier des enregistrements refusés. Fichier de rebut –Ce fichier ne peut être utilisé que s'il a été activé. –Ce fichier contient des enregistrements qui ont été extraits par filtrage, car ils ne correspondaient pas aux critères de sélection de l'enregistrement définis dans le fichier de contrôle.
Contenu des fichiers journaux Informations d'en-tête Informations générales Informations sur les tables Informations sur les fichiers de données Informations de chargement des tables Statistiques récapitulatives Statistiques supplémentaires relatives aux chargements des données par chemin direct et informations sur la technologie multithread
Règles d'utilisation de SQL*Loader Utilisez un fichier de paramètres pour définir les options de ligne de commande couramment utilisées. Ne placez les données dans le fichier de contrôle que pour un chargement réduit unique. Améliorez les performances de la manière suivante : –Allouez un espace suffisant –Triez les données sur l'index le plus volumineux –Dans les chargements en parallèle, définissez différents fichiers pour les segments temporaires