Académique Documents
Professionnel Documents
Culture Documents
Gestion Des DonneesT DBA MODULE 4 2003-08-07 2 0
Gestion Des DonneesT DBA MODULE 4 2003-08-07 2 0
GESTION DE DONNEES
1Z0-023
Ecole Suprieure dInformatique de Paris 23. rue Chteau Landon 75010 PARIS
www.supinfo.com
Gestion de donnes
2 / 68
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
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.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
7 / 68
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.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
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.
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.
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.
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
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.
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.
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.
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 :
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.
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.
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;
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.
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.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);
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.
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.
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');
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.
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.
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.
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
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.
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.
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".
1.4.13.
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
1.4.14.
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.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
24 / 68
1.4.15.
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
1.4.17.
Package DBMS_ROWID
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
26 / 68
---------
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
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
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.
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 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
29 / 68
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.
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.
http://www.labo-oracle.com Ce document est la proprit de Supinfo et est soumis aux rgles de droits dauteurs
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
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]]
INITIALLY IMMEDIATE
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).
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.
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.
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
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.
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.
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.
RELY LAST_CHANGE
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
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.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.
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
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
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.
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.
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.
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
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.
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.
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
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.
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.
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.
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.
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
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
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
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.
La diapositive montre la diffrence qui existe entre l'export des donnes par chemin conventionnel et l'export 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
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.
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.
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
11 Dans la page Summary, vrifiez les paramtres entrs, puis cliquez sur OK.
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.
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.
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.
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".
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.
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.
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.
4.14.
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.
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;
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.
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.
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.
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.
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