Oracle How to
De Wikifago.
(Différences entre les versions)
(→Data pump) |
|||
| Ligne 43 : | Ligne 43 : | ||
directory=repertoireOracle | directory=repertoireOracle | ||
exclude=SCHEMA:"in('SYSTEM','SYSMAN','OUTLN')" | exclude=SCHEMA:"in('SYSTEM','SYSMAN','OUTLN')" | ||
| + | </pre> | ||
| + | |||
| + | Exemple de script sql permettant de creer un utilisateur ayant les droits en lecture | ||
| + | seule sur toute les tables d'un utilisateur | ||
| + | <pre> | ||
| + | /*============================================================================*/ | ||
| + | /* Cree un utilisateur avec les doits en lecture seul sur les tables du */ | ||
| + | /* du proprietaire */ | ||
| + | /*============================================================================*/ | ||
| + | ACCEPT proprio CHAR PROMPT '- Nom de l utilisateur existant et proprietaire des tables COLT : ' | ||
| + | ACCEPT user_read CHAR PROMPT '- Nom du nouvel utilisateur qui aura acces en lecture seule des tables de &proprio : ' | ||
| + | ACCEPT user_read_pass CHAR PROMPT '- Mot de passe du nouvel utilisateur &user_read : ' | ||
| + | ACCEPT role_read CHAR PROMPT '- Nom du nouveau role pour la lecture seule sur les tables de &proprio : ' | ||
| + | |||
| + | DROP ROLE &role_read; | ||
| + | CREATE ROLE &role_read; | ||
| + | |||
| + | DROP USER &user_read CASCADE; | ||
| + | CREATE USER &user_read identified BY &user_read_pass; | ||
| + | GRANT CONNECT TO &user_read; | ||
| + | GRANT &role_read TO &user_read; | ||
| + | |||
| + | DECLARE | ||
| + | |||
| + | STR VARCHAR2(1024); | ||
| + | |||
| + | CURSOR GET_TABLES IS -- liste des tables du proprio | ||
| + | Select TABLE_NAME from all_tables | ||
| + | WHERE OWNER = '&proprio'; | ||
| + | |||
| + | BEGIN | ||
| + | |||
| + | FOR NOMTABLES IN GET_TABLES | ||
| + | LOOP | ||
| + | |||
| + | STR:='GRANT SELECT ON "&proprio".' || NOMTABLES.TABLE_NAME || ' TO &role_read '; | ||
| + | EXECUTE IMMEDIATE STR; | ||
| + | |||
| + | STR:='CREATE SYNONYM "&user_read".' || NOMTABLES.TABLE_NAME || ' FOR &role_read.' || NOMTABLES.TABLE_NAME; | ||
| + | EXECUTE IMMEDIATE STR; | ||
| + | |||
| + | END LOOP; | ||
| + | |||
| + | EXCEPTION | ||
| + | WHEN OTHERS THEN | ||
| + | DBMS_OUTPUT.PUT_LINE('-- ERREUR lors de la creation de l utilisateur en lecture seul '); | ||
| + | DBMS_OUTPUT.PUT_LINE('-- ' || SQLERRM); | ||
| + | |||
| + | END; | ||
| + | / | ||
</pre> | </pre> | ||
Version du 24 mars 2011 à 14:39
Data pump
Importer un schéma oracle d'un dump fait avec datapump Le DIRECTORY est le nom d'un répertoire Oracle à créer avant l'import. C'est un nom qui pointe vers un répertoire physique, dans lequel doit etre placé le fichier fichierDump.dmp
impdp system/pwdSystem@instanceOracle dumpfile=fichierDump.dmp full=n SCHEMAS=shemaAImporter DIRECTORY=repertoireOracle logfile=imp.log
Importer un shéma oracle d'un dump fait avec datapump sur un autre Schéma
impdp system/pwdSystem@instanceOracle dumpfile=fichierDump.dmp full=n SCHEMAS=shemaAImporter REMAP_SCHEMA=shemaAImporter:shemaDestination DIRECTORY=repertoireOracle logfile=imp.log
Exemple de fichier bash, povant etre appelé par crontab
#!/bin/sh export PATH=/logiciels/oracle/product/10gR2/bin:/home/weblogic/bea/jdk150_12/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/oracle/bin export HOME=/home/oracle export ORACLE_HOME=/logiciels/oracle/product/10gR2 export OLDPWD=/home/oracle env > /home/oracle/admgen/env.log cd /home/oracle/admgen /logiciels/oracle/product/10gR2/bin/expdp system/pwdSystem@instanceOracle dumpfile=instance.dmp full=y logfile=instance.log parfile=datapump.par # le direcctory des dump est /data/oracle/dumps/ cd /data/oracle/dumps/ tar cfz DUMP_$(date +%Y_%m_%d__%H_%M_%S)_instance.tgz instance.dmp tar cfz LOG_$(date +%Y_%m_%d__%H_%M_%S)_instance.tgz instance.log rm instance.log instance.dmp
Contenu du fichier de paramètre du datapump : datapump.par
directory=repertoireOracle
exclude=SCHEMA:"in('SYSTEM','SYSMAN','OUTLN')"
Exemple de script sql permettant de creer un utilisateur ayant les droits en lecture seule sur toute les tables d'un utilisateur
/*============================================================================*/
/* Cree un utilisateur avec les doits en lecture seul sur les tables du */
/* du proprietaire */
/*============================================================================*/
ACCEPT proprio CHAR PROMPT '- Nom de l utilisateur existant et proprietaire des tables COLT : '
ACCEPT user_read CHAR PROMPT '- Nom du nouvel utilisateur qui aura acces en lecture seule des tables de &proprio : '
ACCEPT user_read_pass CHAR PROMPT '- Mot de passe du nouvel utilisateur &user_read : '
ACCEPT role_read CHAR PROMPT '- Nom du nouveau role pour la lecture seule sur les tables de &proprio : '
DROP ROLE &role_read;
CREATE ROLE &role_read;
DROP USER &user_read CASCADE;
CREATE USER &user_read identified BY &user_read_pass;
GRANT CONNECT TO &user_read;
GRANT &role_read TO &user_read;
DECLARE
STR VARCHAR2(1024);
CURSOR GET_TABLES IS -- liste des tables du proprio
Select TABLE_NAME from all_tables
WHERE OWNER = '&proprio';
BEGIN
FOR NOMTABLES IN GET_TABLES
LOOP
STR:='GRANT SELECT ON "&proprio".' || NOMTABLES.TABLE_NAME || ' TO &role_read ';
EXECUTE IMMEDIATE STR;
STR:='CREATE SYNONYM "&user_read".' || NOMTABLES.TABLE_NAME || ' FOR &role_read.' || NOMTABLES.TABLE_NAME;
EXECUTE IMMEDIATE STR;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('-- ERREUR lors de la creation de l utilisateur en lecture seul ');
DBMS_OUTPUT.PUT_LINE('-- ' || SQLERRM);
END;
/
