Vous êtes sur la page 1sur 68

Module n4

GESTION DE DONNEES
1Z0-023

Auteur : Erwan LANCIEN


Version 1.3 7 aot 2003 Nombre de pages : 68

Ecole Suprieure dInformatique de Paris 23. rue Chteau Landon 75010 PARIS

www.supinfo.com

Gestion de donnes

2 / 68

Table des matires


1. GERER LES TABLES...................................................................................................................................... 5 1.1. STOCKER LES DONNEES UTILISATEURS.......................................................................................................... 5 1.1.1. Utiliser diffrentes mthodes de stockage des donnes utilisateur ....................................................... 5 1.1.2. Tables normales .................................................................................................................................... 5 1.1.3. Table partitionne ................................................................................................................................. 5 1.1.4. Tables organises en index ................................................................................................................... 5 1.1.5. Table incluse dans un cluster ................................................................................................................ 6 1.2. STRUCTURE DUNE LIGNE ............................................................................................................................. 6 1.2.1. Format et longueur de ligne.................................................................................................................. 6 TYPES DE DONNEES ORACLE .................................................................................................................................. 7 1.2.2. Types de donnes internes Oracle......................................................................................................... 7 1.2.3. Types de donnes scalaires ................................................................................................................... 7 1.2.4. Types de donnes Ensemble ................................................................................................................ 10 1.3. CREER UNE TABLE....................................................................................................................................... 11 1.3.1. Rappel : Syntaxe.................................................................................................................................. 11 1.3.2. Copier une table existante................................................................................................................... 12 1.3.3. Utiliser Schema Manager pour crer une table .................................................................................. 13 1.3.4. Tables temporaires.............................................................................................................................. 13 1.3.5. Instructions de cration d'une table .................................................................................................... 14 1.3.6. Dfinir le paramtre PCTFREE.......................................................................................................... 14 1.3.7. Dfinir le paramtre PCTUSED ......................................................................................................... 14 1.3.8. Migrer des lignes................................................................................................................................. 15 1.3.9. Chaner des lignes............................................................................................................................... 15 1.4. CONTROLER LESPACE UTILISE PAR LES TABLES ......................................................................................... 15 1.4.1. Modifier les paramtres d'utilisation de blocs et de stockage............................................................. 15 1.4.2. Syntaxe ................................................................................................................................................ 15 1.4.3. Impact de la modification des paramtres de stockage....................................................................... 15 1.4.4. Paramtres d'utilisation de blocs ........................................................................................................ 16 1.4.5. Utiliser Oracle Enterprise Manager pour modifier les paramtres de stockage ............................. 17 1.4.6. Allouer manuellement des extents ....................................................................................................... 17 1.4.7. Rorganiser les tables non partitionnes ............................................................................................ 18 1.4.8. Repre high-water mark...................................................................................................................... 18 1.4.9. Rechercher le repre high-water mark : DBMS_SPACE.UNUSED_SPACE ..................................... 19 1.4.10. Librer l'espace inutilis ..................................................................................................................... 20 1.4.11. Tronquer une table.............................................................................................................................. 21 1.4.12. Supprimer une table ............................................................................................................................ 22 1.4.13. Supprimer une colonne dune table..................................................................................................... 22 1.4.14. Utiliser l'option UNUSED................................................................................................................... 23 1.4.15. Extraire les informations relatives une table ................................................................................... 24 1.4.16. Extraire les informations sur les extents ............................................................................................. 25 1.4.17. Package DBMS_ROWID..................................................................................................................... 25 1.5. SYNTHESE ................................................................................................................................................... 26 2. GERER L'INTEGRITE DES DONNEES..................................................................................................... 27 2.1. INTEGRITE DES DONNEES ............................................................................................................................ 27 2.1.1. Mthodes garantissant l'intgrit des donnes.................................................................................... 27 Contraintes d'intgrit....................................................................................................................................... 27 2.2. METTRE EN UVRE DES CONTRAINTES ....................................................................................................... 31 2.2.1. Dfinir les contraintes lors de la cration d'une table ........................................................................ 31 2.2.2. Dfinir des contraintes lors de la cration d'une table ....................................................................... 31 2.2.3. Syntaxe : contrainte de colonne .......................................................................................................... 32 2.2.4. Syntaxe : contrainte de table............................................................................................................... 32 2.2.5. Dfinir des contraintes aprs la cration d'une table : ....................................................................... 33 2.2.6. Instructions de dfinition des contraintes ........................................................................................... 33 2.3. GERER LES CONTRAINTES ........................................................................................................................... 33

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

3 / 68

2.3.1. Activer les Contraintes........................................................................................................................ 33 2.3.2. Utiliser la table EXCEPTIONS ........................................................................................................... 35 Obtenir des informations sur les contraintes..................................................................................................... 36 3. CHARGER LES DONNEES.......................................................................................................................... 39 3.1. CHARGER DES DONNEES A L'AIDE DE LA METHODE D'INSERTION PAR CHARGEMENT DIRECT ...................... 39 3.1.1. Syntaxe ................................................................................................................................................ 39 3.1.2. Mode LOGGING................................................................................................................................. 40 3.1.3. Autres considrations.......................................................................................................................... 40 3.1.4. Insertions par chargement direct en parallle .................................................................................... 40 3.2. CHARGER LES DONNEES A L'AIDE DE L'UTILITAIRE SQL*LOADER .............................................................. 41 3.2.1. Fonctions de l'utilitaire SQL*Loader.................................................................................................. 41 3.2.2. Fichiers utiliss par l'utilitaire SQL*Loader ...................................................................................... 41 3.2.3. Mthodes de chargement des donnes ................................................................................................ 42 3.2.4. Mthode d'enregistrement des donnes............................................................................................... 43 3.2.5. Journaliser les modifications .............................................................................................................. 43 3.2.6. Appliquer les contraintes .................................................................................................................... 43 3.2.7. Activer les dclencheurs INSERT........................................................................................................ 43 3.2.8. Charger les donnes dans une table incluse dans un cluster .............................................................. 44 3.2.9. Verrouiller........................................................................................................................................... 44 3.2.10. Chargement des donnes par chemin direct en parallle ................................................................... 44 3.2.11. Squence des oprations ..................................................................................................................... 44 3.2.12. Restrictions.......................................................................................................................................... 45 3.2.13. Utiliser SQL*Loader........................................................................................................................... 45 3.2.14. Utiliser Oracle Enterprise Manager pour charger les donnes.......................................................... 45 3.2.15. Fichier de paramtres ......................................................................................................................... 47 3.2.16. Fichier de contrle.............................................................................................................................. 47 3.2.17. Fichier de donnes .............................................................................................................................. 48 3.2.18. Fichiers journaux ................................................................................................................................ 48 3.2.19. SQL*Loader : Autres fichiers de sortie............................................................................................... 49 3.2.20. Instructions d'utilisation de l'utilitaire SQL*Loader........................................................................... 49 3.2.21. Dpannage de l'utilitaire SQL*Loader ............................................................................................... 50 3.2.22. Rsolution des problmes.................................................................................................................... 50 3.3. CHARGER LES DONNEES PAR CHEMIN DIRECT ............................................................................................. 51 3.3.1. Charger les donnes par chemin direct avec l'interface OCI (Oracle Call Interface)........................ 51 4. REORGANISER LES DONNEES................................................................................................................. 52 4.1. DEPLACER LES DONNEES A L'AIDE DES UTILITAIRES EXPORT ET IMPORT .................................................... 52 4.1.1. Utilitaires Export et Import................................................................................................................. 52 4.1.2. Utilitaire Export .................................................................................................................................. 52 4.1.3. Utilitaire Import .................................................................................................................................. 52 4.2. UTILISER LES UTILITAIRES EXPORT ET IMPORT ........................................................................................... 52 4.3. MODES DEXPORTS ..................................................................................................................................... 53 4.3.1. Trois modes d'export ........................................................................................................................... 53 4.3.2. Mode Table ......................................................................................................................................... 53 4.3.3. Mode User........................................................................................................................................... 54 4.3.4. Mode Full Database............................................................................................................................ 54 4.4. EXPORT PAR CHEMIN CONVENTIONNEL ET PAR CHEMIN DIRECT.................................................................. 54 4.4.1. Chemin conventionnel......................................................................................................................... 54 4.4.2. Chemin direct ...................................................................................................................................... 55 4.5. UTILISER L'UTILITAIRE EXPORT .................................................................................................................. 55 4.5.1. Ligne de commande............................................................................................................................. 55 4.5.2. Windows NT : ligne de commande ...................................................................................................... 55 4.5.3. Utiliser Oracle Enterprise Manager pour exporter des donn es....................................................... 56 4.5.4. Paramtres de ligne de commande ..................................................................................................... 56 4.6. UTILISER L'UTILITAIRE IMPORT ................................................................................................................... 58 4.6.1. Ligne de commande............................................................................................................................. 58 4.6.2. Windows NT : Ligne de commande..................................................................................................... 59 4.6.3. Utiliser Oracle Enterprise Manager pour importer des donnes ....................................................... 59 4.6.4. Paramtres de ligne de commande ..................................................................................................... 59

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

4 / 68

4.6.5. Fonctionnement de l'import ................................................................................................................ 62 4.6.6. Considrations relatives l'import dans des tables existantes ........................................................... 62 4.6.7. Tablespace utilis pour un objet ......................................................................................................... 62 4.7. INSTRUCTIONS D'EXPORT ET D'IMPORT ........................................................................................................ 63 4.8. CONSIDERATIONS RELATIVES AU SUPPORT NLS LORS DE L'EXPORT ET DE L'IMPORT .................................. 63 4.8.1. Exporter et convertir les jeux de caract res....................................................................................... 63 4.8.2. Importer et convertir les jeux de caractres........................................................................................ 64 4.9. TABLESPACES TRANSPORTABLES ................................................................................................................ 64 4.10. SYSTEMES INFORMATIQUES D'ENTREPRISE.................................................................................................. 64 4.11. DISTRIBUER LES INFORMATIONS ................................................................................................................. 65 4.12. TRANSPORTER UN TABLESPACE .................................................................................................................. 65 4.12.1. Etapes du transport d'un tablespace ................................................................................................... 65 4.13. EXPORTER ET IMPORTER DES METADONNEES .............................................................................................. 65 4.14. EXPORTER DES METADONNEES ................................................................................................................... 65 4.15. IMPORTER DES METADONNEES .................................................................................................................... 66 4.16. TRANSPORTER UN TABLESPACE .................................................................................................................. 66 4.17. UTILISATION DES TABLESPACES TRANSPORTABLES .................................................................................... 67 4.17.1. Utilisation............................................................................................................................................ 67 4.18. TABLESPACES TRANSPORTABLES ET OBJETS DE SCHEMA ............................................................................ 67 4.19. JEUX DE DONNEES AUTONOMES .................................................................................................................. 67 4.20. VERIFIER LE JEU DE TABLESPACES A TRANSPORTER .................................................................................... 68 4.20.1. DBMS_TTS.TRANSPORT_SET_CHECK ........................................................................................... 68 4.20.2. DBMS_TTS.ISSELFCONTAINED ...................................................................................................... 68

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

5 / 68

1. Grer les tables


Notions abordes dans ce chapitre crer des tables en utilisant les paramtres de stockage appropris, grer l'espace utilis par les tables, analyser les tables pour vrifier l'intgrit et la migration, extraire des informations sur les tables du dictionnaire de donnes, convertir un identificateur ROWID dans le format d'un autre identificateur ROWID.

1.1.Stocker les donnes utilisateurs


1.1.1. Utiliser diffrentes mthodes de stockage des donnes utilisateur
Dans une base de donnes Oracle, vous pouvez stocker les donnes utilisateur de diffrentes manires. Les donnes peuvent tre stockes dans l'une des tables suivantes : tables normales, tables partitionnes, tables organises en index, tables incluses dans un cluster.

1.1.2. Tables normales


Une table normale (appele en gnral "table") est l'lment le plus communment utilis pour stocker les donnes utilisateur. Il s'agit du type de table par dfaut qui constitue le sujet principal de chapitre. Les prrogatives de l'administrateur sur la distribution des lignes d'une table incluse dans un cluster sont trs limites. Les lignes peuvent tre stockes dans n'importe quel ordre selon l'activit de la table.

1.1.3. Table partitionne


Une table partitionne permet de crer des applications volutives. Elle prsente les caractristiques suivantes : Une table partitionne contient une ou plusieurs partitions qui stockent chacune les lignes partitionnes l'aide du partitionnement par plage, par hachage ou composite. Chaque partition d'une table partitionne constitue un segment qui peut se trouver dans un tablespace diffrent. Les partitions trouvent une utilit particulire pour les tables volumineuses qui peuvent tre interroges ou manipules par plusieurs processus simultans. Des commandes spciales permettent de grer les partitions d'une table.

1.1.4. Tables organises en index


Une table organise en index est une table normale contenant un index de cl primaire dans une ou plusieurs de ses colonnes. Toutefois, au lieu de grer deux espaces de stockage distincts pour la table et un index B-Tree, une table organise en index ne gre qu'un seul B-Tree contenant la cl primaire de la table et d'autres valeurs de colonnes. Les tables organises en index acclrent l'accs par cl aux donnes des tables dans les interrogations impliquant des recherches de correspondance exacte ou des recherches sur des plages de donnes. En outre, les besoins en stockage sont moindres dans la mesure o les colonnes de cl ne sont pas dupliques dans la table, ni dans l'index. Les colonnes restantes ne contenant pas de cl sont stockes dans l'index si la taille de l'entre d'index n'augmente pas considrablement. Si tel n'est pas le cas, le serveur Oracle fournit la clause OVERFLOW qui permet de rsoudre le problme.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
1.1.5. Table incluse dans un cluster

6 / 68

Une table incluse dans un cluster permet galement de stocker les donnes dans des tables. Un cluster est constitu de plusieurs tables qui partagent les mmes blocs de donnes, regroups du fait qu'ils partagent des colonnes et souvent utiliss conjointement. Un cluster prsente les caractristiques suivantes : Il dispose d'une cl de cluster qui permet d'identifier les lignes devant tre enregistres ensembles. La cl de cluster peut tre constitue d'une ou de plusieurs colonnes. Les tables d'un cluster contiennent des colonnes correspondant la cl de cluster. La cration de cluster est un mcanisme qui est transparent aux applications qui utilisent les tables. Les donnes d'une table incluse dans un cluster peuvent tre manipules de la mme manire que celles d'une table normale. La mise jour de l'une des colonnes de la cl de cluster peut provoquer le dplacement physique de la ligne. La cl de cluster est indpendante de la cl primaire. Les tables d'un cluster peuvent avoir une cl primaire qui peut correspondre la cl de cluster ou un ensemble de colonnes diffrent. Les clusters sont gnralement utiliss pour amliorer les performances. L'accs direct aux donnes d'un cluster peut tre plus rapide, mais le balayage complet de tables est gnralement plus long.

1.2.Structure dune ligne


1.2.1. Format et longueur de ligne
Les donnes des lignes sont stockes dans des blocs de base de donnes sous forme d'enregistrements de longueur variable. Les colonnes d'une ligne sont gnralement enregistres selon l'ordre dans lequel elles sont dfinies, et toutes les colonnes de fin NULL ne sont pas enregistres. Chaque ligne d'une table peut comporter un nombre de colonnes diffrent. Chaque ligne d'une table a : un en-tte : cet en-tte permet de stocker le nombre de colonnes de la ligne, les informations de chanage et le statut de verrouillage de la ligne, des donnes de ligne : le serveur Oracle stocke la longueur et la valeur de chaque colonne (un octet est ncessaire pour enregistrer la longueur de colonne si celle-ci ne peut dpasser 250 octets. Une colonne plus longue ncessite 3 octets. La valeur de la colonne est stocke immdiatement aprs les octets de longueur de colonne). Aucun espace n'est ncessaire entre les lignes adjacentes. Chaque ligne du bloc est associe un pointeur dans le rpertoire des lignes. Le pointeur pointe vers le dbut de la ligne.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Types de donnes Oracle

7 / 68

1.2.2. Types de donnes internes Oracle


Le serveur Oracle fournit plusieurs types de donnes internes pour stocker les donnes scalaires, les ensembles et les relations.

1.2.3. Types de donnes scalaires

Donnes de type caractre


Les donnes de type caractre sont stockes sous forme de chanes de longueur fixe ou de longueur variable dans la base de donnes. Les donnes de longueur fixe de type caractre, tel que CHAR et NCHAR, sont stockes avec des espaces. NCHAR est un type de donnes NLS (National Language-Supported) qui permet de stocker des jeux de caractres de longueur fixe ou de longueur variable. La taille maximale est dtermine par le nombre d'octets ncessaires au stockage d'un caractre, avec une limite maximale de 2 000 octets par ligne. La valeur par dfaut est de 1 caractre, soit 1 octet, selon le jeu de caractres. Les donnes de longueur variable de type caractre utilisent uniquement le nombre d'octets ncessaires au stockage de la valeur de colonne relle et leur taille peut varier pour chaque ligne et tre gale 4 000 octets au maximum. Les donnes de type VARCHAR2 et NVARCHAR2, par exemple, sont des donnes de type caractre de longueur variable.

Donnes numriques
Dans les bases de donnes Oracle, les nombres sont toujours stocks sous forme de donnes de longueur variable. Ils peuvent comporter jusqu' 38 chiffres significatifs. Les donnes numriques ncessitent : un octet pour l'exposant, un octet tous les deux chiffres significatifs dans la mantisse, un octet pour les nombres ngatifs si le nombre de chiffres significatifs est infrieur 38 octets.

Donnes de type DATE


Le serveur Oracle enregistre les dates dans des champs de longueur fixe de sept octets. Une date Oracle contient toujours l'heure.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Donnes de type RAW

8 / 68

Ce type de donnes permet de stocker de petites donnes binaires. Le serveur Oracle ne convertit pas le jeu de caractres lorsque des donnes de type RAW sont transmises entre les machines d'un rseau ou lorsqu'elles sont transfr es d'une base de donnes vers une autre l'aide d'utilitaires Oracle. Le nombre d'octets ncessaires au stockage de la valeur de colonne relle varie pour chaque ligne et peut tre gal 2 000 octets au maximum.

Types de donnes scalaires de stockage des objets LOB


Oracle fournit six types de donnes pour stocker les objets LOB : CLOB et LONG pour les grands caractres de longueur fixe, NCLOB pour les jeux de grands caractres nationaux de longueur fixe, BLOB et LONG RAW pour stocker les donnes non structures, BFILE pour stocker les donnes non structures dans des fichiers de systme d'exploitation. Les types de donnes LONG et LONG RAW taient utiliss auparavant pour les donnes non structures, telles que les images binaires, les documents ou les informations gographiques, et sont principalement fournis des fins de compatibilit descendante. Ces types de donnes sont remplacs par les types de donnes LOB. Les donnes de type LOB sont diffrentes des donnes de type LONG et LONG RAW et ne sont pas interchangeables. Les donnes de type LOB ne prennent pas en charge l'interface API LONG (Application Programming Interface), et vice versa.

Comparer les donnes de type LONG et LOB


La comparaison entre la fonctionnalit LOB et les anciens types de donnes peut s'avrer utile. Cidessous, LONG fait rfrence LONG et LONG RAW, et LOB toutes les donnes de type LOB. Les donnes de type LOB permettent d'utiliser plusieurs colonnes LOB par table ou plusieurs attributs dans un type d'objet, alors que le type LONG n'en accepte qu'une seule ou qu'un seul. La taille maximale des donnes de type LONG est de 2 gigaoctets alors que celle des donnes de type LOB peut tre gale 4 gigaoctets maximum. Lors de leur extraction, les types de donnes LOB renvoient le pointeur alors que les types de donnes LONG renvoient les donnes. Les types de donnes LOB stockent un pointeur dans la table et les donnes dans un autre emplacement, sauf si la taille des donnes de type VARCHAR2 est infrieure la taille maximale de 4 000 octets. Les types de donnes LONG stockent toutes les donnes dans le segment. En outre, les types de donnes LOB permettent de stocker les donnes dans un segment et un tablespace distincts ou dans un fichier hte. Les donnes de type LOB prennent en charge les attributs de type d'objet (sauf le type de donnes NCLOB), contrairement aux donnes de type LONG. Les donnes de type LONG sont stockes sous forme de morceaux de lignes chans, un morceau de ligne d'un bloc pointant vers le morceau de ligne suivant d'un autre bloc. En consquence, l'accs aux segments s'effectue squentiellement. En revanche, les donnes de type LOB permettent d'accder directement aux segments de donnes via une interface de type fichier.

Type de donnes ROWID et UROWID

ROWID est une pseudo colonne qui peut tre interroge en mme temps que les autres colonnes d'une table. Ce type de donnes prsente les caractristiques suivantes : Il identifie de manire unique chaque ligne dans une base de donnes. Il n'est pas enregistr explicitement sous la forme d'une valeur de colonne.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

9 / 68

Bien que le type ROWID ne fournisse pas directement l'adresse physique d'une ligne, il permet de rechercher la ligne. Il constitue la mthode la plus rapide pour accder une ligne d'une table. Les donnes de type ROWID sont stockes dans des index dfinissant des lignes ayant des valeurs de cl spcifiques. La version 8.1 du serveur Oracle fournit un nouveau type de donnes unique appel "universale rowid" ou UROWID. Il prend en charge les donnes de type ROWID des tables trangres (tables non Oracle) et peut stocker n'importe quelle donne de ce type. Pour pouvoir utiliser le type de donnes UROWID, vous devez affecter la valeur 8.1 ou suprieure au paramtre COMPATIBLE.

Format des donnes de type ROWID


Les donnes de type ROWID ncessitent 10 octets de stockage sur disque et s'affichent sur 18 caractres. Ces donnes sont constitues des lments suivants : numro d'objet de donnes : affect chaque objet de donnes cr, tel qu'une table ou un index, et unique dans la base de donnes, numro de fichier relatif : unique pour chaque fichier d'un tablespace, numro de bloc : indique l'emplacement du bloc contenant la ligne dans le fichier, numro de ligne : indique la position du pointeur du rpertoire des lignes dans l'entte de bloc. En interne, le numro d'objet de donnes ncessite 32 bits, le numro de fichier relatif, 10 bits, le numro de bloc, 22 bits, et le numro de ligne, 16 bits, soit un total de 80 bits, ou 10 octets. Les donnes de type ROWID s'affichent en utilisant un schma d'encodage en base 64 qui utilise six positions pour le numro d'objet, trois positions pour le numro de fichier relatif, six positions pour le numro de bloc et trois positions pour le numro de ligne. Ce schma utilise les caractres "A-Z", "az", "0-9", "+" et "/", soit un total de 64 caractres, comme dans l'exemple ci-dessous :+
SQL> SELECT id, ROWID FROM summit.department; ID ROWID --------- -----------------10 AAADC4AACAAAAMAAAA 31 AAADC4AACAAAAMAAAB 32 AAADC4AACAAAAMAAAC 33 AAADC4AACAAAAMAAAD 34 AAADC4AACAAAAMAAAE 35 AAADC4AACAAAAMAAAF 41 AAADC4AACAAAAMAAAG 42 AAADC4AACAAAAMAAAH 43 AAADC4AACAAAAMAAAI 44 AAADC4AACAAAAMAAAJ 45 AAADC4AACAAAAMAAAK 50 AAADC4AACAAAAMAAAL

Dans cet exemple : AAADC4 correspond au numro d'objet de donnes. AAC reprsente le numro de fichier relatif. AAAAMA indique le numro de bloc. AAA d finit le numro de ligne du dpartement dont l'ID=10.

Rechercher une ligne l'aide du type de donnes ROWID


Etant donn qu'un segment ne peut rsider que dans un seul tablespace, le serveur Oracle peut identifier le tablespace contenant la ligne en utilisant le numro d'objet de donnes. Le numro de fichier relatif figurant dans le tablespace identifie le fichier, le numro de bloc identifie le bloc contenant la ligne, et le numro de ligne identifie la ligne dans le rpertoire des lignes. L'entre du rpertoire des lignes peut permettre de rechercher le dbut de la ligne. Ainsi, le type de donnes ROWID permet de rechercher n'importe quelle ligne dans une base de donnes.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

10 / 68

Utiliser un ROWID restreint dans Oracle7 et les versions antrieures

Les versions antrieures du serveur Oracle8 utilisaient le format ROWID restreint. Un ROWID restreint utilisait seulement six octets en interne et ne contenait pas de numro d'objet de donnes. Ce format tait acceptable dans Oracle7 ou les versions antrieures, car les numros de fichier taient uniques dans une base de donnes. Ainsi, les versions prcdentes taient limites 1 022 fichiers de donnes. Bien qu'Oracle8 ait supprim cette limitation en utilisant des numros de fichier relatifs des tablespaces, un ROWID restreint est toujours utilis dans des objets, tels que les index non partitionns ou les tables non partitionnes, dans lesquels toutes les entres d'index font rfrence aux lignes d'un mme segment.

1.2.4. Types de donnes Ensemble


Deux types de donnes Ensemble permettent de stocker les donnes rptitives d'une ligne d'une table. Dans les versions antrieures du serveur Oracle8i, l'option Objects tait ncessaire pour dfinir et utiliser les ensembles.

Tableaux de taille variable (VARRAY)


Ces tableaux permettent de stocker des listes contenant un petit nombre d'lments, tels que des numros de tlphone de clients. Les tableaux VARRAY prsentent les caractristiques suivantes : Un tableau contient des donnes ordonnes. Les donnes d'un tableau ont toutes le mme type. Chaque lment comporte un index qui correspond un numro indiquant la position de l'lment dans le tableau. Le nombre d'lments d'un tableau correspond la taille du tableau. Le serveur Oracle permet d'utiliser des tableaux de taille variable, et c'est la raison pour laquelle ils s'appellent VARRAY, mais la taille maximale du tableau doit tre dfinie lors de sa dclaration.

Tables imbriques
Les tables imbriques permettent de dfinir une table sous forme de colonne dans une table. Ces tables peuvent tre utilises pour stocker des ensembles pouvant contenir un grand nombre d'enregistrements, tels que le nombre d'articles d'une commande. Gnralement, les tables imbriques prsentent les caractristiques suivantes : Une table imbrique est un ensemble non ordonn d'enregistrements ou de lignes. Les lignes d'une table imbrique prsentent la mme structure. Les lignes d'une table imbrique sont stockes dans une table distincte de la table mre, avec un pointeur vers la ligne correspondante dans la table mre. Les caractristiques de stockage d'une table imbrique peuvent tre dfinies par l'administrateur de base de donnes. Il n'existe pas de taille maximale prdfinie pour une table imbrique.

Types de donnes Relation (REF)


Les types de donnes Relation servent de pointeurs dans la base de donnes. L'utilisation de ces types de donnes fait appel l'option Objects. Par exemple, chaque lment ordonn peut pointer vers une ligne de la table PRODUCTS ou y faire rfrence sans avoir stocker la rfrence du produit.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Types de donnes dfinis par l'utilisateur

11 / 68

Le serveur Oracle permet l'utilisateur de dfinir des types de donnes abstraits et de les utiliser dans l'application. L'utilisation de ces types de donnes fait appel l'option Objects.

1.3.Crer une table


1.3.1. Rappel : Syntaxe
Utilisez la commande suivante pour crer une table :
CREATE TABLE [schema.] table (column datatype [ , column datatype ] ...) [TABLESPACE tablespace ] [ PCTFREE integer ] [ PCTUSED integer ] [ INITRANS integer ] [ MAXTRANS integer ] [ STORAGE storage-clause ] [LOGGING | NOLOGGING] [CACHE | NOCACHE] ]

Exemple :
CREATE TABLE employee( id NUMBER(7), last_name VARCHAR2(25), dept_id NUMBER(7)) PCTFREE 20 PCTUSED 50 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50) TABLESPACE data;

o :

schema table column data type TABLESPACE PCTFREE

PCTUSED

INITRANS MAXTRANS

est le propritaire de la table, est le nom de la table, est le nom de la colonne, est le type de donnes de la colonne, indique le tablespace de destination de la table crer, correspond l'espace rserv dans chaque bloc (sous la forme d'un pourcentage de l'espace total moins l'en-tte de bloc) l'augmentation de la longueur des lignes, dfinit la limite infrieure de l'espace utilis dans un bloc (aprs utilisation de l'espace dfini par le paramtre PCTFREE) partir de laquelle d'autres lignes peuvent tre insres, dfinit le nombre d'entres de transaction pr alloues dans chaque bloc (la valeur par dfaut est 1), limite le nombre d'entres de transaction pouvant tre alloues chaque bloc (la valeur par d faut est 255), identifie la clause de stockage qui dtermine l'allocation des extents (ensemble de blocs contigus) la table, indique que la cration de la table sera consigne dans le fichier de journalisation (redo log), (indique galement que toutes les oprations suivantes effectues sur la table sont enregistres; il s'agit de la valeur par dfaut), indique que la cration de la table et de certains types de chargement de donnes ne sera pas consigne dans le fichier de journalisation, indique que les blocs extraits pour cette table sont placs

STORAGE LOGGING

NOLOGGING

CACHE

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

12 / 68

NOCACHE

l'extrmit la plus rcemment utilise de la liste LRU du cache de tampons (buffer cache), mme lorsque la table est balaye en totalit, indique que les blocs extraits de cette table sont placs la fin de la liste LRU du cache des tampons, lorsque la table est balaye en totalit.

Remarque :
En gnral, les tables doivent tre cres avec une cl primaire. Si vous avez dfini le paramtre MINIMUM EXTENT du tablespace, la taille des extents de la table est arrondie au multiple suivant le plus proche. Si vous omettez la clause [NO]LOGGING, l'attribut de journalisation de la table correspond par dfaut celui du tablespace dans lequel elle rside. Si vous affectez au paramtre MINEXTENTS une valeur suprieure 1 et que le tablespace contient plusieurs fichiers de donnes, les extents sont rpartis dans les diffrents fichiers du tablespace.

1.3.2. Copier une table existante


Utilisez la commande CREATE TABLE avec une sous-interrogation pour copier une table en totalit ou partiellement. La syntaxe simplifie est :
CREATE TABLE [schema.]table [ LOGGING | NOLOGGING ] ... AS subquery

Les autres clauses, telles que TABLESPACE, STORAGE et les paramtres d'utilisation des blocs peuvent tre dfinis lors de la cration d'une table partir d'une autre table. Utilisez la clause NOLOGGING pour interdire la gnration d'entres de journalisation (redo log entries) et acclrer la cration de la table. Lorsque vous crez une table en copiant une table, les contraintes, les dclencheurs et les privilges de table ne sont pas copis. Si la table d'origine contient une colonne NOT NULL, cette colonne existe galement dans la nouvelle table.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
1.3.3. Utiliser Schema Manager pour crer une table

13 / 68

1. Dmarrez Schema Manager : Start>Programs>Oracle - EMV2 Home>DBA Management Pack >Schema Manager 2. Slectionnez l'option permettant de vous connecter directement une base de donnes. Entrez l'administrateur system, le mot de passe manager, le nom de service de votre base, puis cliquez sur OK. 3. Slectionnez Object>Create dans la barre de menus. 4. Slectionnez Table dans la liste des objets, slectionnez l'option Use Wizard, puis cliquez sur Create. 5. Entrez les informations relatives la table dans l'assistant Table Wizard, telles que le nom, le tablespace, le propritaire, les colonnes, les types de donnes et les tailles. Cliquez sur Finish. 6. Dveloppez le dossier Tables pour vrifier si la table a t cre. Vous pouvez galement slectionner une table existante dans le navigateur et utiliser Object>Create Like pour crer une table ayant les mmes caractristiques de colonne et de stockage que la table slectionne. Autres options Oracle Schema Manager permet galement de dfinir automatiquement les paramtres de stockage et d'utilisation des blocs partir d'une estimation du volume initial, de la frquence d'augmentation de la taille de la table et de son activit DML.

1.3.4. Tables temporaires


Outre les tables permanentes, vous pouvez crer des tables temporaires qui contiennent les donnes prives des sessions qui n'existent que le temps d'une transaction ou d'une session. La commande CREATE GLOBAL TEMPORARY TABLE permet de crer une table temporaire spcifique une transaction ou une session. Les donnes d'une table temporaire de transaction et celles d'une table temporaire de session existent respectivement pendant la dure de la transaction et pendant la dure de la session. Les donnes d'une session sont prives. Chaque session ne peut voir et modifier que ses propres donnes. Aucun verrou DML n'est plac sur les donnes d'une table temporaire. Les clauses qui contrlent la dure de stockage des lignes sont :

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

14 / 68

ON COMMIT DELETE ROWS : indique que les lignes sont uniquement visibles dans la transaction, ON COMMIT PRESERVE ROWS : indique que les lignes sont visibles pour toute la session. Vous pouvez crer des index, des vues et des dclencheurs dans les tables temporaires et utiliser galement les utilitaires Export et Import pour exporter et importer la dfinition d'une table temporaire. Toutefois, aucune donne n'est exporte, mme si vous utilisez l'option ROWS. La dfinition d'une table temporaire est visible dans toutes les sessions. Exemple :
CREATE GLOBAL TEMPORARY TABLE employee_temp AS SELECT * FROM employee;

1.3.5. Instructions de cration d'une table


Placez les tables dans des tablespaces distincts et non dans des tablespaces contenant des segments d'annulation, des segments temporaires et des index. Placez les tables dans des tablespaces grs localement pour viter la fragmentation. Utilisez quelques tailles d'extent standard multiples de 5 DB_BLOCK_SIZE afin de limiter la fragmentation. Pour amliorer les performances du balayage complet de tables, alignez les tailles d'extent l'aide du paramtre d'initialisation DB_FILE_MULTIBLOCK_READ_COUNT qui dfinit le nombre de blocs demands par les processus serveur dans chaque appel de lecture du systme d'exploitation lors de la lecture de l'ensemble de la table. Utilisez la clause CACHE pour les petites tables de rfrence pouvant tre frquemment utilises.

1.3.6. Dfinir le paramtre PCTFREE

Plus la valeur du paramtre PCTFREE est leve, plus l'espace disponible pour la mise jour d'un bloc d'une base de donnes est lev. Dfinissez une valeur leve lorsque la table contient : des colonnes initialement NULL, puis mises jour l'aide d'une valeur, des colonnes dont la taille risque d'augmenter la suite d'une mise jour. En affectant une valeur plus leve au paramtre PCTFREE, vous rduisez la densit de bloc, c'est-dire que chaque bloc contiendra moins de lignes. La formule dfinie ci-dessus permet au bloc de disposer d'un espace suffisant permettant la taille de la ligne d'augmenter.

1.3.7. Dfinir le paramtre PCTUSED

Dfinissez le paramtre PCTUSED pour permettre de renvoyer le bloc dans la liste d'espaces libres uniquement lorsqu'il existe un espace suffisant pour accepter une ligne moyenne. Si un bloc de la liste des espaces libres ne dispose pas de l'espace suffisant pour insrer une ligne, le serveur Oracle consulte le bloc suivant de la liste. Ce balayage linaire continue jusqu' ce qu'un bloc disposant de
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

15 / 68

l'espace suffisant soit trouv ou que la fin de la liste soit atteinte. Cette formule permet de rduire le temps de balayage de la liste d'espaces libres en augmentant la probabilit de trouver un bloc ayant l'espace libre ncessaire.

1.3.8. Migrer des lignes


Si vous affectez une valeur faible au paramtre PCTFREE, le bloc risque de ne pas contenir l'espace suffisant permettant la longueur de la ligne d'augmenter la suite d'une mise jour. Dans ce cas, le serveur Oracle transfre la totalit de la ligne vers un nouveau bloc et conserve le pointeur du bloc d'origine vers le nouveau bloc. Cette opration s'appelle une migration de ligne. Lors de la migration d'une ligne, les performances des E/S sur la ligne diminuent, car le serveur Oracle doit balayer deux blocs de donnes pour extraire la ligne.

1.3.9. Chaner des lignes


Un chanage de ligne se produit lorsqu'une ligne ne peut pas tenir dans un bloc. Cette situation peut se produire lorsque la ligne contient des colonnes de trs grande taille. Dans ce cas, le serveur Oracle divise la ligne en morceaux de ligne plus petits. Chaque morceau de ligne est stock dans un bloc avec les pointeurs associs pour extraire et assembler la totalit de la ligne. Le chanage de lignes peut tre limit en dfinissant une plus grande taille de bloc ou en divisant, si possible, la table en plusieurs tables contenant moins de colonnes.

1.4.Contrler lespace utilis par les tables


1.4.1. Modifier les paramtres d'utilisation de blocs et de stockage
Vous pouvez modifier certains paramtres de stockage et tous les paramtres d'utilisation des blocs l'aide de la commande ALTER TABLE.

1.4.2. Syntaxe
ALTER TABLE [schema.]table {[ storage-clause ] [ PCTFREE integer ] [ PCTUSED integer ] [ INITRANS integer ] [ MAXTRANS integer]}

Exemple :
ALTER TABLE summit.employee PCTFREE 30 PCTUSED 50 STORAGE(NEXT 500K MINEXTENTS 2 MAXEXTENTS 100);

1.4.3. Impact de la modification des paramtres de stockage


Les paramtres que vous pouvez modifier et l'effet de leur modification sont les suivants : NEXT : lorsque le serveur Oracle alloue un autre extent la table, la nouvelle valeur est utilise. La taille des extents suivants augmente de la valeur dfinie par le paramtre PCTINCREASE. PCTINCREASE : la modification de la valeur du paramtre PCTINCREASE est enregistre dans le dictionnaire de donnes. La nouvelle valeur est utilise pour recalculer la valeur du paramtre NEXT lorsque l'extent suivant est allou par le serveur Oracle. Supposons qu'une table deux extents comporte les paramtres NEXT=10K et PCTINCREASE=0. Si vous affectez la valeur 100 au paramtre PCTINCREASE, le troisime extent allou sera de 10 ko, le quatrime de 20 ko, et ainsi de suite.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

16 / 68

MINEXTENTS : vous pouvez affecter au paramtre MINEXTENTS une valeur infrieure ou gale au nombre actuel d'extents de la table. La nouvelle valeur n'entre pas immdiatement en vigueur, mais elle est prise en compte si la table est tronque. MAXEXTENTS : vous pouvez affecter au paramtre MAXEXTENTS une valeur gale ou suprieure au nombre actuel d'extents de la table. Restrictions Vous ne pouvez pas modifier la valeur du paramtre INITIAL d'une table. La valeur du paramtre NEXT est arrondie une valeur multiple de la taille du bloc, gale ou suprieure la valeur dfinie.

1.4.4. Paramtres d'utilisation de blocs


Vous pouvez modifier la valeur des paramtres d'utilisation de blocs pour : amliorer l'utilisation de l'espace, rduire les possibilits de migration. La modification des paramtres d'utilisation de blocs a les effets suivants : PCTFREE : la modification du paramtre PCTFREE affecte les insertions suivantes. Les blocs dj remplis et donc inutiliss pour les insertions (100/PCTFREE) ne sont pas affects jusqu' ce qu'ils soient renvoys dans la liste d'espaces libres. Ils ne peuvent tre placs dans la liste d'espaces libres que si leur taux d'utilisation tombe sous la valeur du paramtre PCTUSED. PCTUSED : la modification du paramtre PCTUSED affecte tous les blocs de la table. Si une ligne est mise jour ou supprime, l'utilisation du bloc contenant la ligne est vrifie et le bloc est rutilis pour y insrer des donnes si son taux d'utilisation est infrieur la valeur du paramtre PCTUSED. INITRANS : la modification du paramtre INITRANS n'affecte que les nouveaux blocs. MAXTRANS : la modification du paramtre MAXTRANS affecte tous les blocs de la table.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

17 / 68

1.4.5. Utiliser Oracle Enterprise Manager pour modifier les paramtres de stockage

1. Dmarrez Schema Manager et connectez-vous directement la base de donnes : Dmarrer > Programmes > Oracle Home >DBA Management Pack > Schema Manager 2. Entrez les informations de connexion, puis cliquez sur OK. 3. Dveloppez le dossier Tables. 4. Dveloppez le nom d'utilisateur (ou schma). 5. Slectionnez la table. 6. Modifiez les valeurs de l'onglet Storage de la fentre de proprits. Notez que cette mthode ne permet pas de modifier le nombre minimum d'extents, ni le nombre initial de transactions. 7. Cliquez sur Apply.

1.4.6. Allouer manuellement des extents


Vous pouvez tre amen allouer des extents manuellement : pour contrler la distribution des extents d'une table dans les fichiers, avant de charger les donnes en masse pour empcher l'augmentation dynamique de la taille des tables.

Syntaxe
Utilisez la commande suivante pour allouer un extent une table :
ALTER TABLE [schema.]table ALLOCATE EXTENT [ ([SIZE integer [K|M]] [ DATAFILE 'filename' ]) ]

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

18 / 68

Si vous ne dfinissez pas le paramtre SIZE, le serveur Oracle utilise la taille d'extent NEXT_EXTENT de DBA_TABLES pour allouer l'extent. Le fichier dfini dans la clause DATAFILE doit appartenir au tablespace contenant la table. Sinon, l'instruction gnre une erreur. Si vous n'utilisez pas la clause DATAFILE, le serveur Oracle alloue l'extent dans l'un des fichiers du tablespace contenant la table. Remarque : la valeur NEXT_EXTENT de DBA_TABLES n'est pas affecte par l'allocation manuelle d'extents. Le serveur Oracle ne recalcule pas la taille de l'extent suivant lorsque cette commande est excute. Exemples :
ALTER TABLE summit.employee ALLOCATE EXTENT(SIZE 500K DATAFILE '/DISK3/DATA01.DBF');

1.4.7. Rorganiser les tables non partitionnes


ALTER TABLE employee MOVE TABLESPACE data1; ALTER TABLE employee MOVE TABLESPACE data1;

Transfre les donnes dans un nouveau segment, tout en conservant les index, les contraintes, les privilges, etc. dans la table. Utilis pour transfrer une table vers un tablespace diffrent ou pour rorganiser les extents.

Transfrer ou rorganiser une table


Oracle8i permet de dplacer une table non partitionne sans recourir l'utilitaire Export ou Import. Cela s'avre utile pour : transfrer une table d'un tablespace vers un autre, rorganiser la table pour supprimer la migration de lignes. Aprs avoir transfr une table, vous devez reconstituer les index pour viter l'erreur suivante :
SQL> select * from employee where id=23; select * from employee where id=23 * ERROR at line 1: ORA-01502: index 'SUMMIT.EMPLOYEE_ID_PK' or partition of such index is in unusable state

1.4.8. Repre high-water mark

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

19 / 68

Le repre high-water mark d'une table indique le dernier bloc utilis de la table. Lorsque des donnes sont insres dans la table, le repre high-water mark se dplace pour indiquer le dernier bloc utilis. Le repre high-water mark n'est pas rinitialis lorsque des lignes sont supprimes de la table. Le repre high-water mark est stock dans l'en-tte de segment de la table. Lorsque le serveur Oracle effectue des balayages complets de tables, il lit tous les blocs jusqu'au repre high-water mark.

1.4.9. Rechercher le repre high-water mark : DBMS_SPACE.UNUSED_SPACE

Le package DBMS_SPACE contient une procdure permettant de rechercher le repre high-water mark et le nombre de blocs situs au-dessus du repre. Bien que ces informations puissent tre obtenues partir du dictionnaire de donnes aprs l'analyse de la table, le package DBMS_SPACE permet d'accder plus rapidement aux informations sans affecter les performances.

Syntaxe
Vous pouvez utiliser le bloc PL/SQL suivant pour rechercher et afficher le nombre de blocs allous une table et le nombre de blocs non utiliss :

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
SQL> DECLARE 2 v_owner VARCHAR2(30) := 'SUMMIT' ; 3 v_segment_name VARCHAR2(30) := 'EMPLOYEE'; 4 v_segment_type VARCHAR2(30) := 'TABLE'; 5 v_total_blocks NUMBER; 6 v_total_bytes NUMBER; 7 v_unused_blocks NUMBER; 8 v_unused_bytes NUMBER; 9 v_last_used_extent_file_id NUMBER; 10 v_last_used_extent_block_id NUMBER; 11 v_last_used_block NUMBER; 12 BEGIN 13 dbms_space.unused_space(v_owner, 14 v_segment_name, 15 v_segment_type, 16 v_total_blocks, 17 v_total_bytes, 18 v_unused_blocks, 19 v_unused_bytes, 20 v_last_used_extent_file_id, 21 v_last_used_extent_block_id, 22 v_last_used_block 23 ); 24 dbms_output.put_line(INITCAP(v_segment_type)||' : '||v_owner||'.'||v_segment_name); 25 dbms_output.put_line('Total Blocks : '||TO_CHAR(v_total_blocks)); 26 dbms_output.put_line('Blocks above HWM : '||TO_CHAR(v_unused_blocks)); 27 END; 28 / Statement processed. Table : SUMMIT.EMPLOYEE Total Blocks : 25 Blocks above HWM : 23

20 / 68

Remarque : le package DBMS_SPACE est cr lorsque les scripts dbmsutil.sql et prvtutil.plb sont appels par le script catproc.sql.

1.4.10.

Librer l'espace inutilis

Si vous allouez des extents de grande taille une table et que les extents ne sont pas utiliss en totalit, vous pouvez librer manuellement de l'espace dans la table. L'espace libr devient alors disponible pour les autres segments du tablespace.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Syntaxe


Utilisez la commande suivante pour librer de l'espace dans une table :
ALTER TABLE [schema.]table DEALLOCATE UNUSED [KEEP integer [ K|M ] ]

21 / 68

KEEP dfinit le nombre d'octets conserver au-dessus du repre high-water mark. Si vous ne dfinissez pas la clause KEEP dans la commande, le serveur Oracle libre tout l'espace inutilis au-dessus du repre high-water mark. Si le repre high-water mark se trouve un extent en dessous de la valeur MINEXTENTS, le serveur Oracle libre des extents au-dessus de INEXTENTS. Examinons l'exemple de la diapositive. Si la valeur du paramtre MINEXTENTS de la table est gale ou infrieure quatre, le serveur Oracle libre tous les blocs inutiliss au-dessus du repre high-water mark. Notez que le cinquime extent (avec ID=4) ne contient maintenant que cinq blocs. Si la valeur du paramtre MINEXTENTS de table est gale cinq, le serveur Oracle ne libre pas d'espace dans le cinquime extent. Remarque : Etant donn que la libration d'espace l'aide de cette commande libre l'espace inutilis dans un extent, son utilisation frquente risque de fragmenter l'espace des fichiers de donnes. Pour viter ce problme, dfinissez le paramtre MINIMUM EXTENT du tablespace. Pour librer tout l'espace en dessous du repre high-water mark, mme si l'extent que dsigne le repre correspond un nombre d'extents infrieur la valeur du paramtre MINEXTENTS, utilisez le paramtre KEEP 0.

1.4.11.

Tronquer une table

La troncature d'une table supprime toutes les lignes d'une table et libre l'espace inutilis. Dans l'exemple de la diapositive, la valeur du paramtre MINEXTENTS de la table est gale 2.

Syntaxe
TRUNCATE TABLE [schema.] table [{DROP | REUSE} STORAGE]

Cette commande a les effets suivants : Elle supprime toutes les lignes de la table. Aucune donne d'annulation n'est gnre et la commande valide implicitement les donnes, car la commande TRUNCATE TABLE est une commande LDD. Elle tronque les index correspondants. Une table rfrence par une cl trangre ne peut tre tronque. Les dclencheurs de suppression ne sont pas activs. Si vous utilisez la clause DROP (clause par d faut) :

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
o

22 / 68

tous les extents, l'exception de ceux dfinis par le paramtre MINEXTENTS, sont librs, o le repre high-water mark est rinitialis et pointe vers le premier bloc de la table, o le paramtre NEXT_EXTENT de la table a pour valeur la taille de l'extent libr ayant l'ID le plus bas. Par exemple, si la valeur du paramtre MINEXTENTS est gale 2, la valeur du paramtre NEXT_EXTENT est gale la taille du troisime extent de la table. Vous devez dfinir la clause REUSE pour conserver tout l'espace inutilis de la table. Les index sont affects par la clause REUSE ou DROP.

1.4.12.

Supprimer une table

DROP TABLE summit.department CASCADE CONSTRAINTS;

Vous pouvez supprimer une table devenue inutile ou une table que vous souhaitez rorganiser.

Syntaxe
Utilisez la commande suivante pour supprimer une table :
DROP TABLE [schema.] table [CASCADE CONSTRAINTS]

Lorsque vous supprimez une table, vous librez les extents qu'elle utilise. Si les extents sont contigus, vous pouvez les fusionner automatiquement ou manuellement plus tard. Remarque : vous devez utiliser l'option CASCADE CONSTRAINTS s'il s'agit de la table mre d'une relation de cl trangre. Cette option est dcrite en dtail dans le chapitre "Grer l'intgrit des donnes".

Utiliser Oracle Enterprise Manager pour supprimer une table


1 Dmarrez Schema Manager. 2 Dveloppez le dossier Tables. 3 Dveloppez le nom d'utilisateur (ou schma). 4 Slectionnez la table. 5 Slectionnez Object >Remove. 6 Slectionnez Yes dans la bote de dialogue.

1.4.13.

Supprimer une colonne dune table

ALTER TABLE employee DROP COLUMN comments CASCADE CONSTRAINTS CHECKPOINT 1000;

Cette commande supprime la longueur et les donnes de colonne de chaque ligne pour librer de l'espace dans le bloc de donnes. La suppression d'une colonne d'une table volumineuse prend un temps considrable.

Les versions antrieures d'Oracle8i ne permettaient pas de supprimer une colonne d'une table. Le serveur 8i d'Oracle permet dsormais de supprimer des colonnes partir des lignes d'une table. La suppression de colonnes permet de nettoyer les colonnes inutilises et les colonnes ayant besoin d'espace, sans avoir exporter ou importer des donnes ni recrer les index et les contraintes. La suppression d'une colonne peut prendre un certain temps, car toutes les donnes de la colonne sont supprimes de la table.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

23 / 68

Utiliser un point de reprise lors de la suppression d'une colonne


La suppression d'une colonne peut prendre un certain temps et ncessiter un espace d'annulation consquent. Lorsque vous supprimez des colonnes dans des tables volumineuses, vous pouvez d finir des points de reprise pour rduire l'espace d'annulation utilis. Dans l'exemple suivant, un point de reprise se constitue toutes les 1 000 lignes. La table a l'attribut INVALID tant que l'annulation est en cours. Si l'instance connat un incident pendant l'annulation, la table conserve l'attribut INVALID au dmarrage, et l'opration doit tre poursuivie. Utilisez l'instruction suivante pour reprendre une annulation interrompue :
SQL> ALTER TABLE orders DROP COLUMNS CONTINUE;

Cette commande gnre une erreur lorsque la table a l'attribut VALID.

1.4.14.

Utiliser l'option UNUSED

Marquer une colonne comme n'tant pas utilise


ALTER TABLE orders SET UNUSED COLUMN comments CASCADE CONSTRAINTS;

Supprimer les colonnes inutilises


ALTER TABLE orders DROP UNUSED COLUMNS CHECKPOINT 1000;

Poursuivre l'opration de suppression de colonne


ALTER TABLE orders DROP COLUMNS CONTINUE CHECKPOINT 1000;

Au lieu de supprimer une colonne d'une table, vous pouvez marquer la colonne pour indiquer qu'elle n'est pas utilise, puis la supprimer ultrieurement. Ce marquage a l'avantage d'tre relativement rapide dans la mesure o aucun espace disque n'est rcupr du fait qu'aucune donne n'est supprime. Vous pouvez supprimer ultrieurement les colonnes inutilises de la table lorsque l'activit du systme est faible. Les colonnes inutilis es sont considres comme n'appartenant pas la table. Les interrogations ne peuvent pas voir les donnes des colonnes inutilises. En outre, les noms et les types de donnes de ces colonnes n'apparaissent pas lorsque la commande DESCRIBE est excute. L'utilisateur peut ajouter une colonne en utilisant le nom d'une colonne inutilise. Vous pouvez, par exemple, marquer des colonnes comme tant inutilises pour supprimer deux colonnes d'une mme table. Lorsque vous supprimez deux colonnes d'une table, toutes les lignes de la table sont mises jour deux fois. Si vous marquez des colonnes comme tant inutilises et les supprimez, les lignes ne sont mises jour qu'une seule fois.

Identifier les tables contenant des colonnes inutilises


Pour identifier les tables contenant des colonnes inutilises, interrogez la vue DBA_UNUSED_COL_TABS. Cette vue obtient le nom des tables contenant des colonnes inutilises et le nombre de colonnes inutilises qu'elles contiennent. L'interrogation suivante indique que la table ORDERS appartenant l'utilisateur SUMMIT contient une colonne inutilise :
SQL> select * from dba_unused_col_tabs; OWNER TABLE_NAME -------------------------------------------------SUMMIT ORDERS COUNT --------1

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Restrictions relatives la suppression d'une colonne


Vous ne pouvez pas : supprimer une colonne d'une table de type objet, supprimer des colonnes dans des tables imbriques, supprimer toutes les colonnes d'une table, supprimer une colonne de cl de partitionnement, supprimer une colonne des tables dont SYS est propritaire, supprimer une colonne de cl parent, supprimer une colonne d'une table organise en index si la colonne est une cl primaire.

24 / 68

1.4.15.

Extraire les informations relatives une table

Obtenir des informations du dictionnaire de donnes


Vous pouvez obtenir des informations sur les tables partir du dictionnaire de donnes. Pour obtenir le numro d'objet de donnes et l'emplacement de l'en-tte de table de toutes les tables appartenant l'utilisateur SUMMIT, lancez l'interrogation suivante :
SQL> SELECT t.table_name, o.data_object_id, 2 s.header_file, s.header_block 3 FROM dba_tables t, dba_objects o, dba_segments s 4 WHERE t.owner=o.owner 5 AND t.table_name=o.object_name 6 AND t.owner=s.owner 7 AND t.table_name=s.segment_name 8 AND t.owner='SUMMIT';

Obtenir des informations du dictionnaire de donnes (suite)


TABLE_NAME DATA_OBJECT_ID ---------- -------------CUSTOMER 12743 2 DEPARTMENT 12745 2 EMPLOYEE 12748 2 IMAGE 12751 2 INVENTORY 12753 2 ITEM 12755 2 LONG_TEXT 12758 2 ORDERS 12760 2 PRODUCT 12762 2 REGION 12765 2 TITLE 12768 2 WAREHOUSE 12770 2 12 rows selected. HEADER_FILE ----------902 912 927 942 952 962 977 987 997 1012 1027 1037 HEADER_BLOCK ------------

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
1.4.16.
DBA_EXTENTS OWNER SEGMENT_NAME EXTENT_ID FILE_ID BLOCK_ID BLOCKS

25 / 68

Extraire les informations sur les extents

Distribuer l'espace allou


Vous pouvez obtenir le nombre d'extents, leur emplacement et leur taille en interrogeant la vue DBA_EXTENTS. L'exemple ci-dessous indique le nombre d'extents et le nombre total de blocs utiliss par une table dans chacun des fichiers de la base de donnes :
SQL> SELECT file_id, COUNT(*) AS Extents, SUM(blocks) AS Blocks 2 FROM dba_extents 3 WHERE owner='SUMMIT' 4 AND segment_name='EMPLOYEE' 5 GROUP BY file_id; FILE_ID EXTENTS BLOCKS -----------------3 1 25 1 row selected.

1.4.17.

Package DBMS_ROWID

Fonctions couramment utilises :

Obtenir des informations sur le type de donnes ROWID


Le serveur Oracle fournit le package DBMS_ROWID, cr partir du script dbmsutil.sql, lui-mme appel par le script catproc.sql. Le package contient de nombreuses fonctions permettant d'effectuer des conversions de formats ROWID et de convertir le ROWID en composants individuels. La prsente section contient des exemples d'utilisation de ce package.

Obtenir les composants ROWID


Lancez l'interrogation suivante pour obtenir l'emplacement physique des lignes dans une table :
SQL> SELECT id, ROWID, 2 DBMS_ROWID.ROWID_OBJECT(ROWID) AS OBJECT, 3 DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) AS "RELATIVE FILE", 4 DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) AS BLOCK 5 FROM summit.department;

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Obtenir les composants ROWID (suite)


ID -10 31 32 33 34 35 41 42 43 44 45 50 12 ROWID -----------------AAADHJAACAAAAORAAA AAADHJAACAAAAORAAB AAADHJAACAAAAORAAC AAADHJAACAAAAORAAD AAADHJAACAAAAORAAE AAADHJAACAAAAORAAF AAADHJAACAAAAORAAG AAADHJAACAAAAORAAH AAADHJAACAAAAORAAI AAADHJAACAAAAORAAJ AAADHJAACAAAAORAAK AAADHJAACAAAAORAAL rows selected. OBJECT --------12745 12745 12745 12745 12745 12745 12745 12745 12745 12745 12745 12745 RELATIVE FILE ------------2 2 2 2 2 2 2 2 2 2 2 2 BLOCK --------913 913 913 913 913 913 913 913 913 913 913 913

26 / 68

Rechercher le numro de fichier absolu


Lancez l'interrogation suivante pour obtenir les numros de fichier absolus des lignes dans SUMMIT.DEPARTMENT :
SQL> SELECT id, ROWID, 2 DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO(ROWID,'SUMMIT','DEPARTMENT') AS "FILE" 3 FROM summit.department; ID ROWID FILE --------- -----------------10 AAADHJAACAAAAORAAA 2 31 AAADHJAACAAAAORAAB 2 32 AAADHJAACAAAAORAAC 2 33 AAADHJAACAAAAORAAD 2 34 AAADHJAACAAAAORAAE 2 35 AAADHJAACAAAAORAAF 2 41 AAADHJAACAAAAORAAG 2 42 AAADHJAACAAAAORAAH 2 43 AAADHJAACAAAAORAAI 2 44 AAADHJAACAAAAORAAJ 2 45 AAADHJAACAAAAORAAK 2 50 AAADHJAACAAAAORAAL 2 12 rows selected.

---------

1.5.Synthse
Ce chapitre vous a permis d'apprendre : crer une table avec les paramtres de stockage et d'utilisation de blocs appropris, contrler le stockage d'une table, utiliser le package DBMS_ROWID.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

27 / 68

2. Grer l'Intgrit des donnes


Notions abordes dans ce chapitre Mise en uvre des contraintes d'intgrit sur les donnes, Gestion des contraintes d'intgrit, Comment obtenir des informations sur les contraintes partir du dictionnaire de donnes ?

2.1.Intgrit des donnes


Image

2.1.1. Mthodes garantissant l'intgrit des donnes


L'intgrit des donnes garantit que les donnes d'une base de donnes respectent certaines rgles. Vous disposez de trois mthodes principales pour garantir l'intgrit des donnes : le code applicatif les triggers de base de donnes, contraintes d'intgrit dclaratives. Le choix de la mthode utiliser pour appliquer ces rgles relve de la conception de la base de donnes et incombe son concepteur. L'administrateur de base de donnes est le premier concern par la mise en uvre de la mthode choisie par le concepteur et par l'quilibrage entre le besoin de performances et l'intgrit des donnes. Le code applicatif peut tre mis en uvre sous forme de procdures stockes dans la base de donnes ou sous forme d'applications excutes sur le client. Le prsent chapitre porte sur l'utilisation des triggers de base de donnes et sur les contraintes d'intgrit.

Triggers de base de donnes


Les dclencheurs de base de donnes sont des programmes PL/SQL qui s'excutent lorsqu'un vnement donn, tel que l'insertion ou la mise jour d'une colonne, se produit sur une table. Vous pouvez activer ou dsactiver les dclencheurs, c'est--dire que vous pouvez les dfinir pour qu'ils s'excutent lorsque l'vnement se produit, ou pour qu'ils ne s'excutent pas, mme s'ils sont dfinis. Les dclencheurs de base de donnes ne sont gnralement crs que pour appliquer une rgle complexe ne pouvant tre dfinie sous la forme d'une contrainte d'intgrit.

Contraintes d'intgrit
Les contraintes d'intgrit constituent le mcanisme par excellence pour appliquer des rgles, car : elles amliorent les performances, elles sont simples dclarer et modifier, dans la mesure o elles ncessitent peu de code, elles centralisent les rgles, elles sont souples (actives ou dsactives), elles sont entirement documentes dans le dictionnaire des donnes.

Contraintes d'intgrit

Types de contrainte
Il existe cinq types de contrainte d'intgrit dclarative. Bien que les contraintes NOT NULL et CHECK ne ncessitent aucune attention particulire de la part de l'administrateur de base de donnes, les contraintes de cl primaire, de cl unique et de cl trangre doivent tre gres pour garantir une disponibilit optimale et des performances acceptables.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

28 / 68

Contrainte NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY

CHECK

Description Indique quune colonne ne peut contenir aucune valeur nulle Dfinit comme tant unique une colonne ou un groupe de colonnes. Dfinit une colonne ou un groupe de colonnes comme cl primaire de la table. Dfinit une colonne ou un groupe de colonne comme cl trangre dans une contrainte dintgrit rfrentielle. Dfinit une condition que chaque ligne de la table doit satisfaire.

Etats des contraintes


Image Une contrainte d'intgrit peut avoir l'un des tats suivants : Disabled Novalidate, Disabled Validate, Enabled Novalidate ou Enforced, Enabled Validate.

Disabled Novalidate
Une contrainte ayant l'tat Disabled Novalidate n'est pas vrifie, bien que la dfinition de la contrainte existe toujours dans le dictionnaire de donnes. Les donnes de la table et les nouvelles donnes entres ou mises jour peuvent ne pas tre conformes aux rgles dfinies par la contrainte. Il s'agit de l'tat normal d'une contrainte de traitement de transaction "online".

Disabled Validate
Lorsqu'une contrainte a cet tat, la modification des colonnes auxquelles s'applique la contrainte n'est pas autorise. En outre, l'index de la contrainte est supprim et la contrainte est dsactive. Pour une contrainte unique, cet tat permet de charger efficacement les donnes d'une table non partitionne dans une table partitionne en utilisant l'option EXCHANGE PARTITION de la commande ALTER TABLE.

Enabled Novalidate (Enforced)


Cet tat de contrainte interdit l'entre des donnes qui violent les rgles de la contrainte. Toutefois, la table peut contenir des donnes non valides, c'est--dire qui violent la contrainte. En gnral, il s'agit d'un tat intermdiaire qui garantit que toutes les nouvelles donnes ont t vrifies avant d'tre acceptes dans la table.

Enabled Validate
Lorsqu'une contrainte a cet tat, cela implique que toutes les donnes de la table sont conformes la contrainte. En outre, cet tat empche d'entrer des donnes non valides dans la table. Il s'agit de l'tat normal d'une contrainte de traitement de transaction "online".Lorsqu'une contrainte passe de l'tat Disabled l'tat Enabled Validate, la table est verrouille et la conformit de toutes les donnes de la table est vrifie. Cette situation peut provoquer le report de l'excution d'oprations LMD, telles que le chargement de donnes. Il est donc conseill de faire d'abord passer la contrainte de l'tat Disabled l'tat Enable Novalidate, puis l'tat Enable Validate.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes Contraintes diffres


Vous pouvez dfinir le point d'une transaction partir duquel une contrainte sera vrifie en dfinissant la contrainte de manire approprie. Vrification des contraintes non diffres Instruction DML Validation Vrification des contraintes diffres

29 / 68

Contraintes non diffres ou immdiates


Les contraintes non diffres, galement appeles contraintes immdiates, sont appliques la fin de chaque instruction LMD. Une violation de contrainte annule la transaction. Si une contrainte provoque une action, telle qu'une suppression en cascade, on considre que l'action fait partie de l'instruction qui l'a dclenche. Une contrainte dfinie comme ne pouvant tre diffre ne peut pas tre modifie pour tre applique la fin d'une transaction.

Contraintes diffres
Les contraintes diffres ne sont vrifies que lorsqu'une transaction est valide. Si une violation de contrainte est dtecte lors de la validation, l'ensemble de la transaction est annul. Ces contraintes s'avrent trs utiles lorsque les lignes parent et les lignes enfant d'une relation de cl trangre sont entres simultanment, comme dans le cas d'un systme de traitement des commandes o les articles et la commande sont entrs simultanment. Pour qu'une contrainte puisse tre diffre, elle doit tre dfinie lors de sa cration comme pouvant tre diffre. Une contrainte dfinie comme pouvant tre diffre peut tre indique comme suit : Initially immediate : indique qu'il s'agit par dfaut d'une contrainte immdiate, sauf indication contraire explicite. Initially deferred : indique que, par dfaut, la contrainte ne doit tre applique qu' la fin de la transaction.

Modifier l'application des contraintes


Bien que le mode d'application par dfaut d'une contrainte pouvant tre diffre soit dfini et stock dans le dictionnaire de donnes, les applications peuvent modifier la contrainte pour qu'elle fonctionne en diffr ou en immdiat. Pour cela, il faut utiliser la commande ALTER SESSION ou SET CONSTRAINT :
ALTER SESSION SET CONSTRAINT[S] = {IMMEDIATE|DEFERRED|DEFAULT} SET CONSTRAINT[S] {constraint [, constraint ]... |ALL } {IMMEDIATE|DEFERRED}

Appliquer des contraintes de cl primaire et de cl unique

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

30 / 68

Les contraintes de cl primaire et de cl unique sont appliques en utilisant des index. Vous pouvez contrler l'emplacement et le type de l'index utilis pour appliquer ces contraintes. Le serveur Oracle utilise la procdure suivante pour mettre en uvre les contraintes de cl primaire et de cl unique : Si la contrainte est dsactive, aucun index n'est ncessaire. Si la contrainte est active et que les colonnes de la contrainte forment la premire partie d'un index, l'index est utilis pour appliquer la contrainte. Si la contrainte est active et que les colonnes de la contrainte ne correspondent pas au dbut d'un index, un index portant le nom de la contrainte est cr selon les rgles suivantes : S'il s'agit d'une cl pouvant tre diffre, un index non unique est cr dans la colonne de la cl. S'il s'agit d'une cl ne pouvant pas tre diffre, un index unique est cr.

Considration sur les cls trangres


Action souhaite Supprimer la table mre Tronquer la table mre Supprimer un tablespace contenant la table mre Eviter de verrouiller la table enfant lors doprations DML dans la table mre Excuter des oprations DML dans la table enfant Solution Contraintes en cascade Dsactiver ou supprimer la clef trangre Utiliser la clause CASCADE CONSTRAINTS Crer un index index sur la clef trangre Mettre en ligne le tablespace contenant lindex de la clef parent

Remarques sur l'utilisation des contraintes de cls trangres


Vous devez tenir compte de plusieurs lments pour grer des tables dans une relation de cl trangre.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes DDL impliquant la table mre

31 / 68

La cl trangre doit tre supprime avant la table mre. Utilisez la commande suivante pour excuter les deux actions l'aide d'une seule instruction :
DROP TABLE table CASCADE CONSTRAINTS

Vous ne pouvez pas tronquer la table mre sans supprimer ou dsactiver la cl trangre. Vous devez supprimer la cl trangre pour pouvoir supprimer le tablespace contenant la table mre. Pour ce faire, utilisez la commande suivante :
DROP TABLESPACE tablespace INCLUDING CONTENTS CASCADE CONSTRAINTS

Oprations DML sur les tables dans une relation de cl trangre


Si l'option DELETE CASCADE n'est pas utilise lors de la suppression des lignes de la table mre, le serveur Oracle doit vrifier dans la table enfant qu'il n'y a pas de ligne contenant la cl trangre correspondante. De mme, la cl parent ne peut tre mise jour que si l'ancienne cl ne figure dans aucune ligne enfant. Si la cl trangre de la table enfant ne contient pas d'index, le serveur Oracle verrouille la table enfant et interdit les modifications pour garantir l'intgrit rfrentielle. Si la table contient un index, l'intgrit rfrentielle est conserve en verrouillant les entres d'index et en vitant d'utiliser des verrous plus restrictifs sur la table enfant. Si les deux tables doivent tre mises jour simultanment par des transactions diffrentes, crez un index dans les colonnes de la cl trangre. Lorsque les donnes sont insres ou que la colonne de la cl trangre de la table enfant est mise jour, le serveur Oracle vrifie l'index de la table mre utilise pour appliquer la cl rfrence. Par consquent, l'opration n'aboutit que si le tablespace contenant l'index est "online". Notez que le tablespace contenant la table mre ne doit pas ncessairement tre "online" pour excuter des oprations DML sur la table enfant. Remarque : il est recommand de crer des index dans les colonnes de la cl trangre, car cela apporte d'autres avantages en matire de performances.

2.2.Mettre en uvre des contraintes


2.2.1. Dfinir les contraintes lors de la cration d'une table
CREATE TABLE summit.employee( id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY DEFERRABLE USING INDEX STORAGE(INITIAL 100K NEXT 100K) TABLESPACE indx, last_name VARCHAR2(25) CONSTRAINT employee_last_name_nn NOT NULL, dept_id NUMBER(7)) TABLESPACE data;

2.2.2. Dfinir des contraintes lors de la cration d'une table


Vous pouvez dfinir une contrainte lorsque vous crez une table ou lorsque vous la modifiez.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
2.2.3. Syntaxe : contrainte de colonne

32 / 68

Lors de la cration de la table, vous pouvez crer la contrainte en utilisant la syntaxe suivante pour dfinir la colonne :
column datatype [CONSTRAINT constraint] in_line_constraint [defer_spec] in_line_constraint :== {[NOT] NULL |PRIMARY KEY [USING INDEX index_clause] |UNIQUE [USING INDEX index_clause] |REFERENCES [schema.]table [(column)] [ON DELETE CASCADE] |CHECK (condition) } defer_spec :== [NOT DEFERRABLE|DEFERRABLE [INITIALLY {IMMEDIATE|DEFERRED}] ] [DISABLE|ENABLE [VALIDATE|NOVALIDATE]]

CONSTRAINT USING INDEX

DEFERRABLE NOT DEFERRABLE

INITIALLY IMMEDIATE

INITIALLY DEFERRED DISABLE

identifie la contrainte d'intgrit par le nom constraint stock dans le dictionnaire de donnes, indique que les paramtres dfinis dans index-clause doivent tre utiliss pour l'index auquel fait appel le serveur Oracle afin d'appliquer une contrainte de cl unique ou primaire (l'index porte le mme nom que la contrainte), indique que la vrification de la contrainte peut tre reporte la fin de la transaction l'aide de la commande SET CONSTRAINT(S), indique que la contrainte est vrifie la fin de chaque instruction LMD (une contrainte NOT DEFERRABLE ne peut pas tre diffre par les sessions ou par les transactions. NOT DEFERRABLE est utilis par dfaut). indique qu'au dbut de chaque transaction, la contrainte doit, par dfaut, tre vrifie la fin de chaque instruction LMD (si aucune clause INITIALLY n'est dfinie, INITIALLY IMMEDIATE est utilis par dfaut), indique qu'il s'agit d'une contrainte DEFERRABLE et que, par dfaut, elle n'est vrifie qu' la fin de chaque transaction, dsactive la contrainte d'intgrit (lorsqu'une contrainte d'intgrit est dsactive, le serveur Oracle ne l'applique pas).

2.2.4. Syntaxe : contrainte de table


Vous pouvez galement crer la contrainte de table l'aide de la syntaxe suivante :
[CONSTRAINT constraint] out_of_line_constraint out_of_line_constraint :== {PRIMARY KEY (column [, column ]... ) [USING INDEX index_clause] |UNIQUE (column [, column ]... ) [USING INDEX index_clause] |FOREIGN KEY (column [, column ]... ) REFERENCES [schema.]table [(column [, column ]... )] [ON DELETE CASCADE] |CHECK (condition) } [defer_spec]

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

33 / 68

Remarque : Il est recommand d'adopter une convention d'appellation standard pour les contraintes, notamment avec les contraintes CHECK, puisque vous pouvez crer plusieurs fois la mme avec des noms diffrents. Dans les cas suivants, vous devez utiliser des contraintes de table : lorsqu'une contrainte s'applique plusieurs colonnes, lorsqu'une table est modifie pour ajouter des contraintes autres que NOT NULL.

2.2.5. Dfinir des contraintes aprs la cration d'une table :


Exemple :
ALTER TABLE summit.employee ADD(CONSTRAINT employee_dept_id_fk FOREIGN KEY(dept_id) REFERENCES summit.department(id) DEFERRABLE INITIALLY DEFERRED);

Remarque : la clause EXCEPTIONS, dcrite dans la section "Activer les contraintes" de ce chapitre, peut tre utilise pour identifier les lignes qui violent une contrainte ajoute l'aide de la commande ALTER TABLE.

2.2.6. Instructions de dfinition des contraintes


Tenez compte des points suivants pour dfinir des contraintes : Placez les index utiliss pour appliquer les contraintes de cl primaire et de cl unique dans un tablespace diffrent de celui de la table. Pour ce faire, vous pouvez soit dfinir la clause USING INDEX, soit crer la table et l'index, puis modifier la table pour ajouter ou activer la contrainte. Si les donnes sont souvent charges en masse dans une table, il est prfrable de dsactiver les contraintes, de charger les donnes, puis de ractiver les contraintes. Si vous utilisez un index unique pour appliquer une contrainte de cl primaire ou de cl unique, cet index doit tre supprim lorsque vous dsactivez la contrainte. Dans une telle situation, vous pouvez amliorer les performances en utilisant un index non unique pour appliquer des contraintes de cl primaire ou de cl unique. Pour ce faire, crez une cl pouvant tre diffre, ou crez l'index avant de dfinir ou d'activer la cl. Si une table contient une cl trangre d'auto rfrencement, utilisez l'une des mthodes suivantes pour charger les donnes : o Dfinissez ou activez la cl trangre aprs le premier chargement de donnes. o Dfinissez la contrainte comme pouvant tre diffre. La seconde mthode s'avre trs utile lorsque des donnes sont charges frquemment.

2.3.Grer les contraintes


2.3.1. Activer les Contraintes

Enable NOVALIDATE

Enable NOVALIDATE

Ne verrouille pas la table Les cls primaires doivent utiliser des index non uniques

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
ALTER TABLE summit.department ENABLE NOVALIDATE CONSTRAINT dept_pk;

34 / 68

Une contrainte dsactive peut tre active de deux manires : l'aide de l'option enable NOVALIDATE ou enable VALIDATE. L'activation d'une contrainte de non-validation est beaucoup plus rapide que l'activation d'une contrainte de validation, car si la contrainte peut tre diffre, il n'y a pas de dtection de violation de contrainte sur les donnes existantes. Si vous utilisez cette option pour activer une contrainte, il n'est pas ncessaire de verrouiller la table. Utilisez cette mthode lorsque de nombreuses oprations LMD sont excutes sur la table, comme c'est le cas dans un environnement OLTP.

Syntaxe
Utilisez la commande suivante pour activer une contrainte de non-validation :
ALTER TABLE [ schema. ] table ENABLE NOVALIDATE {CONSTRAINT constraint | PRIMARY KEY | UNIQUE ( column [, column ] ... ) } [ USING INDEX index_clause ]

Restrictions
La clause USING INDEX ne s'applique qu'aux contraintes de cl primaire ou de cl unique cres comme contraintes pouvant tre diffres, et seulement si l'une des conditions suivantes est vraie : les contraintes n'ont pas t actives lors de leur cration, les contraintes ont t dsactives et l'index a t supprim. Toutefois, si vous devez crer l'index, cette mthode d'activation de contrainte ne procure aucun avantage particulier par rapport la mthode d'activation de la validation, car le serveur Oracle verrouille la table pour crer l'index. Remarque : la dsactivation des contraintes est dcrite dans le cours Introduction to SQL and PL/SQL.

Enable VALIDATE
Enable VALIDATE Verrouille pas la table Peut utiliser des index uniques ou non uniques Ncessite des donnes de table valides

ALTER TABLE summit.employee ENABLE VALIDATE CONSTRAINT emp_dept_fk;

L'activation d'une contrainte de validation dclenche une dtection de violation de contrainte sur les donnes existantes. Cette action est effectue par dfaut lorsqu'une contrainte est active. Si la dtection est lance alors que la contrainte est dsactive, les effets sont les suivants : La table est verrouille et aucune modification n'est applique tant que la validation des donnes existantes n'est pas termine. Le serveur Oracle cre un index s'il n'en existe pas dans les colonnes d'index. Il cre un index unique lors de l'activation d'une contrainte de cl primaire ou de cl unique ne pouvant tre diffre. Il cre un index non unique pour une contrainte de cl primaire ou de cl unique pouvant tre diffre.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

35 / 68

Si cette commande est excute lorsqu'une contrainte est en vigueur, la table n'a pas besoin d'tre verrouille durant la validation. La contrainte applique vrifie qu'aucune donne insre lors de la validation ne viole ces rgles. Les avantages sont les suivants : Toutes les contraintes sont actives simultanment. Chaque contrainte est excute en interne et en parallle. Les oprations simultanes sur la table sont rendues possibles.

Syntaxe
Utilisez la commande suivante pour activer une contrainte de validation :
ALTER TABLE [ schema. ] table ENABLE [ VALIDATE ]{CONSTRAINT constraint | PRIMARY KEY | UNIQUE ( column [, column ] ... ) } [ USING INDEX index_clause ] [ EXCEPTIONS INTO [ schema. ] table ]

Remarque : VALIDATE est l'option par dfaut. Il est inutile de la dfinir pour activer une contrainte dsactive. Si des donnes de la table violent la contrainte, l'instruction est annule et la contrainte reste dsactive.

2.3.2. Utiliser la table EXCEPTIONS


1. Crez la table EXCEPTIONS (utlexcpt.sql). 2. Excutez la commande ALTER TABLE avec la clause EXCEPTIONS. 3. Utilisez l'interrogation imbrique sur la table EXCEPTIONS pour rechercher les lignes contenant des valeurs non valides. 4. Rectifiez les erreurs. 5. Rexcutez la commande ALTER TABLE pour activer la contrainte.

Identifier une violation de contrainte due aux lignes


La clause EXCEPTIONS permet d'identifier les lignes qui violent une contrainte active. Pour identifier les violations de contrainte, les rectifier et ractiver une contrainte, procdez comme suit : 1. Si la table d'exceptions n'a pas encore t cre, excutez le script utlexcpt.sql du rpertoire ADMIN :
SQL> @?/rdbms/admin/utlexcpt Statement processed. SQL> DESCRIBE exceptions Name Null? Type -------------------------- ------- ---------------ROW_ID UNDEFINED OWNER VARCHAR2(30) TABLE_NAME VARCHAR2(30) CONSTRAINT VARCHAR2(30)

Sous Windows NT, ce script se trouve dans le rpertoire %ORACLE_HOME%\RDBMS\ADMIN. 2. Excutez la commande ALTER TABLE en utilisant la clause EXCEPTIONS :
SQL> ALTER TABLE summit.employee 2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk 3 EXCEPTIONS INTO system.exceptions; ALTER TABLE summit.employee * ORA-02298: cannot enable (summit.EMP_DEPT_FK) - parent keys not found

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

36 / 68

Si la table d'exceptions n'est pas qualifie avec le nom du propritaire, elle doit appartenir au propritaire de la table en cours de modification. Des lignes sont insres dans la table d'exceptions. Si vous rexcutez la commande, tronquez la table d'exceptions pour supprimer toutes les lignes existantes. 3. Identifiez les donnes non valides en lanant une sous-interrogation sur la table EXCEPTIONS :
SQL> SELECT rowid, id, last_name, dept_id 2 FROM summit.employee 3 WHERE ROWID in (SELECT row_id 4 FROM exceptions) 5 FOR UPDATE; ROWID ID LAST_NAME DEPT_ID ------------------- ----- --------------- -------AAAAeyAADAAAAA1AAA 1003 Pirie 50 1 row selected.

4. Corrigez les erreurs de donnes :


SQL> UPDATE summit.employee 2 SET id=10 3 WHERE rowid='AAAAeyAADAAAAA1AAA'; 1 row processed. SQL> COMMIT; Statement processed.

5. Tronquez la table exceptions et ractivez la contrainte :


SQL> TRUNCATE TABLE exceptions; Statement processed. SQL> ALTER TABLE summit.employee 2 ENABLE VALIDATE CONSTRAINT employee_dept_id_fk 3 EXCEPTIONS INTO system.exceptions; Statement processed.

Obtenir des informations sur les contraintes


DBA_CONSTRAINTS
OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME DELETE_RULE STATUS DEFERRABLE DEFERRED VALIDATED GENERATED BAD RELY LAST_CHANGE

DBA_CONS_COLUMNS
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME POSITION

Contraintes et statut
En lanant l'interrogation suivante pour obtenir le nom, le type et le statut de toutes les contraintes de la table EMPLOYEE de l'utilisateur SUMMIT :

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
SQL> SELECT constraint_name, constraint_type, deferrable, 2 deferred, validated 3 FROM dba_constraints 4 WHERE owner='SUMMIT' 5 AND table_name='EMPLOYEE'; CONSTRAINT_NAME ---------------EMPLOYEE_DEPT.. EMPLOYEE_ID_PK SYS_C00565 3 rows selected. C R P C DEFERRABLE DEFERRED VALIDATED --------------- ----------- ---------DEFERRABLE DEFERRED VALIDATED DEFERRABLE IMMEDIATE VALIDATED NOT DEFERRABLE IMMEDIATE VALIDATED

37 / 68

Le tableau suivant montre les colonnes non explicites de la vue DBA_CONSTRAINTS. Nom CONSTRAINT_TYPE Description Le type de la contrainte est P, U, R ou C selon qu'il s'agit respectivement d'une contrainte de cl primaire, de cl unique, de cl trangre ou dune contrainte CHECK. Les contraintes NOT NULL sont stockes sous forme de contraintes CHECK. Indique la condition dfinie pour une contrainte CHECK. Indique le propritaire et le nom de la contrainte rfrence pour les cls trangres. Indique si le nom de contrainte a t gnr par le systme (les valeurs acceptes sont "USER NAME" et "GENERATED NAME"). Indique que la contrainte doit tre rcrite pour viter certaines situations, telles que les problmes de compatibilit avec l'an 2000 (ceci peut arriver, car les versions antrieures d'Oracle autorisaient les annes 2 chiffres dans les contraintes CHECK). Si cet indicateur est dfini, il est utilis dans l'optimiseur. Date de la dernire activation ou dsactivation de la contrainte.

SEARCH_CONDITION R_OWNER R_CONSTRAINT_NAME GENERATED BAD

RELY LAST_CHANGE

Colonnes des contraintes


Pour obtenir les colonnes des contraintes de la table EMPLOYEE de l'utilisateur SUMMIT, lancez l'interrogation suivante :
SQL> SELECT c.constraint_name, c.constraint_type, 2 cc.column_name 3 FROM dba_constraints c, dba_cons_columns cc 4 WHERE c.owner='SUMMIT' 5 AND c.table_name='EMPLOYEE' 6 AND c.owner = cc.owner 7 AND c.constraint_name = cc.constraint_name 8 ORDER BY cc.position; CONSTRAINT_NAME C --------------------EMPLOYEE_DEPT... R EMPLOYEE_ID_PK P SYS_C00565 C 3 rows selected. COLUMN_NAME - --------------DEPT_ID ID LAST_NAME

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

38 / 68

Rechercher les relations entre les cls primaires et les cls trangres
Pour obtenir les cls trangres de la table EMPLOYEE de l'utilisateur SUMMIT et les contraintes parent, lancez l'interrogation suivante :
SQL> SELECT c.constraint_name AS "Foreign Key", 2 p.constraint_name AS "Referenced Key", 3 p.constraint_type, 4 p.owner, 5 p.table_name 6 FROM dba_constraints c, dba_constraints p 7 WHERE c.owner='SUMMIT' 8 AND c.table_name='EMPLOYEE' 9 AND c.constraint_type='R' 10 AND c.r_owner=p.owner 11 AND c.r_constraint_name = p.constraint_name; Foreign Key TABLE_NAME ------------EMPLOYEE_DEPT.. 1 row selected. Referenced Key -------------DEPT_PK C OWNER - ---------- ----------DEPARTMENT

P SUMMIT

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

39 / 68

3. Charger les donnes


Vous pouvez procder de diffrentes manires pour charger les donnes dans les tables d'une base de donnes Oracle.
Applications

SQL*Loader

DB Export

Import DB Chargement direct Insertion par chargement direct Utilisez la mthode d'insertion par chargement direct pour copier les donnes d'une table vers une autre au sein d'une mme base de donnes. Cette mthode acclre les oprations d'insertion en passant outre le cache de tampons (buffer cache) et en crivant directement les donnes dans les fichiers de donnes. Utilitaire SQL*Loader SQL*Loader est un utilitaire qui permet de charger des donnes de fichiers externes dans des tables Oracle. Il offre un moyen de migrer des donnes partir d'autres systmes vers la base de donnes Oracle. Utilitaires Export et Import L'utilitaire Export permet aux utilisateurs d'extraire des informations et des donnes du dictionnaire de donnes d'une base de donnes Oracle et de les transfrer vers un fichier du systme d'exploitation au format binaire Oracle. Les fichiers gnrs par l'utilitaire Export peuvent tre lus par l'utilitaire Import dans la mme base de donnes Oracle ou dans une autre base de donnes Oracle.

3.1.Charger des donnes l'aide de la mthode d'insertion par chargement direct


Image

3.1.1. Syntaxe
L'insertion par chargement direct peut tre excute en utilisant le conseil (hint) APPEND, comme indiqu dans la commande suivante :
INSERT /*+APPEND */ INTO [ schema. ] table [ [NO]LOGGING ] sub-query;

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
O : schema table sub-query

40 / 68

correspond au propritaire de la table, est le nom de la table, est la sous-requte qui permet de slectionner les colonnes et les lignes insrer.

Les insertions par chargement direct ne sont possibles qu'en utilisant la commande INSERT INTO SELECT. La commande INSERT INTO VALUES ne permet pas de les excuter. L'insertion par chargement direct peut tre utilise tant dans les tables partitionnes que dans celles non partitionnes. Ce type d'insertion gre les index et applique toutes les contraintes actives. Il permet galement d'autres utilisateurs de modifier simultanment d'autres lignes de la table.

3.1.2. Mode LOGGING


Lorsque vous effectuez une insertion l'aide de l'option LOGGING (option par dfaut), l'opration gnre des entres de journalisation (redo log entries), ce qui permet de rcuprer toutes les donnes en cas d'incident. Si vous utilisez l'option NOLOGGING, les modifications apportes aux donnes ne seront pas enregistres dans le tampon de journalisation (redo log buffer). Toutefois, un nombre minimal d'informations de journalisation est gnr lorsque l'opration met jour le dictionnaire de donnes. Le mode NOLOGGING est utilis si l'attribut correspondant a t affect la table. Si plusieurs modifications "online" des donnes de la table sont susceptibles de se produire simultanment, il est conseill de dfinir l'attribut NOLOGGING avant de charger les donnes et de rinitialiser l'attribut en indiquant LOGGING une fois le chargement des donnes termin.

3.1.3. Autres considrations


L'insertion par chargement direct des donnes permet d'autres transactions de modifier la table simultanment. Toutes les donnes insres l'aide de cette mthode sont charges au-dessus du repre high-water mark. Si la table contient un grand nombre de blocs dont des lignes ont t supprimes, de l'espace peut tre perdu et le balayage complet de la table peut tre plus long.

3.1.4. Insertions par chargement direct en parallle


ALTER SESSION ENABLE PARALLEL DML; INSERT /*+PARALLEL(scott.emp,2) */ INTO scott.emp NOLOGGING SELECT * FROM scott.old_emp;

Vous pouvez effectuer des insertions par chargement direct en parallle en procdant de l'une des manires suivantes : l'aide du conseil PARALLEL dans l'instruction INSERT, comme indiqu dans l'exemple, en crant la table ou en la modifiant pour dfinir la clause PARALLEL. Lorsque vous effectuez des insertions par chargement direct en parallle, le serveur Oracle utilise plusieurs processus, appels processus esclaves d'interrogation en parallle, pour insrer les donnes dans la table. Des segments temporaires sont allous pour stocker les donnes insres par chaque processus esclave. Lorsque la transaction est valide, les extents (ensembles de blocs contigus) de chaque segment sont intgrs la table dans laquelle les enregistrements sont insrs. Remarque : Vous devez excuter la commande DML : ALTER SESSION ENABLE PARALLEL au dbut de la transaction. Un objet modifi par insertion par chargement direct en parallle ne peut pas tre interrog ou modifi de nouveau dans la mme transaction.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

41 / 68

3.2.Charger les donnes l'aide de l'utilitaire SQL*Loader

3.2.1. Fonctions de l'utilitaire SQL*Loader


L'utilitaire SQL*Loader charge les donnes des fichiers externes dans les tables d'une base de donnes Oracle. Caractristiques de l'utilitaire SQL*Loader : Un ou plusieurs fichiers en entre peuvent tre utiliss. Plusieurs enregistrements en entre peuvent tre combins pour former un enregistrement de chargement logique. Les fichiers en entre peuvent avoir une longueur fixe ou variable. Les donnes en entre peuvent avoir n'importe quel format : caractre, binaire, dcimal condens, date et dcimal non condens. Les donnes peuvent tre charges partir de diffrents types de support, tels que des disques, des bandes ou des canaux nomms. Les donnes peuvent tre charges simultanment dans plusieurs tables. Des options sont disponibles pour ajouter des donnes aux tables ou remplacer des donnes existantes. Les fonctions SQL peuvent tre appliques aux donnes en entre avant le stockage de la ligne dans la base de donnes. Les valeurs de colonne peuvent tre gnres automatiquement en fonction de rgles. Par exemple, une valeur de cl squentielle peut tre gnre et stocke dans une colonne. Les donnes peuvent tre charges directement dans la table sans utiliser le cache de tampons de la base de donnes.

3.2.2. Fichiers utiliss par l'utilitaire SQL*Loader


L'utilitaire SQL*Loader utilise les fichiers suivants : Fichier de contrle : dfinit le format d'entre, les tables de sortie et les conditions facultatives permettant de ne charger qu'une partie des enregistrements de fichiers de donnes en entre. Fichiers de donnes : contiennent les donnes au format dfini dans le fichier de contrle.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

42 / 68

Fichier de paramtres : fichier facultatif permettant de dfinir les paramtres de ligne de commande du chargement des donnes. Fichier journal : cr par l'utilitaire SQL*Loader et contenant l'enregistrement du chargement des donnes. Fichier des enregistrements refuss : utilis par l'utilitaire pour crire les enregistrements rejets lors du chargement des donnes (cette situation peut se produire lorsque l'utilitaire valide les enregistrements en entre ou lorsque le serveur Oracle insre les enregistrements). Fichier de rebut : cr, si ncessaire, pour stocker tous les enregistrements qui ne rpondent pas aux critres de slection. Image

3.2.3. Mthodes de chargement des donnes


L'utilitaire SQL*Loader permet de charger les donnes de deux manires : par chemin conventionnel, par chemin direct.

Charger les donnes par chemin conventionnel


Le chargement des donnes par chemin conventionnel cre un tableau contenant les lignes insrer et utilise l'instruction SQL INSERT pour charger les donnes. Au cours du chargement, les enregistrements en entre sont analyss en fonction des spcifications de champ, et un tableau d'enregistrements est cr et insr dans la table dfinie dans le fichier de contrle. Les enregistrements qui ne respectent pas les spcifications de champ sont rejets, ainsi que ceux qui ne correspondent pas aux critres de slection. Vous pouvez utiliser le chargement par chemin conventionnel pour charger des donnes tant dans les tables incluses dans un cluster que dans celles non incluses dans un cluster. La gnration des informations de journalisation est contrle par l'attribut de journalisation de la table charge.

Charger les donnes par chemin direct


Le chargement des donnes par chemin direct cre des blocs de donnes en mmoire et les enregistre directement dans les extents allous la table en cours de chargement. Aucune entre de journalisation n'est cre si la base de donnes ne fonctionne pas en mode ARCHIVELOG. Le chargement des donnes par chemin direct utilise les spcifications de champ pour crer des blocs de donnes Oracle complets et crit les blocs directement dans les fichiers de donnes Oracle. Cette mthode n'utilise pas le cache de tampons de la base de donnes et accde la mmoire SGA uniquement pour grer les extents et ajuster le repre high-water mark. Le chargement des donnes par chemin direct est gnralement plus rapide que le chargement des donnes par chemin conventionnel, mais ne convient pas pour toutes les situations. Remarque : le script catldr.sql, fourni par Oracle, cre des vues utilises pour le chargement des donnes par chemin direct. Ce script est appel automatiquement lorsque le script catalog.sql est excut.

Comparaison du chargement par chemin conventionnel et du chargement par chemin direct


Chargement par chemin conventionnel Utilise COMMIT pour rendre les modifications permanentes. Entre de journalisation toujours gnres Applique toutes les contraintes. Active les dclencheurs INSERT Peut charger les donnes dans des tables incluses Chargement par chemin direct Utilise les enregistrements de donnes Gnre des informations de journalisation uniquement dans certaines conditions. Utilise les cls primaires, uniques et NOT NULL Nactive pas les dclencheurs INSERT Ne peut pas charger des donnes dans des tables

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
dans un cluster Les autres utilisateurs peuvent modifier les tables

43 / 68 incluses dans un cluster. Les autres utilisateurs ne peuvent pas modifier les tables.

3.2.4. Mthode d'enregistrement des donnes


Le chargement des donnes par chemin conventionnel utilise une instruction SQL et des instructions COMMIT sur la base de donnes pour enregistrer les donnes. L'insertion d'un tableau d'enregistrements est suivie d'une opration de validation. Chaque chargement de donnes peut faire appel plusieurs transactions. Le chargement des donnes par chemin direct enregistre les donnes pour crire les blocs de donnes dans les fichiers de donnes Oracle. Les diffrences existant entre un enregistrement de donnes et une validation sont les suivantes : Lors d'un enregistrement de donnes, seuls les blocs de base de donnes complets sont crits dans la base de donnes. Les blocs sont crits aprs le repre high-water mark de la table. Le repre est dplac aprs l'enregistrement des donnes. Les ressources internes ne sont pas libres la suite de l'enregistrement des donnes. Un enregistrement de donnes ne met pas fin la transaction. Les index ne sont pas mis jour chaque enregistrement de donnes.

3.2.5. Journaliser les modifications


Le chargement des donnes par chemin conventionnel gnre des entres de journalisation comme n'importe quelle instruction DML. Aucune entre de journalisation du chargement n'est cre si : la base de donnes fonctionne en mode NOARCHIVELOG, la base de donnes fonctionne en mode ARCHIVELOG et que la journalisation est dsactive. Vous pouvez dsactiver la journalisation en affectant la table l'attribut NOLOGGING ou l'aide de la clause UNRECOVERABLE du fichier de contrle.

3.2.6. Appliquer les contraintes


Lors d'un chargement des donnes par chemin conventionnel, toutes les contraintes actives sont appliques comme s'il s'agissait d'une opration DML. Lors d'un chargement des donnes par chemin direct, les contraintes sont traites comme suit : Les contraintes NOT NULL sont vrifies lors de la cration des tableaux. La cl trangre et les contraintes CHECK sont dsactives et peuvent tre ractives la fin du chargement en utilisant les commandes appropries dans le fichier de contrle. Les contraintes de cl trangre sont dsactives, car elles font rfrence d'autres lignes ou d'autres tables ; les contraintes CHECK sont dsactives, car elles peuvent utiliser des fonctions SQL. Si vous ne devez insrer qu'un petit nombre de lignes dans une table volumineuse, utilisez le chargement des donnes par chemin conventionnel. Les contraintes de cl primaire et de cl unique sont vrifies au cours du chargement et la fin du chargement, et peuvent tre dsactives en cas de violation.

3.2.7. Activer les dclencheurs INSERT


Les dclencheurs INSERT sont activs pendant le chargement des donnes par chemin conventionnel ; en revanche, ils sont dsactivs avant l'excution d'un chargement des donnes par chemin direct et ractivs la fin du chargement. Ils peuvent rester dsactivs si un objet rfrenc n'est pas accessible la fin du chargement. Utilisez le chargement des donnes par chemin conventionnel pour charger les donnes dans les tables avec des dclencheurs INSERT.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
3.2.8. Charger les donnes dans une table incluse dans un cluster

44 / 68

Vous ne pouvez pas utiliser le chargement des donnes par chemin direct pour charger des lignes dans une table incluse dans un cluster. Vous ne pouvez charger une table incluse dans un cluster qu'avec le chargement des donnes par chemin conventionnel.

3.2.9. Verrouiller
Lorsqu'un chargement des donnes par chemin direct est en cours, les autres transactions ne peuvent pas modifier les tables en cours de chargement, sauf lorsque plusieurs sessions de chargement des donnes par chemin direct en parallle sont utilises simultanment.

3.2.10.

Chargement des donnes par chemin direct en parallle

Le chargement des donnes par chemin direct en parallle permet l'utilisation de plusieurs sessions simultanes pour charger les donnes dans une mme table.

3.2.11.

Squence des oprations

Utilisez diffrents fichiers de donnes en entre pour chaque session de chargement des donnes par chemin direct en parallle. Lorsque vous utilisez plusieurs sessions de chargement des donnes par chemin direct en parallle, le chargement s'effectue comme suit : 1. Chaque session utilise un segment temporaire pour charger les donnes partir des fichiers de donnes en entre. Ces segments temporaires sont crs dans le tablespace contenant la table en cours de chargement. Si le tablespace contient plusieurs fichiers de donnes, l'utilisateur peut, pour chacune des sessions, dfinir le fichier de donnes dans lequel le segment temporaire doit tre cr. L'utilisateur peut galement dfinir les paramtres de stockage des segments. Par dfaut, les segments ont les mmes attributs que la table en cours de chargement. 2. Le dernier extent de chaque segment temporaire est supprim pour librer l'espace inutilis une fois la session termine. 3. Tous les segments temporaires sont combins pour former un seul segment la fin du chargement. 4. Le segment temporaire rsultant est alors ajout au segment de la table.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
3.2.12. Restrictions

45 / 68

Les restrictions suivantes s'appliquent au chargement des donnes par chemin direct en parallle : Les index ne sont pas grs par le chargement. Les index sont supprims avant le chargement en parallle et recrs la fin du chargement. L'intgrit rfrentielle, les contraintes CHECK et les dclencheurs doivent tre dsactivs et ractivs manuellement. Les lignes ne peuvent tre ajoutes qu'aux donnes existantes, car les chargements ne sont pas coordonns. Si des donnes de la table doivent tre remplaces, tronquez manuellement la table avant d'effectuer le chargement en parallle.

3.2.13.
Exemple :

Utiliser SQL*Loader

$sqlldr scott/tiger \ > control=ulcase6.ctl \ > log=ulcase6.log direct=true

Ligne de commande
Utilisez la commande suivante sous UNIX ou Windows NT pour charger les donnes :
$sqlldr [keyword=]value [ [ [,] keyword=]value ] ...

o :

keyword value

correspond l'un des mots-cls dcrits dans la section suivante, correspond la valeur du mot-cl.

Remarque : Si aucun mot-cl n'est indiqu, les valeurs doivent tre dfinies dans l'ordre appropri. Toutefois, il est prfrable d'utiliser les mots-cls. Comme le montre la diapositive, vous pouvez dfinir les premires valeurs sans mot-cl, et les autres valeurs avec des mots-cls.

3.2.14.

Utiliser Oracle Enterprise Manager pour charger les donnes

1. Dmarrez la console Oracle Enterprise Manager : Start>Programs>Oracle - EMV2 Home>Oracle Enterprise Management >Enterprise Manager Console 2. Entrez les paramtres Administrator, Password et Management Server. Cliquez sur OK pour vous connecter la console. 3. Dveloppez le dossier Databases. 4. Slectionnez la base de donnes de travail, cliquez avec le bouton droit de la souris pour afficher le menu contextuel, puis slectionnez Data Management >Load. 5. Entrez le nom du fichier de contrle dans la page Control File, puis cliquez sur Next. 6. Entrez le nom des autres fichiers dans la page Data Files, puis cliquez sur Next. 7. Dfinissez les options de chargement de la page Load Method, puis cliquez sur Next.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

46 / 68

8. Dfinissez une planification dans la page Scheduling, puis cliquez sur Finish. 9. Vrifiez les options de la page Summary, puis cliquez sur OK.

Mots-cls de ligne de commande


Un certain nombre de mots-cls et d'options de chargement couramment utiliss indiquer dans la page 3 de l'assistant Data Manager Wizard sont dcrits ci-dessous. Mot Cl USERID CONTROLE LOG BAD DATA DISCARD Signification Nom utilisateur et mot de passe Oracle. Si le mot de passe n'est pas indiqu, un message s'affiche pour le demander l'utilisateur. Nom du fichier de contrle. Nom du fichier journal de travail ; par dfaut, il correspond au nom du fichier de contrle et porte l'extension log. Nom du fichier qui stocke les enregistrements rejets ; par dfaut, il correspond au nom du fichier de contrle et porte l'extension bad. Nom des fichiers de donnes en entre. Nom du fichier de rebut facultatif dans lequel les enregistrements non slectionns sont stocks. Nombre maximum d'enregistrements non slectionns ; par dfaut, contient tous les enregistrements non slectionns. Utilisez ce paramtre par mesure de scurit pour interrompre le chargement si les fichiers en entre ne sont pas les bons. Nombre d'enregistrements ignorer ; utilis principalement pour poursuivre un chargement ayant chou. N'utilisez cette option que si le chargement porte sur une seule table ou pour ignorer le mme nombre d'enregistrements pour toutes

DISCARDMAX

SKIP

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

47 / 68

LOAD ERRORS ROWS

BINDSIZE

DIRECT

PARFILE

PARALLEL

FILE

les tables charger. Dfinit le nombre d'enregistrements charger aprs avoir ignor les enregistrements dfinis par le paramtre SKIP. Nombre maximum d'enregistrements refuss. Dfinit le nombre de lignes du tableau crer avant chaque insertion l'aide du chargement des donnes par chemin conventionnel. Pour le chargement des donnes par chemin direct, ce paramtre dfinit le nombre approximatif de lectures de lignes en entre de chaque enregistrement de donnes. Le chargement des donnes par chemin direct cre des blocs complets, puis rejette les enregistrements refuss et les lignes non valides avant l'enregistrement des donnes. Dfinit, pour le chargement des donnes par chemin conventionnel, le nombre maximum d'octets utiliser pour crer un tableau de lignes insrer dans chaque appel de base de donnes (si vous dfinissez galement le paramtre ROWS, l'utilitaire SQL*Loader cre le nombre de lignes dfini par le paramtre ROWS en fonction de la limite impose par le paramtre BINDSIZE). L'utilitaire SQL*Loader fait appel au chargement des donnes par chemin direct si vous affectez la valeur TRUE au paramtre. Sinon, cest le chargement des donnes par chemin conventionnel (option par dfaut) qui est utilis. Dfinit le nom du fichier qui contient tous les paramtres de chargement (les paramtres dfinis dans la ligne de commande remplacent ceux du fichier de paramtres). Ce paramtre, qui ne s'applique qu'au chargement des donnes par chemin direct, indique que plusieurs chargements des donnes par chemin direct peuvent tre excuts en parallle. Dfinit le fichier dans lequel les segments temporaires du chargement des donnes par chemin direct en parallle doivent tre crs.

Ce paramtre peut galement tre dfini dans le fichier de contrle.

3.2.15.

Fichier de paramtres

Vous pouvez utiliser le fichier de paramtres pour dfinir les paramtres de chargement. Stockez tous les paramtres couramment utiliss dans un fichier de paramtres. Ce fichier dfinit les paramtres de la manire suivante :
KEYWORD=VALUE

3.2.16.

Fichier de contrle

Un fichier de contrle contient les lments suivants : le nom des fichiers de donnes en entre, l'aide de la clause INFILE, la composition d'un enregistrement logique partir d'un enregistrement physique dans les fichiers de donnes en entre, l'aide de clauses telles que CONCATENATE et CONTINUEIF, les spcifications de champ, y compris leur position, les types de donnes et les spcifications des dlimiteurs, l'aide de la clause FIELDS, les noms de table, l'aide de la clause INTO TABLE, la mthode de chargement : les donnes peuvent tre charges dans une table vierge, insres aprs la suppression ou la troncature des enregistrements existants, ou encore ajoutes aux donnes existantes, les enregistrements ignorer pour chaque table, l'aide de la clause CONTINUE_LOAD,

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

48 / 68

les conditions utiliser pour la slection des enregistrements charger, l'aide de la clause WHEN, les colonnes charger, les rgles de gnration des valeurs de colonne, l'aide de clauses telles que RECNUM et SYSDATE, et de l'application de fonctions SQL, les oprations de colonne, telles que la suppression et le remplacement des zros par des marqueurs NULL, les paramtres de chargement, l'aide de la clause OPTIONS, les spcifications de stockage des segments temporaires crs lors d'un chargement des donnes par chemin direct en parallle, les commentaires prcds de "--", d'autres options de chargement des donnes par chemin direct, telles que : o SINGLEROW pour grer les index ligne par ligne, o REENABLE pour activer la fin du chargement les contraintes dsactives, o SORTED_INDEXES pour indiquer si les donnes doivent tre prtries, o UNRECOVERABLE pour supprimer la gnration de donnes de journalisation.

Remarque : Le mot-cl NOLOGGING de dfinition de l'attribut NOLOGGING de la table est quivalent l'option UNRECOVERABLE du fichier de contrle. Vous pouvez galement stocker les donnes dans les fichiers de contrle en dfinissant INFILE * et en utilisant BEGINDATA pour marquer le dbut des donnes. Si vous utilisez cette option, tous les enregistrements situs aprs BEGINDATA seront considrs comme des donnes. Le rpertoire UNIX $ORACLE_HOME/rdbms/demo et le rpertoire Windows NT %ORACLE_HOME%\RDBMS80\LOADER contiennent des exemples d'options de chargement et de Fichiers de contrle.

3.2.17.

Fichier de donnes

Le fichier de donnes contient les enregistrements traiter au format dfini dans le fichier de contrle.

3.2.18.

Fichiers journaux

Le fichier journal est obligatoire, et le chargement s'arrte s'il ne peut pas tre cr faute de place ou d'autorisation. Le fichier journal contient : des informations d'en-tte, telles que la date du chargement et le numro de version du logiciel, des informations gnrales, telles que : o le nom de tous les fichiers d'entre et de sortie, o les arguments de ligne de commande, des informations de table, telles que : o les noms de table, o les conditions et la mthode de chargement, les informations de champs et de colonnes, les informations de fichiers de donnes indiquant les enregistrements rejets et refuss, ainsi que la cause, des informations de chargement des tables, telles que : o le nombre de lignes charges, o le nombre de lignes qui auraient pu tre charges, mais qui ont t rejetes la suite d'erreurs de donnes, o le nombre de lignes refuses, o le nombre de lignes dont les champs correspondants sont tous NULL,

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

49 / 68

des statistiques rcapitulatives indiquant : o l'espace allou au tableau, o les statistiques de chargement de tous les fichiers de donnes, o le dbut et la fin du chargement, o la dure du chargement, o le temps CPU total comprenant la dure de toutes les entres/sorties des fichiers, mais pas le temps CPU des processus d'arrire-plan.

3.2.19.

SQL*Loader : Autres fichiers de sortie

Fichier des enregistrements refuss


Le fichier des enregistrements refuss contient les enregistrements qui ont t rejets lors du traitement pour l'une des raisons suivantes : les enregistrements en entre contiennent des erreurs, telles qu'un nombre insuffisant de champs ou des champs mal formats, certaines lignes n'ont pas pu tre insres la suite, par exemple, d'une violation de contrainte. Les enregistrements du fichier des enregistrements refuss ont le mme format que les enregistrements en entre. Aprs correction des erreurs, vous pouvez utiliser les enregistrements pour recharger les donnes.

Fichier de rebut
Le fichier de rebut contient des donnes au mme format que les fichiers de donnes en entre. Il est utile pour charger des donnes de manire slective dans des tables de base de donnes, soit dans diffrentes bases, soit diffrents instants.

3.2.20.

Instructions d'utilisation de l'utilitaire SQL*Loader

Les instructions suivantes vous permettent de rduire le nombre d'erreurs et d'amliorer les performances lorsque vous utilisez l'utilitaire SQL*Loader : Faites appel un fichier de paramtres pour dfinir les options de ligne de commande couramment utilises. Par exemple, si vous chargez toutes les semaines les donnes dans un data warehouse, toutes les options, l'exception des noms de fichier, peuvent tre identiques. Sparer le fichier de contrle du fichier de donnes permet de rutiliser les fichiers de contrle pour plusieurs sessions de chargement. Prallouer l'espace en fonction du volume de donnes attendu permet, lors du chargement, d'viter l'allocation dynamique d'extents et d'amliorer la vitesse du chargement. Lorsque vous faites appel au chargement des donnes par chemin direct, des segments temporaires sont utiliss pour gnrer des index pour les nouvelles donnes. Ces index sont fusionns avec les index existants la fin du chargement. En triant les donnes en entre sur les cls de l'index le plus volumineux, vous pouvez rduire l'espace de tri. Avec le chargement des donnes par chemin direct en parallle, vous pouvez dfinir l'emplacement des segments temporaires utiliss pour insrer les donnes. Pour chaque session de chargement, dfinissez un fichier de base de donnes diffrent pour obtenir des performances optimales.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
3.2.21. Dpannage de l'utilitaire SQL*Loader

50 / 68

Lorsqu'un chargement se termine de faon anormale, toutes les donnes charges jusqu' l'apparition de l'incident sont gnralement valides. Aprs avoir rsolu le problme, procdez comme suit pour mener bien le chargement : Si les donnes sont charges dans une seule table ou que le nombre d'enregistrements traits est identique pour toutes les tables, utilisez le paramtre de ligne de commande SKIP pour poursuivre le chargement. Si un grand nombre de tables a t charg et que le nombre d'enregistrements traits n'est pas identique pour toutes les tables, utilisez l'option CONTINUE_LOAD dans le fichier de contrle pour dfinir le nombre d'enregistrements ignorer pour chaque table. Recherchez les index inutilisables. Un index est inutilisable si l'index de la table n'est pas cohrent. Supprimez les index incohrents et recrez-les la fin du chargement.

3.2.22.

Rsolution des problmes

Espace insuffisant : un chargement peut s'arrter si le serveur Oracle n'est pas parvenu allouer un espace suffisant aux tables charger. Dans ce cas, recherchez l'origine du problme (espace disque insuffisant, fichiers saturs ou limite MAXEXTENTS atteinte) et corrigez le problme. Echec de l'instance : recherchez l'origine de l'erreur, corrigez l'erreur, redmarrez l'instance et poursuivez le chargement. Ordre des donnes incorrect : les donnes sont charges, mais l'index est inutilisable. Supprimez les index inutilisables et recrez-les. Doublon de valeurs dans une cl primaire, dans une colonne unique ou dans un index unique : cette situation n'arrte pas le chargement, mais peut dsactiver les contraintes ou rendre les index inutilisables. En cas d'erreurs de contrainte, utilisez une table d'exceptions pour intercepter les erreurs et les corriger. Si un index unique est inutilisable, vous devrez dtecter les erreurs : essayez de crer une contrainte unique sur la colonne indexe, interceptez les erreurs dans une table d'exceptions et corrigez-les. Valeur BENDSIZE trop faible : utilisez une valeur plus leve et chargez les donnes. Nombre d'erreurs suprieur la limite dfinie : cette erreur se produit lorsque le chargement est interrompu parce que le nombre d'enregistrements non valides est suprieur la valeur ERRORS. En gnral, cette erreur se produit lorsque les fichiers de donnes en entre que vous utilisez sont incorrects. Vrifiez-les et utilisez les bons fichiers. Le nombre d'enregistrements refuss est suprieur au nombre dfini : cette erreur se produit lorsqu'un chargement est interrompu parce que le nombre d'enregistrements refuss est suprieur la valeur DISCARDMAX. En gnral, cette erreur se produit lorsque les fichiers de donnes en entre que vous utilisez sont incorrects. Vrifiez-les et utilisez les bons fichiers.

Remarque : la clause SORTED INDEXES ne s'applique qu'au chargement des donnes par chemin direct.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

51 / 68

3.3.Charger les donnes par chemin direct

Donnes

Tables

Appels OCI

Formateur de Bloc

CLIENT

SERVEUR

3.3.1. Charger les donnes par chemin direct avec l'interface OCI (Oracle Call Interface)
L'interface de chargement des donnes par chemin direct permet une application OCI (Oracle Call Interface) d'accder au moteur de chargement des donnes par chemin direct du serveur de base de donnes Oracle pour excuter les fonctions de l'utilitaire Oracle SQL*Loader. Cette fonction permet de charger les donnes de fichiers externes dans une table Oracle. L'interface OCI de chargement des donnes par chemin direct permet de charger plusieurs lignes en chargeant un flux de chemin direct contenant les donnes de plusieurs lignes. Une opration de chargement des donnes par chemin direct ncessite que l'objet charger soit verrouill pour empcher les oprations DML sur l'objet. Notez que les interrogations ne sont pas verrouilles et qu'elles peuvent tre effectues lorsque l'objet est en cours de chargement. L'interface de chargement des donnes par chemin direct prsente les mmes limitations que l'utilitaire SQL*Loader.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

52 / 68

4. Rorganiser les donnees


A la fin de ce chapitre vous pourrez : rorganiser les donnes l'aide des utilitaires Export et Import, dplacer les donnes l'aide de tablespaces transportables.

4.1.Dplacer les donnes l'aide des utilitaires Export et Import

4.1.1. Utilitaires Export et Import


Les utilitaires Export et Import permettent l'administrateur de transfrer des donnes entre des bases de donnes Oracle et, dans une mme base de donnes Oracle, vers diffrents tablespaces ou utilisateurs, ou de rorganiser les donnes afin d'amliorer le stockage et les performances.

4.1.2. Utilitaire Export


Cet utilitaire permet de crer une copie logique des dfinitions d'objet et des donnes dans un fichier binaire du systme d'exploitation. L'utilitaire Export peut crire les donnes dans un fichier sur disque ou sur bande. Il extrait une vue cohrente des donnes de chaque table.

4.1.3. Utilitaire Import


Cet utilitaire peut lire les fichiers de systme d'exploitation crs par l'utilitaire Export et copier les dfinitions d'objet et les donnes dans une base de donnes Oracle. L'utilitaire Import ne peut pas lire les fichiers texte, ni les fichiers crs dans d'autres formats.

4.2.Utiliser les utilitaires Export et Import


Vous pouvez utiliser ces utilitaires dans les cas suivants : Pour rorganiser des tables : diffrentes situations peuvent vous amener rorganiser des tables : o Lorsqu'il est ncessaire de transfrer les donnes d'un tablespace vers un autre afin de rduire la contention, de rduire la fragmentation de l'espace libre ou de faciliter la sauvegarde. o Lorsqu'une table contient un grand nombre de lignes migres.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
o

53 / 68

Lorsqu'une table contient de nombreux blocs contenant une grande quantit d'espace libre. o Lorsqu'une table contient un grand nombre de blocs vides situs en dessous du repre high-water mark. Pour transfrer des donnes appartenant un utilisateur vers un autre utilisateur : cette opration peut tre ncessaire lorsqu'un schma doit tre supprim de la base de donnes ou lorsque vous souhaitez redistribuer la proprit des objets. Les donnes exportes partir du schma d'un utilisateur peuvent tre importes dans le schma d'un autre utilisateur. Pour transfrer des donnes entre des bases de donnes : les dfinitions d'objet peuvent tre transfres d'une base de donnes de dveloppement vers une base de donnes de production en extrayant uniquement les dfinitions sans tenir compte des donnes. Vous pouvez galement utiliser les utilitaires Export et Import pour extraire des donnes d'une application OLTP et les copier dans un data warehouse. Pour effectuer la migration vers une plate-forme Oracle utilisant un systme d'exploitation diffrent ou vers une version diffrente d'Oracle : les donnes exportes d'une machine peuvent tre importes dans une base de donnes situe sur une autre machine qui utilise ventuellement un jeu de caractres diffrent. Pour effectuer la migration vers une version diffrente de la base de donnes Oracle : lorsque vous passez une nouvelle version du serveur Oracle, vous pouvez exporter les donnes de la version antrieure et les importer dans la nouvelle version. Notez que vous ne pourrez peuttre pas utiliser cette mthode pour transfrer les donnes d'une version ultrieure vers une version antrieure. Pour excuter plusieurs fois des tests au cours du dveloppement ou de la mise niveau : dans une base de donnes de dveloppement ou de test, il peut tre ncessaire d'excuter des tests pour dboguer compltement l'application et pouvoir l'accepter. Les donnes de test peuvent tre exportes vers un fichier externe et importes avant chaque excution afin de s'assurer que les tests seront effectus sur le mme jeu de donnes. Cette mthode est galement trs utile pour tester une nouvelle version du serveur Oracle avant de mettre niveau une base de donnes de production. Pour effectuer une sauvegarde logique : tous les objets de la base de donnes ou certains d'entre eux seulement peuvent tre exports, et le fichier d'export peut tre utilis comme sauvegarde logique. Le prsent chapitre dcrit l'utilisation des utilitaires Export et Import pour rorganiser des donnes et les transfrer entre les utilisateurs.

4.3.Modes dexports
4.3.1. Trois modes d'export
L'utilitaire Export permet d'exporter les donnes l'aide des trois modes suivants : Table User Full Database

4.3.2. Mode Table


Tous les utilisateurs peuvent utiliser le mode Table pour exporter les tables dont ils sont propritaires. Les utilisateurs disposant de privilges peuvent exporter des tables appartenant n'importe quel utilisateur. Le mode Table permet d'exporter : la dfinition d'une table, les donnes de la table, si ncessaire, tous les index de la table si l'export est effectu par un utilisateur disposant de privilges (sinon, seuls les index de la table appartenant l'utilisateur sont exports),

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

54 / 68

tous les dclencheurs de la table uniquement si l'export est effectu par un utilisateur disposant de privilges (sinon, seuls les dclencheurs de la table appartenant l'utilisateur sont exports), les contraintes de la table, tous les droits accords sur la table, la dfinition de la mthode d'analyse utiliser pour l'import.

4.3.3. Mode User


Le mode User fonctionne diffremment selon que l'utilisateur qui exporte les donnes dispose ou non de privilges spciaux. Un utilisateur disposant de privilges peut exporter des objets appartenant n'importe quel utilisateur. Dans ce cas, les objets exports sont : o tous les objets de l'utilisateur, sauf les index et dclencheurs qui appartiennent l'utilisateur, mais qui concernent des tables appartenant d'autres utilisateurs, o les dclencheurs et index crs par d'autres utilisateurs sur les tables de l'utilisateur. Un utilisateur ne disposant pas de privilges peut exporter uniquement les objets qui lui appartiennent, et ce mode n'inclut ni les index ni les dclencheurs crs par d'autres utilisateurs sur les tables appartenant cet utilisateur.

4.3.4. Mode Full Database


Ce mode permet d'exporter tous les objets d'une base de donnes, l'exception de ceux de l'utilisateur SYS. Ce mode ncessite des privilges spciaux et ne peut pas tre utilis par tous les utilisateurs. Remarque : pour ces trois modes d'export, les utilisateurs disposant de privilges sont ceux auxquels a t accord le rle EXP_FULL_DATABASE.

4.4.Export par chemin conventionnel et par chemin direct

La diapositive montre la diffrence qui existe entre l'export des donnes par chemin conventionnel et l'export des donnes par chemin direct.

4.4.1. Chemin conventionnel


Ce terme dsigne la mthode par dfaut permettant de formater les donnes d'une base et de les copier dans un fichier d'export. L'export des donnes par chemin conventionnel utilise l'instruction SQL SELECT pour extraire les donnes des tables.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

55 / 68

Les donnes sont lues partir du disque et copies dans un cache de tampons (buffer cache), et les lignes sont transfres vers la mmoire tampon d'valuation (evaluation buffer). Les donnes, une fois values, sont transfres vers le client d'export qui les copie alors dans un fichier d'export.

4.4.2. Chemin direct


L'export des donnes par chemin direct extrait les donnes beaucoup plus rapidement que l'export par chemin conventionnel, car cette mthode lit les donnes directement et passe outre la couche de traitement des commandes SQL. Dans le cadre de l'export des donnes par chemin direct, les donnes sont lues partir du disque et copies dans le cache de tampons, et les lignes sont transfres directement vers le processus d'export. Le tampon d'valuation est ignor, c'est--dire que les donnes des blocs ne sont pas rorganises afin de regrouper les morceaux de ligne. Les donnes sont dj au format attendu par l'utilitaire Export, ce qui vite les conversions de donnes inutiles. Les donnes sont transfres vers le processus d'export qui les crit dans le fichier d'export. L'utilitaire Import peut utiliser le fichier d'export cr par l'une ou l'autre des mthodes d'export. La mthode d'export utilise n'a pas d'incidence significative sur la dure de l'import.

4.5.Utiliser l'utilitaire Export


Vous pouvez appeler l'utilitaire Export en utilisant : la ligne de commande, le mode interactif, l'interface graphique, lorsqu'elle est disponible. Le mode interactif est fourni principalement pour la compatibilit descendante et ne propose pas toutes les options qu'offre la ligne de commande. En consquence, il est recommand d'utiliser la ligne de commande.

4.5.1. Ligne de commande


Utilisez la commande suivante sous UNIX ou Windows NT pour effectuer une opration d'export :
$exp [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ...

o : keyword correspond l'un des mots-cls dcrits dans la section suivante, value correspond la valeur du mot-cl. Remarque : Si aucun mot-cl n'est dfini, les valeurs doivent tre indiques dans l'ordre appropri. Toutefois, il est prfrable d'utiliser les mots-cls. Comme le montre la diapositive, vous pouvez indiquer les premires valeurs sans mot-cl, et les autres avec des mots-cls. Certains systmes d'exploitation, tels qu'UNIX, placent des caractres d'chappement devant les caractres spciaux, des parenthses, par exemple, pour que ces caractres ne soient pas considrs comme des caractres spciaux.

4.5.2. Windows NT : ligne de commande


Utilisez la mme commande sous Windows NT pour effectuer une opration d'export :
C:\>EXP [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ...

Remarque : les vues ncessaires aux utilitaires Export et Import sont cres en excutant le script catexp.sql, qui est appel lorsque le script catalog.sql est excut.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

56 / 68

4.5.3. Utiliser Oracle Enterprise Manager pour exporter des donn es


1 Dmarrez la console Oracle Enterprise Manager : (N) Start>Programs>Oracle - EMV2 Home>Oracle Enterprise Management>Enterprise Manager Console 2 Entrez les paramtres Administrator, Password et Management Server. Cliquez sur OK pour vous connecter la console. 3 Dveloppez le dossier Databases. 4 Slectionnez la base de donnes de travail, cliquez avec le bouton droit de la souris pour afficher le menu contextuel, puis slectionnez Data Management>Export. 5 Entrez le nom du fichier d'export dans la page Export File, puis cliquez sur Next. 6 Indiquez le type d'export dans la page Export Type, puis cliquez sur Next. 7 Indiquez les objets associs, puis cliquez sur Next. 8 Dans la page Object Selection de l'assistant Data Manager Wizard, slectionnez les objets exporter. 9 Dans la page Associated Objects, indiquez les objets associs exporter, tels que les index et les lignes. 10 Dfinissez les paramtres de planification, puis cliquez sur Finish.

11 Dans la page Summary, vrifiez les paramtres entrs, puis cliquez sur OK.

4.5.4. Paramtres de ligne de commande


Certains des paramtres couramment utiliss sont dcrits ci-dessous.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

57 / 68

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

58 / 68

Remarque : Seul l'un des paramtres FULL=Y, OWNER=user ou TABLES=schema.table peut tre dfini. Si vous indiquez l'export par chemin direct (DIRECT=Y), vous ne pouvez pas affecter la valeur Y au paramtre CONSISTENT. La prsente section ne rpertorie pas tous les paramtres que vous pouvez dfinir. Pour obtenir la liste complte des paramtres, reportez-vous au chapitre "Export" du manuel Oracle8i Utilities.

4.6.Utiliser l'utilitaire Import


Vous pouvez appeler l'utilitaire Import en utilisant : la ligne de commande, le mode interactif, l'interface graphique, lorsqu'elle est disponible. Le mode interactif est fourni principalement pour la compatibilit descendante et ne propose pas toutes les options qu'offre la ligne de commande. En consquence, il est recommand d'utiliser la ligne de commande.

4.6.1. Ligne de commande


Utilisez la commande suivante sous UNIX ou Windows NT pour effectuer une opration d'import :
$imp [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ...

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

59 / 68

o : keyword correspond l'un des mots-cls dcrits dans la section suivante, value correspond la valeur du mot-cl.

4.6.2. Windows NT : Ligne de commande


La commande Windows est identique la commande UNIX :
C:\>IMP [keyword=]{value|(value, value ...)} [ [ [,] keyword=]{value|(value, value ...)} ] ...

4.6.3. Utiliser Oracle Enterprise Manager pour importer des donnes


1 Dmarrez la console Oracle Enterprise Manager : (N) Start>Programs>Oracle - EMV2 Home>Oracle Enterprise Management>Enterprise Manager Console 2 Entrez les paramtres Administrator, Password et Management Server. Cliquez sur OK pour vous connecter la console. 3 Dveloppez le dossier Databases. 4 Slectionnez la base de donnes de travail, cliquez avec le bouton droit de la souris pour afficher le menu contextuel, puis slectionnez Data Management>Import. 5 Indiquez le nom du fichier d'export importer, puis cliquez sur Next. 6 Attendez la fin de l'excution du travail.

4.6.4. Paramtres de ligne de commande


Certains des paramtres couramment utiliss sont dcrits ci-dessous.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

60 / 68

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

61 / 68

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

62 / 68

Remarque : Seul l'un des paramtres FULL=Y, OWNER=user ou TABLES=schema.table peut tre dfini. Le rle IMP_FULL_DATABASE est dcrit dans le chapitre ''Grer les rles''. La prsente section ne rpertorie pas tous les paramtres que vous pouvez dfinir.

4.6.5. Fonctionnement de l'import


Les objets de table sont imports tels qu'ils sont lus dans le fichier d'export. Dans le fichier d'export, les objets sont classs comme suit : 1 dfinitions de type, 2 dfinitions de table, 3 donnes de table, 4 index de table, 5 contraintes d'intgrit, vues, procdures et dclencheurs, 6 index bitmap, index bass sur une fonction et index de domaine. Cette squence permet d'viter le rejet des donnes cause de l'ordre d'import des tables. Elle empche galement les dclencheurs redondants de s'activer deux fois sur les mmes donnes (une fois lors de l'insertion initiale et une nouvelle fois lors de l'import). Toutefois, certains objets, tels que les procdures, peuvent tre invalids lors de l'import lorsqu'ils sont imports avant les objets qu'ils rfrencent. Vrifiez les objets ayant le statut STATUS=INVALID et recompilez-les.

4.6.6. Considrations relatives l'import dans des tables existantes


Lorsque vous importez des donnes dans des tables existantes, l'ordre d'import des donnes peut quand mme provoquer des erreurs d'intgrit rfrentielle. C'est le cas lorsqu'une contrainte d'intgrit rfrentielle sur une table fait rfrence elle-mme la fin de l'import. Pour les raisons prcites, il est recommand de dsactiver les contraintes rfrentielles lors de l'import de donnes dans une table existante. Vous pouvez ractiver les contraintes la fin de l'import.

4.6.7. Tablespace utilis pour un objet


Si l'utilisateur dispose du quota d'espace appropri, les tables sont importes dans le mme tablespace que celui partir duquel elles ont t exportes. Toutefois, si le tablespace n'existe plus ou que l'utilisateur ne dispose pas du quota d'espace appropri, l'utilitaire Import cre la table dans le
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

63 / 68

tablespace par dfaut de l'utilisateur. Si l'utilisateur ne parvient pas accder au tablespace par dfaut, la table n'est pas importe. Un segment LOB ne peut tre import que dans le mme tablespace que celui partir duquel il a t export. Ainsi, si une table contient des objets LOB, elle n'est pas cre si son propritaire ne peut pas crer d'objets dans le tablespace partir duquel le segment LOB a t export. Remarque : les quotas d'espace et le contrle de l'utilisation des tablespaces par les utilisateurs sont abords dans le chapitre "Grer les utilisateurs".

4.7.Instructions d'export et d'import


Stockez tous les paramtres de ligne couramment utiliss dans un fichier de paramtres. Cela permet de rduire le nombre d'erreurs ainsi que la longueur de la ligne de commande. Si de nombreuses mises jour sont effectues sur les tables qui sont en cours d'export, le paramtre CONSISTENT=Y risque de provoquer des erreurs SNAPSHOT TOO OLD. En rgle gnrale, n'exportez de gros volumes de donnes qu'en priode de faible activit. Vous pouvez galement crer un grand segment d'annulation, mettre tous les autres "offline" et effectuer l'import. L'option d'export COMPRESS=Y gnre du code afin de crer un extent initial dont la taille est gale la somme des tailles de tous les extents allous un objet. Si un grand nombre de lignes a t supprim de l'objet ou que le dernier extent contient un grand nombre de blocs inutiliss, beaucoup d'espace sera inutilement allou pour l'objet. Allouez une mmoire tampon aussi grande que le permettent le systme d'exploitation et les ressources de la machine. Exportez les donnes par chemin direct si elles doivent tre importes dans une base de donnes utilisant la version 7.3.3 ou une version ultrieure.

4.8.Considrations relatives au support NLS lors de l'export et de l'import

4.8.1. Exporter et convertir les jeux de caract res


L'export des donnes par chemin conventionnel crit les fichiers d'export en utilisant le jeu de caractres dfini pour la session utilisateur, par exemple, ASCII 7 bits ou page de code 500 IBM (EBCDIC). L'export des donnes par chemin direct exporte les donnes uniquement dans le jeu de caractres de la base de donnes. Si le jeu de caractres de la session d'export n'est pas identique celui de la base de donnes, l'utilitaire Export affiche un message d'avertissement et arrte l'opration. Avant de relancer l'export, indiquez le jeu de caractres de la base de donnes. Le fichier d'export contient un indicateur signalant le jeu de caractres utilis pour ses donnes de caractres.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes
4.8.2. Importer et convertir les jeux de caractres

64 / 68

Le jeu de caractres de la session d'import et celui de la base de donnes cible peuvent tre diffrents de celui de la base de donnes source. Cette situation ncessite une ou plusieurs conversions des jeux de caractres. Si ncessaire, les donnes du fichier d'export sont d'abord converties, lors de l'import, dans le jeu de caractres indiqu pour la session utilisateur, puis dans le jeu de caractres de la base de donnes. Lors de la conversion, les caractres du fichier d'export n'ayant pas d'quivalent dans le jeu de caractres cible sont remplacs par un caractre par dfaut dfini par le jeu de caractres cible. Pour garantir la conversion de l'ensemble des caractres, le jeu de caractres cible doit tre un "superjeu" du jeu de caractres source ou tre quivalent ce jeu.

Instructions
Du fait que la conversion des caractres augmente la dure de l'import, limitez le nombre de conversions de jeux de caractres au strict minimum. Idalement, les jeux de caractres de la session d'import et de la base de donnes cible sont identiques au jeu de caractres de la base de donnes source, et aucune conversion n'est ncessaire. Remarque : la dfinition du jeu de caractres au niveau de la session et son impact sur diverses oprations de base de donnes sont dcrits en dtail dans le chapitre "Utiliser le support NLS (National Language Support)".

4.9.Tablespaces transportables

Le transfert des donnes d'un data warehouse vers un Datamart ou d'un systme OLTP vers une zone intermdiaire d'un data warehouse peut tre laborieux et prendre un certain temps. Le chargement des donnes par chemin direct l'aide de SQL*Loader ou du mcanisme LMD en parallle acclre la tche, mais le processus peut tre simplifi pour le transfert de donnes entre des bases identiques. Oracle8i fournit une fonction de copie des fichiers de donnes entre des systmes identiques et permet aux mmes donnes d'tre accessibles par les deux systmes. Dsormais, le transfert de donnes peut tre aussi rapide qu'un simple transfert de fichiers entre deux machines. Cette fonction amliore considrablement les performances et facilite le transfert des donnes.

4.10.

Systmes informatiques d'entreprise

Un important flux de donnes peut circuler dans le systme informatique d'une entreprise, d'une base de donnes OLTP vers une base de donnes intermdiaire, puis d'un data warehouse d'entreprise vers

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

65 / 68

des Datamarts. Dans cet environnement, les tablespaces transportables peuvent remplir diverses fonctions trs utiles. Gnralement, les tables d'un data warehouse ne sont pas identiques celles d'une base de donnes OLTP. Un tablespace transportable peut tre utilis pour transfrer des donnes d'une base de donnes OLTP vers une base de donnes d'une application d'aide la dcision ou d'un data warehouse.

4.11.

Distribuer les informations

Cette fonction peut galement tre utilise : par les socits pour publier des donnes sur CD-ROM pour les intgrer aisment aux bases de donnes Oracle des bureaux rgionaux ou locaux,Par exemple, des tables de produits (PRODUCT) contenant la description des produits et leur prix peuvent tre alimentes et mises jour au sige social, puis transfres vers les succursales rgionales ou filiales pour tre utilises dans un systme de traitement des commandes. par les fournisseurs de contenu pour distribuer des organisations des donnes structures, telles que des annuaires professionnels et des donnes dmographiques, afin de leur permettre de les intgrer aisment dans leurs applications d'aide la dcision.

4.12.

Transporter un tablespace
Etapes du transport d'un tablespace

4.12.1.

Effectuez les oprations ci-dessous pour transfrer un tablespace d'une base de donnes vers une autre. 1 Pour empcher toute modification du fichier lors de son transfert, affectez la proprit de lecture seule au tablespace. 2 Utilisez l'utilitaire Export pour capturer les informations du dictionnaire de donnes dans un fichier de systme d'exploitation. 3 Faites une copie du tablespace en crant une copie binaire des fichiers de donnes de la machine source vers la machine cible. 4 Transfrez le fichier d'export vers la machine cible. 5 Utilisez l'utilitaire Import pour charger les informations du dictionnaire de donnes dans la base de donnes cible. 6 Si ncessaire, modifiez le tablespace dans la base de donnes source ou cible pour autoriser les oprations d'criture.

4.13.

Exporter et importer des mtadonnes


exp sys/ FILE=s980501.dmp TRANSPORT_TABLESPACE=y TABLESPACES=sales_ts TRIGGERS=N CONSTRAINTS=N imp sys/ FILE=s980501.dmp TRANSPORT_TABLESPACE=y DATAFILES=(/disk1/sales01.dbf, /disk2/sales02.dbf)

4.14.

Exporter des mtadonnes

L'option TRANSPORT_TABLESPACE indique que les informations du dictionnaire de donnes sur tous les objets des tablespaces doivent tre exportes. La nouvelle clause TRIGGERS, ainsi que les clauses CONSTRAINTS et GRANTS, peuvent tre utilises pour indiquer si les informations associes doivent tre exportes avec la table.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

66 / 68

Il est utile de transfrer toutes les donnes associes lors de la publication de donnes structures, mais il peut s'avrer inutile de copier les dclencheurs et les contraintes si les donnes sont copies vers un data warehouse.

4.15.

Importer des mtadonnes

Utilisez l'utilitaire Import avec l'option TRANSPORT_TABLESPACE pour mettre jour le dictionnaire de donnes cible avec le tablespace et d'autres dfinitions d'objet. Les rgles suivantes s'appliquent l'import : L'option DATAFILES doit tre indique. Elle dfinit le nom des fichiers appartenant au tablespace qui est transfr. Utilisez les noms tels qu'ils sont stocks sur l'ordinateur cible, mme s'ils sont diffrents des noms de fichier d'origine. Si vous prcisez la clause TABLESPACES, les noms de tablespace indiqus sont compars ceux du fichier d'export. Sinon, les noms de tablespace sont extraits du fichier d'export. Vous pouvez dfinir l'option USERS pour comparer les noms utilisateur ceux du fichier des mtadonnes. Sinon, les noms utilisateur sont extraits du fichier d'export. Les options FROMUSER et TOUSER permettent d'importer des objets d'un schma source vers un schma cible.

4.16.

Transporter un tablespace

Le schma montre le transport du tablespace SALES_TS du systme 1 vers le systme 2. Voici les tapes suivre : 1 Placez le tablespace en mode lecture seule dans la base de donnes source du systme 1.
SQL> ALTER TABLESPACE sales_ts READ ONLY;

2 Exportez les mtadonnes du tablespace partir de la base de donnes source du systme 1.


exp FILE=x980501.dmp TRANSPORT TABLESPACE=y \ TABLESPACE=sales_ts TRIGGERS=n CONSTRAINTS=n

3 Copiez physiquement les fichiers de donnes du tablespace du systme 1 vers le systme 2. Notez que le nom des fichiers de donnes change pendant la copie. 4 Copiez physiquement le fichier d'export s980501.dmp du systme 1 vers le systme 2. 5 Importez les mtadonnes du tablespace dans la base de donnes cible en utilisant les noms attribus aux fichiers sur le systme 2.
imp FILE=x980501.dmp TRANSPORT TABLESPACE=y \ DATAFILES=(/disk1/sales01.dbf,/disk2/sales02.dbf)

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

67 / 68

6 Les donnes du tablespace SALES_TS sont disponibles pour interrogation sur les deux systmes. Vous pouvez replacer le tablespace en mode lecture-criture sur l'un des nuds ou sur les deux nuds.
SQL> ALTER TABLESPACE sales_ts READ WRITE;

4.17.

Utilisation des tablespaces transportables

Permet de dplacer toutes les donnes d'un tablespace. Prend en charge la restauration physique. Les bases de donnes source et cible doivent : o se trouver sur le mme systme d'exploitation, o pouvoir excuter Oracle8i, version 8.1 ou ultrieure, o utiliser la mme taille de bloc, o utiliser le mme jeu de caractres.

4.17.1.

Utilisation

Les oprations de restauration physique sont prises en charge lors du transport. Dans le cas d'une dfaillance matrielle, vous pouvez utiliser une sauvegarde effectue avant le transport du tablespace pour rcuprer les donnes partir d'un instant postrieur au transport du tablespace. La colonne PLUGGED_IN de DBA_TABLESPACES a la valeur YES aprs l'import. Vous devez supprimer un tablespace de type "plug-in" pour pouvoir passer aux versions antrieures. Vous pouvez transporter le tablespace vers une autre base de donnes Oracle8i afin de conserver les donnes ou utiliser les utilitaires Import et Export.

4.18.

Tablespaces transportables et objets de schma

Les tablespaces transports au cours d'une seule opration doivent tre autonomes : o toutes les partitions d'une table, o les objets LOB doivent tre exports avec les tables. Les objets suivants ne peuvent pas tre transports : o les tables contenant des tables imbriques et des donn es de type VARRAY, o les index bitmap.

4.19.

Jeux de donnes autonomes

Le jeu de tablespaces transport lors de chaque opration doit tre autonome. Le tablespace dplacer peut contenir des tables avec des objets LOB et des types de donnes dfinis par l'utilisateur. Si une table contenant une colonne BFILE fait partie du tablespace dplacer, l'utilisateur doit copier les fichiers rfrencs vers la cible. Vous ne pouvez transporter ni les index bitmap, ni les tables contenant des donnes de type VARRAY ou des tables imbriques. Il incombe l'utilisateur de rsoudre les dpendances entre les objets des tablespaces transports et ceux de la base de donnes cible.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Gestion de donnes

68 / 68

4.20.

Vrifier le jeu de tablespaces transporter

4.20.1.

DBMS_TTS.TRANSPORT_SET_CHECK

La procdure PL/SQL, DBMS_TTS.TRANSPORT_SET_CHECK, permet de vrifier si un jeu de tablespaces est autonome. Cette procdure accepte deux arguments IN : une liste de tablespaces spars par des virgules, un argument boolen indiquant si les contraintes d'intgrit rfrentielle doivent tre vrifies lorsque la procdure dtermine si le jeu de tablespaces est autonome. La procdure complte la vue TRANSPORT_SET_VIOLATIONS en indiquant quels objets des tablespaces indiqus ont des relations avec des objets n'appartenant pas au jeu de tablespaces dfini. Le script dbmsplts.sql, excut par le script catproc.sql, cre le package DBMS_TTS.

4.20.2.

DBMS_TTS.ISSELFCONTAINED

La fonction DBMS_TTS.ISSELFCONTAINED renvoie la valeur TRUE si le jeu de tablespaces transportables est autonome. S'il ne l'est pas, elle renvoie la valeur FALSE. La fonction possde les mmes arguments que TRANSPORT_SET_CHECK.

http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs

Vous aimerez peut-être aussi