Oracle How to

De Wikifago.

(Différences entre les versions)
(Data pump)
Ligne 14 : Ligne 14 :
</pre>
</pre>
-
Exemple de fichier bash, povant etre appelé par crontab
+
Exemple de fichier bash, pouvant etre appelé par crontab
<pre>
<pre>
#!/bin/sh
#!/bin/sh
Ligne 94 : Ligne 94 :
END;
END;
/
/
 +
</pre>
 +
 +
 +
Exemple de script pour exporter un shéma dans un dump (oracle 10 et +)
 +
<pre>
 +
#!/bin/bash
 +
if [ $(whoami) != "oracle" ]
 +
then
 +
  echo Ce script doit etre lance avec la compte oracle
 +
  exit 1
 +
fi
 +
 +
read -p "Shema oracle a exporter : "  USER_SRC
 +
 +
expdp system/<password>@SID schemas=$USER_SRC directory=dumps dumpfile=${USER_SRC}_$(date +%Y_%m_%d__%H_%M_%S).dmp logfile=${USER_SRC}_$(date +%Y_%m_%d__%H_%M_%S).log
 +
</pre>
 +
 +
 +
Exemple de script pour dupliquer un shéma à  partir d'un dump
 +
<pre>
 +
#!/bin/bash
 +
if [ $(whoami) != "oracle" ]
 +
then
 +
  echo Ce script doit etre lance avec la compte oracle
 +
  exit 1
 +
fi
 +
 +
export REP_DUMP=/home/oracle/dumps
 +
cd $REP_DUMP
 +
 +
echo
 +
echo Liste des dumps dispos dans $REP_DUMP :
 +
ls -lrt *.dmp
 +
 +
echo
 +
read -p "Fichier de dump          :"  DUMP
 +
 +
 +
if [[ ! -a $REP_DUMP/${DUMP} ]]
 +
then
 +
echo Le fichier de dump : $REP_DUMP/${DUMP} n existe pas essayer a nouveau !
 +
read -p "Fichier de dump          :"  DUMP
 +
 +
if [[ ! -a $REP_DUMP/${DUMP} ]]
 +
then
 +
echo
 +
echo Le fichier de dump : $REP_DUMP/${DUMP} n existe pas !
 +
exit 1
 +
fi
 +
fi
 +
 +
read -p "Shema oracle source      :"  USER_SRC
 +
read -p "Shema oracle destination  :"  USER_DEST
 +
 +
echo
 +
echo copie du shema $USER_SRC vers $USER_DEST
 +
impdp system/<password>@<SID> dumpfile=$DUMP exclude=statistics full=n SCHEMAS=$USER_SRC REMAP_SCHEMA=$USER_SRC:$USER_DEST DIRECTORY=dumps logfile=$USER_SRC_to_$USER_DEST.log
 +
 +
echo
 +
echo Application du mot de passe $USER_DEST l utilisateur $USER_DEST
 +
 +
echo "alter user $USER_DEST identified by $USER_DEST;" > alterUser.sql
 +
echo "exit" >> alterUser.sql
 +
sqlplus system/<password>@<SID> @alterUser.sql
 +
 +
echo
 +
echo FIN DE LA  COPIE.
 +
 +
exit 0
</pre>
</pre>

Version du 4 octobre 2012 à 09:44

Data pump

Voir Oracle 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, pouvant 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;
/


Exemple de script pour exporter un shéma dans un dump (oracle 10 et +)

#!/bin/bash
if [ $(whoami) != "oracle" ] 
then
  echo Ce script doit etre lance avec la compte oracle
  exit 1
fi

read -p "Shema oracle a exporter : "  USER_SRC

expdp system/<password>@SID schemas=$USER_SRC directory=dumps dumpfile=${USER_SRC}_$(date +%Y_%m_%d__%H_%M_%S).dmp logfile=${USER_SRC}_$(date +%Y_%m_%d__%H_%M_%S).log


Exemple de script pour dupliquer un shéma à partir d'un dump

#!/bin/bash
if [ $(whoami) != "oracle" ] 
then
  echo Ce script doit etre lance avec la compte oracle
  exit 1
fi

export REP_DUMP=/home/oracle/dumps
cd $REP_DUMP

echo
echo Liste des dumps dispos dans $REP_DUMP :
ls -lrt *.dmp

echo
read -p "Fichier de dump           :"  DUMP


if [[ ! -a $REP_DUMP/${DUMP} ]]
then 
	echo Le fichier de dump : $REP_DUMP/${DUMP} n existe pas essayer a nouveau !
	read -p "Fichier de dump           :"  DUMP

	if [[ ! -a $REP_DUMP/${DUMP} ]]
	then 
		echo
		echo Le fichier de dump : $REP_DUMP/${DUMP} n existe pas !
		exit 1
	fi
fi

read -p "Shema oracle source       :"  USER_SRC
read -p "Shema oracle destination  :"  USER_DEST

echo
echo copie du shema $USER_SRC vers $USER_DEST
impdp system/<password>@<SID> dumpfile=$DUMP exclude=statistics full=n SCHEMAS=$USER_SRC REMAP_SCHEMA=$USER_SRC:$USER_DEST DIRECTORY=dumps logfile=$USER_SRC_to_$USER_DEST.log

echo
echo Application du mot de passe $USER_DEST l utilisateur $USER_DEST

echo "alter user $USER_DEST identified by $USER_DEST;" > alterUser.sql
echo "exit" >> alterUser.sql
sqlplus system/<password>@<SID> @alterUser.sql

echo
echo FIN DE LA  COPIE.

exit 0
Outils personnels