Tuto
Accès aux tables externes
1/ CREATION D’UN DIRECTORY (REPERTOIRE VIRTUEL)
2/ ACCORDER DES DROITS DE LECTURE SUR LE DIRECTORY
3/ CREATION D’UN FICHIER EXTERNE
Les tables externes permettent de remplacer SQL*LOADER pour alimenter des fichiers depuis un répertoire, voici comment procéder :
1/ Création d’un DIRECTORY (répertoire virtuel)
Pour faire accéder Oracle à un répertoire déjà existant sur le serveur, en lui indiquant le chemin d’accès du répertoire ou son nom.
Format de la commande :
CREATE [ OR REPLACE ] DIRECTORY directory AS 'path_name' ;
Pour se faire, l’utilisateur doit être = system ou avoir des droits « CREATE ANY DIRECTORY »
Exemples :
CREATE DIRECTORY admin AS 'oracle/admin';
CREATE OR REPLACE DIRECTORY bfile_dir AS '/usr/bin/bfile_dir' ;
CREATE OR REPLACE DIRECTORY DIRINT AS 'C:\DIRINT';
CREATE OR REPLACE DIRECTORY DDWRKSPACEI AS 'D:\Workspacei';
Visualisation des tables externes : DBA_EXTERNAL_LOCATIONS, ALL_EXTERNAL_LOCATIONS , et USER_EXTERNAL_LOCATIONS . select owner , table_name , DIRECTORY_OWNER , DIRECTORY_NAME from all_external_locations
2/ Accorder des droits sur le DIRECTORY
Accorder des droits de lecture au dossier virtuel pour pouvoir l’utiliser.
Format de la commande :
GRANT READ ON DIRECTORY directory TO role WITH GRANT OPTION;
Exemples :
GRANT READ ON DIRECTORY DDWRKSPACE TO PUBLIC WITH GRANT OPTION;
GRANT READ, WRITE ON DIRECTORY DDWRKSPACE TO PUBLIC WITH GRANT OPTION;
3/ Création d’un fichier externe
Exemples :
CREATE TABLE employes_ext
( numero NUMBER(7),
nom VARCHAR2(30),
prenom VARCHAR2(20),
job VARCHAR2(20) )
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY nom_directory_read
ACCESS PARAMETERS
(
records delimited by newline
badfile nom_directory_write:'test_table_externe.bad'
logfile nom_directory_write:'test_table_externe.log'
fields terminated by ','
missing field values are null
( numero, nom, prenom, job )
)
LOCATION ('test_table_externe.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED ;
CREATE TABLE dept_external (
deptno NUMBER(6),
dname VARCHAR2(20),
loc VARCHAR2(25)
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
DEFAULT DIRECTORY admin
ACCESS PARAMETERS
(
RECORDS DELIMITED BY newline
BADFILE 'ulcase1.bad'
DISCARDFILE 'ulcase1.dis'
LOGFILE 'ulcase1.log'
SKIP 20
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(
deptno INTEGER EXTERNAL(6),
dname CHAR(20),
loc CHAR(25)
)
)
LOCATION ('ulcase1.ctl')
)
REJECT LIMIT UNLIMITED;
CREATE TABLE navilogi_ext
(
jeton varchar2(30),
datelog varchar2(10),
heurelog varchar2(6),
id_ldap_user number(6),
nom varchar2(30),
prenom varchar2(30),
code_groupe number(2),
code_drf varchar2(2),
lien_page varchar2(100)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DDWRKSPACE
ACCESS PARAMETERS
(
records delimited by newline
nologfile
fields terminated by ';'
missing field values are null
)
LOCATION ('visite2i.old')
)
REJECT LIMIT UNLIMITED
Exemple de script :
select 'Initialisation la première fois du fichier externe des logs serveur' from dual;
CREATE OR REPLACE DIRECTORY DDWRKSPACEI AS 'D:\Workspacei';
GRANT READ ON DIRECTORY DDWRKSPACEI TO PUBLIC WITH GRANT OPTION;
CREATE TABLE navilogi_ext
(
jeton varchar2(30),
datelog varchar2(10),
heurelog varchar2(6),
id_ldap_user number(6),
nom varchar2(30),
prenom varchar2(30),
code_groupe number(2),
code_drf varchar2(2),
lien_page varchar2(100)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DDWRKSPACEI
ACCESS PARAMETERS
(
records delimited by newline
nologfile
fields terminated by ';'
missing field values are null
)
LOCATION ('visitei.log')
)
REJECT LIMIT UNLIMITED;
Accès aux tables externes
1/ CREATION D’UN DIRECTORY (REPERTOIRE VIRTUEL)
2/ ACCORDER DES DROITS DE LECTURE SUR LE DIRECTORY
3/ CREATION D’UN FICHIER EXTERNE
Les tables externes permettent de remplacer SQL*LOADER pour alimenter des fichiers depuis un répertoire, voici comment procéder :
1/ Création d’un DIRECTORY (répertoire virtuel)
Pour faire accéder Oracle à un répertoire déjà existant sur le serveur, en lui indiquant le chemin d’accès du répertoire ou son nom.
Format de la commande :
CREATE [ OR REPLACE ] DIRECTORY directory AS 'path_name' ;
Pour se faire, l’utilisateur doit être = system ou avoir des droits « CREATE ANY DIRECTORY »
Exemples :
CREATE DIRECTORY admin AS 'oracle/admin';
CREATE OR REPLACE DIRECTORY bfile_dir AS '/usr/bin/bfile_dir' ;
CREATE OR REPLACE DIRECTORY DIRINT AS 'C:\DIRINT';
CREATE OR REPLACE DIRECTORY DDWRKSPACEI AS 'D:\Workspacei';
Visualisation des tables externes : DBA_EXTERNAL_LOCATIONS, ALL_EXTERNAL_LOCATIONS , et USER_EXTERNAL_LOCATIONS . select owner , table_name , DIRECTORY_OWNER , DIRECTORY_NAME from all_external_locations
2/ Accorder des droits sur le DIRECTORY
Accorder des droits de lecture au dossier virtuel pour pouvoir l’utiliser.
Format de la commande :
GRANT READ ON DIRECTORY directory TO role WITH GRANT OPTION;
Exemples :
GRANT READ ON DIRECTORY DDWRKSPACE TO PUBLIC WITH GRANT OPTION;
GRANT READ, WRITE ON DIRECTORY DDWRKSPACE TO PUBLIC WITH GRANT OPTION;
3/ Création d’un fichier externe
Exemples :
CREATE TABLE employes_ext
( numero NUMBER(7),
nom VARCHAR2(30),
prenom VARCHAR2(20),
job VARCHAR2(20) )
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY nom_directory_read
ACCESS PARAMETERS
(
records delimited by newline
badfile nom_directory_write:'test_table_externe.bad'
logfile nom_directory_write:'test_table_externe.log'
fields terminated by ','
missing field values are null
( numero, nom, prenom, job )
)
LOCATION ('test_table_externe.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED ;
CREATE TABLE dept_external (
deptno NUMBER(6),
dname VARCHAR2(20),
loc VARCHAR2(25)
)
ORGANIZATION EXTERNAL
(TYPE oracle_loader
DEFAULT DIRECTORY admin
ACCESS PARAMETERS
(
RECORDS DELIMITED BY newline
BADFILE 'ulcase1.bad'
DISCARDFILE 'ulcase1.dis'
LOGFILE 'ulcase1.log'
SKIP 20
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
(
deptno INTEGER EXTERNAL(6),
dname CHAR(20),
loc CHAR(25)
)
)
LOCATION ('ulcase1.ctl')
)
REJECT LIMIT UNLIMITED;
CREATE TABLE navilogi_ext
(
jeton varchar2(30),
datelog varchar2(10),
heurelog varchar2(6),
id_ldap_user number(6),
nom varchar2(30),
prenom varchar2(30),
code_groupe number(2),
code_drf varchar2(2),
lien_page varchar2(100)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DDWRKSPACE
ACCESS PARAMETERS
(
records delimited by newline
nologfile
fields terminated by ';'
missing field values are null
)
LOCATION ('visite2i.old')
)
REJECT LIMIT UNLIMITED
Exemple de script :
select 'Initialisation la première fois du fichier externe des logs serveur' from dual;
CREATE OR REPLACE DIRECTORY DDWRKSPACEI AS 'D:\Workspacei';
GRANT READ ON DIRECTORY DDWRKSPACEI TO PUBLIC WITH GRANT OPTION;
CREATE TABLE navilogi_ext
(
jeton varchar2(30),
datelog varchar2(10),
heurelog varchar2(6),
id_ldap_user number(6),
nom varchar2(30),
prenom varchar2(30),
code_groupe number(2),
code_drf varchar2(2),
lien_page varchar2(100)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DDWRKSPACEI
ACCESS PARAMETERS
(
records delimited by newline
nologfile
fields terminated by ';'
missing field values are null
)
LOCATION ('visitei.log')
)
REJECT LIMIT UNLIMITED;