Transcript of Réalisé par : DAAIF Jabran CHERKAOUI Khaoula CHERKAOUI Khaoula ABBAR Amina ABBAR Amina BOUSTANI...
- 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