48
Gérer les données Réalisé par : DAAIF Jabran CHERKAOUI Khaoula ABBAR Amina BOUSTANI Sara Encadré par : M.HANOUNE Année universitaire : 2013-2014

Réalisé par : DAAIF Jabran CHERKAOUI Khaoula CHERKAOUI Khaoula ABBAR Amina ABBAR Amina BOUSTANI Sara BOUSTANI Sara Encadré par : M.HANOUNE Année universitaire

Embed Size (px)

Citation preview

  • Page 1
  • Ralis par : DAAIF Jabran CHERKAOUI Khaoula CHERKAOUI Khaoula ABBAR Amina ABBAR Amina BOUSTANI Sara BOUSTANI Sara Encadr par : M.HANOUNE Anne universitaire : 2013-2014
  • Page 2
  • Dfinition SQL (Structured Query Language) est un Langage de requtes structur qui est destin interroger ou piloter une base de donnes.base de donnes La partie langage de manipulation des donnes de SQL permet de rechercher, d'ajouter, de modifier ou de supprimer des donnes dans les bases de donnes relationnelles. Un ensemble dordre du LMD group en une unit de travail logique constitue ce quon appelle une transaction.
  • Page 3
  • La commande INSERT INSERT insre des lignes dans une table existante :INSERT INSERT INTO ma_table (collone1, collone2, collone3,..) VALUES ('chaine', numro, NULL,..); Exemple : INSERT INTO dept(deptno, dname, loc) VALUES (40, dveloppent, casa);
  • Page 4
  • Page 5
  • Etant donner que vous pouvez insrer une nouvelle ligne en prcisant une valeur pour chaque colonne, il nest pas obligatoire de lister les colonnes dans la clause INSERT. Dans ce cas les valeurs doivent tre fournies dans lordre par dfaut des colonnes dans la table. Exemple: INSERT INTO dept VALUES (60, finance, NULL); Assurez-vous que la colonne cible admet une valeur NULL en vrifiant ltat NULL laide de la commande DESCRIBE. DESCRIBE dept
  • Page 6
  • La commande UPDATE UPDATE Modifie un ensemble des lignes existant dans une table :UPDATE UPDATE ma_table SET colonne = valeur WHERE condition; Exemple : UPDATE emp SET deptno = 20 WHERE empno=7782;
  • Page 7
  • Page 8
  • On peut modifier plusieurs lignes la fois. Si vous omettez la clause WHERE, toutes les lignes sont modifies. Il est possible dutiliser des sous interrogations multi-colonne dans la clause SET dun ordre UPDATE : UPDATE emp SET (deptno, job) = ( SELECT job, deptno FROM emp WHERE empno= 7499 ) WHERE empno=7782; Utilisez une sous-interrogation synchronise pour mettre jour les lignes dune table base sur des lignes dune autre table.
  • Page 9
  • La commande DELETE DELETE Supprime un ensemble de lignes existant dans une table:DELETE DELETE FROM ma_table WHERE condition; Exemple: DELETE FROM dept WHERE dname= finance;
  • Page 10
  • Page 11
  • Si vous omettez la clause WHERE toutes les lignes de la table seront supprimes : DELETE FROM dept Utilisez une sous-interrogation synchronise pour supprimer uniquement les lignes existantes galement dans une autre table.
  • Page 12
  • Les commandes commit et rollback La commande COMMIT :termine une transaction excute avec succs. Elle a pour effet de valider et d'enregistrer dans la base de donnes toutes les modifications effectues durant la transaction
  • Page 13
  • La commande ROLLBACK :annule la transaction en cours et restitue les donnes dans l'tat o elles se trouvaient avant le dbut de la transaction.
  • Page 14
  • Data pump Data Pump est un utilitaire serveur qui peut tre utilis pour dplacer des donnes et/ou des mtadonnes entre des bases Oracle Permet le chargement et le dchargement des donnes et de mtadonnes trs grande vitesse dans des bases Oracle dcide automatiquement des mthodes daccs aux donnes dplacer ; que ce soit, chargement des donnes par chemin direct ou par tables externes tous les travaux data Pump arrts soit volontairement ou involontairement, suite a une panne peuvent tre redmarrer sans perte de donnes
  • Page 15
  • Data Pump Export/Import DATA PUMP export est un utilitaire permettant de dcharger des donnes et des mtadonnes dans un ensemble de fichier de system dexploitation nomm jeu de fichier dump qui enregistre les informations dun programme
  • Page 16
  • DATA PUMP Import : utilis pour charger sur un systme cible les mtadonnes et les donnes stockes dans un jeu de fichiers dexport
  • Page 17
  • Les Data Pump Export & Import peuvent tre employs pour : Effectuer un export direct entre une base de donnes distante et un jeu de fichiers dump Ou, charger la base de donnes cible directement partir de la base source sans fichiers intermdiaires
  • Page 18
  • Data pump export
  • Page 19
  • Page 20
  • Base de donne ( database ) fait lappel de toute la base Schmas fait appelle une table dune ou plusieurs schmas Tables: slectionne les tables exporter Tablespace : appel tous les tables contenu dans le tablespace
  • Page 21
  • Data pump import
  • Page 22
  • Directory Objects Oracle a introduit les concepts des Directory Objects (DO) en Oracle 8i. Les DOs est une structure logique qui reprsente les rpertoires physiques dans les fichiers systmes du serveur. (Alias pour les rpertoires physiques) lorigine, un DO tait utilis seulement dans le contexte du package PL/SQL (DBMS_LOB), pour administrer et accder aux fichiers localiss sous le rpertoire identifi par le DO correspondant. Cependant depuis Oracle 9i, le DO est maintenant utilis dans plusieurs traits dOracle, comme EXTERNAL TABLE and PL/SQL UTL_FILE package. Parmis ces traits on trouve: Seuls les SYS utilisateurs peuvent avoir les DOs (mme si un autre utilisateur les a cr). Les noms des DOs sont uniques (parce que touts les rpertoires sont localis dans un seul namespace, nomm SYS). Les permissions des DOs ne sont pas les mmes que les permissions qua le systme dexploitation sur le serveur des fichiers systme. Les privilges discrets des bases de donnes ne peuvent pas tre accords aux fichiers contenus dans le rpertoire physique prsent par les DOs.
  • Page 23
  • Directory Objects Les avantages des DOs: En ce qui concerne lutilisation du package UTL_FILE, contrairement aux versions prcdentes, nous navons plus besoins de spcifier le chemin du rpertoire du fichier systme dans le fichier init.ora (paramtre UTL_FILE_DIR). Ainsi, nous pouvons changer le chemin dynamiquement sans avoir terminer et redmarrer linstance. Il y a un niveau de scurit plus lev et un contrle prcis en administration des applications qui utilise le UTL_FILE. Par exemple, il est dsormais plus facile de maintenir 5 DOs, chacun deux dirigeant vers un rpertoire physique particulier dans le fichier systme, plutt quavoir plusieurs entres pour le paramtre UTL_FILE_DIR dans le fichier init.ora. Pour crer un DO, lutilisateur doit avoir les privilges suivants: CREATE ANY DIRECTORY. CREATE OR REPLACE DIRECTORY test_files AS E:\oracleWork; Par dfaut, un utilisateur possde le privilge READ WRITE. Cependant, si on souhaite laccorder, on procde comme suivant : GRANT READ ON DIRECTORY test_files TO PUBLIC;
  • Page 24
  • Directory Objects Comment on utilise un DO? Dans lexemple suivant, on souhaite accder aux donnes dans un fichier plat (base de donnes orient texte) sans les charger dans la base de donnes. Pour simplifier cette opration, Oracle fournit le concept des tables externes. En principe, ces tables sont en lecture seule, et sont utilises pour accder aux donnes externes comme si elles faisaient partie dune table ou dune base de donnes. Les fichiers plats contenants les donnes sont stocks dans un rpertoire physique, identifis par les tables externes utilisant les DOs. Lutilisation des DOs empche les accs READ WRITE non autoriss au fichiers du SE (data/ fichier log) par les utilisateurs de la base de donnes. On considre les donnes suivantes dans un fichier "emp_load.dat, ce fichier doit se trouver dans le rpertoire physique "E:\oracleWork" identifi par le DO TEST_FILES prcdemment cr.
  • Page 25
  • Directory Objects Le DDL pour crer la table externe sera comme suit: CREATE TABLE emp_external ( emp_id NUMBER(4), ename VARCHAR2(12), job VARCHAR2(12), mgr_id NUMBER(4), hiredate DATE, salary NUMBER(8), comm NUMBER(8), dept_id NUMBER(2)) ORGANIZATION EXTERNAL (TYPE oracle_loader DEFAULT DIRECTORY TEST_FILES ACCESS PARAMETERS (records delimited BY newline fields terminated BY ',') LOCATION ('emp_load.dat') ); Pour afficher les donnes, on procde comme pour une table ordinaire: SELECT * FROM emp_external;
  • Page 26
  • SQL*Loader SQL*Loader est un utilitaire fourni par Oracle qui permet de charger les donnes depuis un fichier plat dans une ou plusieurs tables de base de donnes, sous Windows il est prsent dans le rpertoire: %ORACLE_HOME%\bin SQL*Loader peut tre utilis dans les cas suivants: Charger les donnes travers le rseau si les fichiers de donnes se trouvent dans des systmes autres que la base de donnes. Charger les donnes depuis plusieurs sources (fichiers de donnes) durant la mme session de chargement. Charger les donnes dans plusieurs tables durant la mme session de chargement. Spcifier le jeu de caractres des donnes. Charger des donnes slectivement. (vous pouvez charger les donnes bas sur les valeurs des records) Manipuler les donnes avant de les charger, en utilisant les commandes SQL. Gnrer des valeurs de cl de squence uniques en des colonnes prcises. Utiliser le systme de fichier du SE pour accder aux fichiers de donnes. Charger les donnes depuis un disque, CD ou nimporte quel support physique de donnes. Gnrer des rapports derreurs sophistiqus, qui sont extrmement importants pour le diagnostic des pannes (troubleshooting). Charger des donnes relationnelles complexes et arbitraires. Utiliser des fichiers de donnes secondaires pour charger les fichiers LOBs et les collections. Utiliser soit un chemin de chargement conventionnel ou direct. Tandis que le chemin conventionnel est trs flexible, le chemin direct fournit une performance de chargement nettement suprieure.
  • Page 27
  • SQL*Loader: Environnement SQL*Loader est lanc avec la commande suivante: C:\> Sqlldr {liste des paramtres}
  • Page 28
  • SQL*Loader Log File : ou bien le fichier journal, il contient le rsum des actions qui ont eu lieu lors du chargement des donnes, telles que la date dexcution, les noms des fichiers I/O, arguments des commandes, des informations sur la table, des informations sur les fichiers de donnes, et des informations sur les donnes insres. Bad File: (fichier des enregistrements refuss), il contient les enregistrements qui ont t rejet soit par SQL*LOADER soit par Oracle. Discard File: (fichier rebut), le fichier DISCARD peut tre spcifi lors l'appel de la commande ou alors directement dans le fichier contrle. Ce fichier est cr uniquement sur demande explicite et dtaille les enregistrements qui n'ont pas t retenu par SQL*Loader.
  • Page 29
  • SQL*Loader Les paramtres les plus utiliss dans la ligne de commande de SQL*Loader:
  • Page 30
  • SQL*Loader Mode de chargement : insert : insre les donnes dans une table vide append : insre les donnes la suite des donnes existantes replace : insre les donnes en remplaant les donnes existantes truncate : insre les donnes aprs un TRUNCATE ( ici cette solution peut tre utile pour faire diminuer le HWM ). NB: la ligne de commande qui permet de lancer sqlldr peut scrire de 3 manires: - Sqlldr system/password regionctl. - Sqlldr control=regions.ctl userid=system/password - Sqlldr system/manager control=regions.ctl
  • Page 31
  • Le fichier de contrle SQL*Loader Le fichier de contrle SQL*Loader est un fichier texte crit en langage SQL*Loader, cest la cl pour nimporte quel processus de chargement. Le fichier de contrle fournit au SQL*Loader les informations suivantes: Le nom est lemplacement du fichier de donnes dentre. Le format des enregistrements dans le fichier dentre. Le nom de/des tables charger. La correspondance entre les champs dans lenregistrement dentre et les colonnes dans les tables de la base de donnes en train dtre charges. Des critres dfinissant quels enregistrements dans le fichier dentre transmettre dans la tables destinations. Noms et emplacements du Bad File, et du Discard File. Quelques uns de ces lments peuvent tre pass au SQL*loader en tant que paramtres de ligne de commande. Par exemple, le nom et lemplacement du fichier dentre peuvent tre passs en ligne de commande, mme chose pour le Bad File et le Discard File Il est aussi possible pour que le fichier de contrle contienne les donnes charger, a se fait pour les petites quantit de donnes transmettre travers le net.
  • Page 32
  • Le fichier de contrle SQL*Loader Syntaxe gnrale du fichier du contrle: {LOAD | CONTINUE_LOAD} [DATA] [CHARACTERSET character_set] [INFILE clause [INFILE clause...]] [INSERT | APPEND | REPLACE | TRUNCATE] INTO TABLE clause [INTO TABLE clause...] [WHEN conditions] [FIELDS [delimiter clause]] [TRAILING [NULLCOLS] [SKIP skip_count] (field list) [BEGINDATA]
  • Page 33
  • Le fichier de contrle SQL*Loader Exemple Control File www.dba-ora.frwww.dba-ora.fr OPTIONS (DIRECT=FALSE) LOAD DATA INFILE * BADFILE 'dba-ora.bad' DISCARDFILE 'dba-ora.dsc' TRUNCATE PRESERVE BLANKS INTO TABLE SCOTT."EMP" WHEN (deptno = '20') FIELDS terminated by ";" Optionally enclosed by '"' TRAILING NULLCOLS ( empno INTEGER EXTERNAL NULLIF (empno="NULL"), ename CHAR "UPPER(:ename)", job CHAR "RTRIM(:job)", mgr INTEGER EXTERNAL NULLIF (mgr="NULL"), hiredate DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (hiredate="NULL"), sal DECIMAL EXTERNAL NULLIF (sal="NULL"), comm DECIMAL EXTERNAL NULLIF (comm="NULL"), deptno INTEGER EXTERNAL NULLIF (deptno="NULL") ) BEGINDATA 7369;"smith";"CLERK ";7902;"12/17/1980 00:00:00";800,50;;20 7499;"Allen";"SALESMAN";NULL;"02/20/1981 00:00:00";1600;300;30 7521;"WARD";"SALESMAN";7698;"02/22/1981 00:00:00";1250;500,56;30 7566;"JONES";"MANAGER ";7839;"04/02/1981 00:00:00";2975;NULL;20 7654;"MARTIN";"SALESMAN";7698;"09/28/1981 00:00:00";1250;1400;30
  • Page 34
  • Considrations relatives la syntaxe des fichiers 00200-00299: DDL Syntax SQL*Loader-200 FORMAT clause should not be present - flat data files only Cause:SQL/DS FORMAT clause is not supported. Action:Remove the FORMAT command from the control file or comment it out. SQL*Loader-250 work data sets are not used by SQL*Loader Cause:The control file contains a WRKDDN statement. SQL*Loader ignores this clause. Action:No action required. This is an informational message. SQL*Loader-251 sort devices are not used by SQL*Loader Cause:The control file contains a SORTDEVT statement. SQL*Loader ignores this clause. Action:No action required. This is an informational message. SQL*Loader-252 sort data sets are not used by SQL*Loader Cause:The control file contains a SORTNUM statement. SQL*Loader ignores this clause. Action:No action required. This is an informational message. SQL*Loader-253 DB2 partition number has no significance -- ignored Cause:The control file contains a PART statement. SQL*Loader ignores this clause. Action:No action required. This is an informational message.
  • Page 35
  • Considrations relatives la syntaxe des fichiers SQL*Loader-254 cannot have DISCARDFILE specs here when multiple datafiles Cause:The control file contained multiple INFILE statements and a DISCARDFILE statement was found below the RESUME clause. Action:Move the DISCARDFILE statement above the RESUME clause, so it is adjacent to one of the INFILE statements. SQL*Loader-255 log file for error recovery not used by SQL*Loader Cause:The control file contains a LOG statement. SQL*Loader ignores this clause. Action:No action required. This is an informational message. SQL*Loader-256 SORTED INDEXES option allowed only for direct path Cause:The control file contains a SORTED INDEXES statement, but it was not used in a direct path load. Action:Specify a direct path load with DIRECT=TRUE on the command line, remove the statement from the control file, or comment it out. SQL*Loader-257 index name specified in SORTED INDEXES does not exist on table name Cause:A non-existent index was specified in the SORTED INDEXES clause. Either the index does not exist or its name was misspelled. Action:Create the index, change the spelling, remove the specification, or comment it out.
  • Page 36
  • Considrations relatives la syntaxe des fichiers SQL*Loader-258 maximum number of sorted indexes num exceeded on table name. Cause:There are too many indexes in the SORTED INDEX clause. The message displays the maximum number that are permitted. Action:Reduce the number of indexes specified in the SORTED INDEX clause or use the conventional path load instead of the direct path load. SQL*Loader-259 could not escalate DDL share lock to exclusive on table name Cause:This error occurs when another user has a parse lock on the table, for example, when another user is doing a select on the table. The parse lock should clear momentarily. Action:Give the parse lock a chance to clear and then retry or else use the conventional path load. SQL*Loader-260 index num is in an invalid state Cause:The specified index is in an invalid state. Action:Drop and re-create the index. SQL*Loader-262 PIECED keyword (on column num) allowed only when path is direct Cause:The PIECED keyword cannot be used in a conventional path load. Action:Remove the PIECED keyword or use the direct path load.
  • Page 37
  • Considrations relatives la syntaxe des fichiers SQL*Loader-263 PIECED column num must be last specified column in table name Cause:A column that is not the last column was specified as PIECED. Action:Remove the PIECED keyword or place the column last. SQL*Loader-264 file mode token name parsed but ignored Cause:An obsolete file mode token was used in the control file. As of Release 1.1 of SQL*Loader, the file-processing options string is used to control file processing, rather than keywords like STREAM, RECORD, FIXED, and VARIABLE. Action:No action required. This message is informational. Removing the obsolete keywords will eliminate the message without changing the way in which the datafile is processed. SQL*Loader-265 unable to get default character set name Cause:SQL*Loader was unable to locate the default character set name for the environment. Action:Supply a character set name with the CHARACTERSET keyword.
  • Page 38
  • Considrations relatives la syntaxe des fichiers SQL*Loader-266 unable to locate character set handle for name Cause:SQL*Loader could not find the character set handle for the named character set. Action:Correct the character set name. SQL*Loader-267 control file must be first datafile Cause:The control file is specified as containing data using the INFILE "*" clause, but other datafiles were named first. Action:Move the INFILE "*" clause so that it is the first datafile declared in the control file. SQL*Loader-268 UNRECOVERABLE keyword may be used only in direct path Cause:The UNRECOVERABLE keyword can only be specified in the direct path load. Action:Use the direct path load or remove the keyword. (Conventional path loads are always recoverable). SQL*Loader-269 Null string not allowed as clause comparison text Cause:A clause is being compared to a null string. Action:Modify the clause to compare to at least one character.
  • Page 39
  • Considrations relatives la syntaxe des fichiers SQL*Loader-270 table name has index defined upon it Cause:Parallel load was specified into a table that has an index defined for it. Action:Drop the index or indexes defined for the table or do not use parallel load. SQL*Loader-271 not a parallel load. Table level OPTIONS statement ignored Cause:A table-level OPTIONS statement was specified for a non-parallel load. Action:Remove the OPTIONS statement from the control file. SQL*Loader-272 table level OPTIONS statement ignored Cause:In the parallel load option, the file specified on the command line overrides the file specified in the control file. Action:Remove the OPTIONS statement from the control file.
  • Page 40
  • Donnes dente et fichiers de donnes (1) SQL*Loader lit les donnes dun ou plusieurs fichiers dsigns dans le fichier de contrle. Les donnes sont organises en enregistrements Un fichier de donnes peux prsenter lun des trois formats suivants: Format denregistrement de type fixe Format denregistrement de type variable Format denregistrement de type flue
  • Page 41
  • Donnes dente et fichiers de donnes (2) Format denregistrement de type fixe: Tous les enregistrements qu'il contient sont de mme longueur (en octets). Syntaxe:INFILE "fix n " ; Exemple: load data infile example dat "fix 10 " example.dat 10 into table example
  • Page 42
  • Donnes dente et fichiers de donnes (3) Format denregistrement de type variable: La longueur de chaque enregistrement d'un champ de type caractre est incluse au dbut de chaque enregistrement dans le fichier de donnes. Syntaxe: INFILE "datafile_name" "var n"; Exemple: load data infile example.dat "var 3 " into table example
  • Page 43
  • Donnes dente et fichiers de donnes (4) Format denregistrement de type flux: La taille des enregistrements n'est pas indique ; rechercher par SQL*Loader a la fin de lenregistrement. Syntaxe: INFILE ["str terminator_string"]; Exemple: load data infile example.dat "str |\n " into table example
  • Page 44
  • Mthodes de chargement
  • Page 45
  • Comparaison du chargement du donnes par chemin direct et par chemin conventionnel
  • Page 46
  • Charger des donnes par SQL*Loader (1)
  • Page 47
  • Charger des donnes par SQL*Loader (2) La mme ligne de commande mais crite de trois manires diffrentes : Sqlldr system/password region.ctl Sqlldr control=regions.ctl userid=system/password Sqlldr system/manager control=regions.ctl
  • Page 48
  • FIN