Voici une commande simple pour faire un dump d'une base Oracle ...
Tout d'abord, il faut un sqlplus (PLSQL, TOAD, etc...) installé sur votre PC.
Puis dan sune console sous DOS (ou autre), lancer les commandes suivantes :
Pour un export (Full) :
exp dbapreinteg/bovalo2 file=expBoValo2_091203.dmp log=dump.log full=y consistent=y statistics=none
L'export est full (full=y), les logs se trouvent dasn dump.log, le dump crée est expBoValo2_091203.dmp
Pour un import :
imp dbapreinteg/bovalo2 file=expBoValo2_091203.dmp log=dump.log full=y consistent=y statistics=none
vendredi 4 décembre 2009
vendredi 20 novembre 2009
oracle PLSQL : creer une procedure stockee avec dbms
voici un petit exemple de procedure stockée sans arguments utilisant dmbs_output ... Attention, il est à noter que le buffer dbms_output a une taille par défaut de 20000 et une taille maximum de 1000000 bytes ...
pour le lancer, se connecter sur le serveur, uploader le script sql, et taper :
sqlplus login/password @extractionDbms.sql >> monExtraction.csv
ou sinon, se connecter en sqlplus, et appeler directement la procédure stockée ... attention à ne pas oublié le backslash \ en fin de procédure ou sous sqlplus ...
Un second exemple utilisant une ecriture directe dans un fichier ... Attention, il faut noter qu'il est nécessaire de disposer d'un "directory oracle" configuré par le DBA ... Le fichier se trouvera dans le directory ... (ici nommé EXTRACT et correspond à un chemin sur le filesystem du serveur).
pour le lancer, se connecter sur le serveur, uploader le script sql, et taper :
sqlplus login/password @extractionDbms.sql >> monExtraction.csv
ou sinon, se connecter en sqlplus, et appeler directement la procédure stockée ... attention à ne pas oublié le backslash \ en fin de procédure ou sous sqlplus ...
rem ****************************************************
rem MISE A JOUR DU SCHEMA
rem script : maj_donnees_test_curseur.sql
rem auteur : Capgemini
rem societe : Capgemini
rem ****************************************************
set serveroutput on
spool extraction_test_curseur.csv
declare
CURSOR ListeWagon (pNumeroCmdBoc number,pVersBoc number) IS
select mat.NO_MAT
from tableWagon mat
where mat.no_cmd_boc = pNumeroCmdBoc
and mat.vers_boc = pVersBoc
and rownum <= 5;
/** declaration du curseur*/
CURSOR ListeResultat IS
SELECT
cbov.no_cmd_boc,
cbov.vers_boc,
cbov.etat,
cbov.no_cmd_def,
(SELECT def.etat FROM tableVersionCommande def WHERE def.no_cmd_def = cbov.no_cmd_def and def.vers_def = cbov.vers_def and def.ind_vcour = 1 and cbov.ind_vcour = 1) as etatDef,
cbov.cmc_lv,
cbov.dh_accept,
cbov.dep_ets_ori,
(select LR2_ETS_FER
FROM vueRef referentiel
WHERE referentiel.ETS_FER = cbov.DEP_ETS_ORI
AND referentiel.RES_FER = cbov.DEP_RES_ORI
AND referentiel.D_DEB_ETS_FER <= (TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
AND ((referentiel.D_FIN_ETS_FER + 1) >=
(TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
OR referentiel.D_FIN_ETS_FER IS NULL)
AND ROWNUM = 1) as libelleOri,
cbov.dep_ets_dest,
(select LR2_ETS_FER
FROM vueRef referentiel
WHERE referentiel.ETS_FER = cbov.DEP_ETS_DEST
AND referentiel.RES_FER = cbov.DEP_RES_DEST
AND referentiel.D_DEB_ETS_FER <= (TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
AND ((referentiel.D_FIN_ETS_FER + 1) >=
(TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
OR referentiel.D_FIN_ETS_FER IS NULL)
AND ROWNUM = 1) as libelleDest,
cbov.ccl_ref_cli,
cbov.aff_cli_pay_fa,
(SELECT cli.l_cli FROM tableClient cli WHERE cli.cli = cbov.aff_cli_pay_fa AND D_FIN_CLI IS NULL) as libelleFA,
cbov.aff_cli_pay_fna,
(SELECT cli.l_cli FROM tableClient cli WHERE cli.cli = cbov.aff_cli_pay_fna AND D_FIN_CLI IS NULL) as libelleFNA,
(SELECT m.lib_mot_valo FROM tableMoteur m WHERE cbov.mot_valo = m.code_mot_valo) as mot_valo,
cbov.cmc_tarif_app
from tableOrcVersion cbov
where cbov.dh_accept >= TO_DATE('01/01/2009')
and cbov.dh_accept <= TO_DATE(sysdate, 'dd/MM/yy')
and cbov.cmc_lv <= 10000
UNION
SELECT
cbov.no_cmd_boc,
cbov.vers_boc,
cbov.etat,
cbov.no_cmd_def,
NULL,
cbov.cmc_lv,
cbov.dh_accept,
cbov.dep_ets_ori,
(select LR2_ETS_FER
FROM vueRef referentiel
WHERE referentiel.ETS_FER = cbov.DEP_ETS_ORI
AND referentiel.RES_FER = cbov.DEP_RES_ORI
AND referentiel.D_DEB_ETS_FER <= (TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
AND ((referentiel.D_FIN_ETS_FER + 1) >=
(TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
OR referentiel.D_FIN_ETS_FER IS NULL)
AND ROWNUM = 1) as libelleOri,
cbov.dep_ets_dest,
(select LR2_ETS_FER
FROM vueRef referentiel
WHERE referentiel.ETS_FER = cbov.DEP_ETS_DEST
AND referentiel.RES_FER = cbov.DEP_RES_DEST
AND referentiel.D_DEB_ETS_FER <= (TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
AND ((referentiel.D_FIN_ETS_FER + 1) >=
(TO_DATE(cbov.DH_ACCEPT, 'DD/MM/YY') + 1)
OR referentiel.D_FIN_ETS_FER IS NULL)
AND ROWNUM = 1) as libelleDest,
cbov.ccl_ref_cli,
cbov.aff_cli_pay_fa,
(SELECT cli.l_cli FROM tableClient cli WHERE cli.cli = cbov.aff_cli_pay_fa AND D_FIN_CLI IS NULL) as libelleFA,
cbov.aff_cli_pay_fna,
(SELECT cli.l_cli FROM tableClient cli WHERE cli.cli = cbov.aff_cli_pay_fna AND D_FIN_CLI IS NULL) as libelleFNA,
(SELECT m.lib_mot_valo FROM tableMoteur m WHERE cbov.mot_valo = m.code_mot_valo) as mot_valo,
cbov.cmc_tarif_app
from tableHC cbov
where cbov.dh_accept >= TO_DATE('01/01/2009')
and cbov.dh_accept <= TO_DATE(sysdate, 'dd/MM/yy')
and cbov.cmc_lv <= 10000;
/** declaration des variables */
numeroCmdBoc number(8);
versBoc number(2);
etatCmdBoc number(4);
numeroCmdDef number(8);
etatCmdDef number(4);
numeroExpedition number(6);
dateAcceptation date;
etsOri number(6);
libEtsOri varchar2(12);
etsDest number(6);
libEtsDest varchar2(12);
referenceClient varchar2(35);
codePayeurFA number(7);
libellePayeurFA varchar2(32);
codePayeurFNA number(7);
libellePayeurFNA varchar2(32);
numeroMateriel number(12);
moteurValorisation varchar(25);
tarifApplique number(7);
/** liste des wagons */
buffer VARCHAR2(255);
begin
DBMS_OUTPUT.ENABLE(1000000);
dbms_output.put_line('debut extraction');
/** creer des libelles de colonnes */
buffer := 'cmdBOC' || ';' || 'etat' || ';' || 'cmdDEF' || ';' || 'etatCmdDef' || ';' || 'numExp' || ';' || 'dateAccept' || ';' || 'codeEtsOri' || ';' || 'libEtsOri' || ';' || 'codeEtsDest' || ';' || 'libEtsDest' || ';' || 'refClient' || ';' || 'codeCliPFA' || ';' || 'libCliPFA' || ';' || 'codeCliPNFA' || ';' || 'libCliPNFA' || ';' || 'numMat' || ';' || 'motValo' || ';' || 'tarApp' || ';';
dbms_output.put_line(buffer);
/** ouverture du curseur */
Open ListeResultat;
Loop
-- Pour chaque jour sélectionné
Fetch ListeResultat Into numeroCmdBoc,versBoc,etatCmdBoc,numeroCmdDef,etatCmdDef,numeroExpedition,dateAcceptation,etsOri,libEtsOri,etsDest,libEtsDest,referenceClient,codePayeurFA,libellePayeurFA,codePayeurFNA,libellePayeurFNA,moteurValorisation,tarifApplique;
Exit When ListeResultat%NOTFOUND;
-- creer les lignes
Open ListeWagon (numeroCmdBoc,versBoc);
Loop
Fetch ListeWagon Into numeroMateriel;
Exit When ListeWagon%NOTFOUND;
buffer := numeroCmdBoc || ';' || etatCmdBoc || ';' || numeroCmdDef || ';' || etatCmdDef || ';' || numeroExpedition || ';' || dateAcceptation || ';' || etsOri || ';' || libEtsOri || ';' || etsDest || ';' || libEtsDest || ';' || referenceClient || ';' || codePayeurFA || ';' || libellePayeurFA || ';' || codePayeurFNA || ';' || libellePayeurFNA || ';' || numeroMateriel || ';' || moteurValorisation || ';' || tarifApplique || ';';
dbms_output.put_line(buffer);
End Loop;
Close ListeWagon;
End loop ;
/** liberation ressources */
Close ListeResultat ;
dbms_output.put_line('fin extraction');
end;
/
spool off;
/
Un second exemple utilisant une ecriture directe dans un fichier ... Attention, il faut noter qu'il est nécessaire de disposer d'un "directory oracle" configuré par le DBA ... Le fichier se trouvera dans le directory ... (ici nommé EXTRACT et correspond à un chemin sur le filesystem du serveur).
SET SERVEROUTPUT ON;
/** declaration methode extraction */
create or replace procedure extraction is
/** declaration du curseur*/
CURSOR ListeResultat IS
select
vcmd.no_cmd_boc,
vcmd.etat,
vcmd.no_cmd_def,
vcmd.cmc_lv,
vcmd.dh_accept,
vcmd.aff_cli_pay_fa,
(SELECT L_CLI
FROM CLIENT client
where client.cli = vcmd.aff_cli_pay_fa
and client.d_deb_cli <= TO_DATE(sysdate, 'dd/MM/yy')
and (client.d_fin_cli is null or client.d_fin_cli >= TO_DATE(sysdate, 'dd/MM/yy')
) and rownum=1
) as libelleFA,
vcmd.aff_cli_pay_fna,
(SELECT L_CLI
FROM CLIENT client
where client.cli = vcmd.aff_cli_pay_fna
and client.d_deb_cli <= TO_DATE(sysdate, 'dd/MM/yy')
and (client.d_fin_cli is null or client.d_fin_cli >= TO_DATE(sysdate, 'dd/MM/yy')
) and rownum=1
) as libelleFNA,
vcmd.ccl_ref_cli,
wagons.no_mat,
vcmd.mot_valo,
vcmd.cmc_tarif_app,
vcmd.cmc_typ_valo_tarif
from VERSIONCMD vcmd, WAGON wagons
where vcmd.dh_accept >= TO_DATE('01/01/2009')
and vcmd.dh_accept <= TO_DATE(sysdate, 'dd/MM/yy')
and vcmd.cmc_lv <= 10000
and wagons.no_cmd_boc = vcmd.no_cmd_boc and wagons.vers_boc = vcmd.vers_boc;
/** declaration des variables */
numeroCmdBoc number(8);
etatCmdBoc number(4);
numeroCmdDef number(8);
numeroExpedition number(6);
dateAcceptation date;
codePayeurFA number(7);
libellePayeurFA varchar2(32);
codePayeurFNA number(7);
libellePayeurFNA varchar2(32);
referenceClient varchar2(35);
numeroMateriel number(12);
moteurValorisation number(1);
tarifApplique number(7);
typeTarif number(1);
/** fichier de sortie */
file utl_file.file_type;
buffer VARCHAR2(1024);
/** traitement */
begin
/** ouverture fichier dasn le directory */
file := utl_file.fopen('EXTRACT','extraction.csv','W');
/** creer des libelles de colonnes */
buffer := 'n° de commande BOC' || ';' || 'etat de la commande BOC' || ';' || 'n° de commande DEF' || ';' || 'n° d’expédition' || ';' || 'date acceptation' || ';' || 'code client PFA' || ';' || 'libelle client PFA' || ';' || 'code client PNFA' || ';' || 'libelle client PFA' || ';' || 'reference client' || ';' || 'numero materiel' || ';' || 'moteur de valorisation' || ';' || 'tarif applique' || ';' || 'type de tarif';
utl_file.put_line(file,buffer);
/** ouverture du curseur */
Open ListeResultat;
Loop
-- Pour chaque jour sélectionné
Fetch ListeResultat Into numeroCmdBoc,etatCmdBoc,numeroCmdDef,numeroExpedition,dateAcceptation,codePayeurFA,libellePayeurFA,codePayeurFNA,libellePayeurFNA,referenceClient,numeroMateriel,moteurValorisation,tarifApplique,typeTarif;
Exit When ListeResultat%NOTFOUND;
-- creer les lignes
buffer := numeroCmdBoc || ';' || etatCmdBoc || ';' || numeroCmdDef || ';' || numeroExpedition || ';' || dateAcceptation || ';' || codePayeurFA || ';' || libellePayeurFA || ';' || codePayeurFNA || ';' || libellePayeurFNA || ';' || referenceClient || ';' || numeroMateriel || ';' || moteurValorisation || ';' || tarifApplique || ';' || typeTarif;
utl_file.put_line(file,buffer);
End loop ;
/** liberation ressources */
Close ListeResultat ;
utl_file.fclose(file);
end extraction;
vendredi 13 novembre 2009
unix : remplacement de chaine avec sed ou sous vi
Pour remplacer une occurence d'une chaine un peu partout dans un fichier (ici myfile.txt) :
il est possible d'utiliser la commande sed :
ici la première occurence trouvée dans le fichier myfile.txt de 'chaineDepart' sera remplacée par 'nouvelleChaine', et le resultats sera affiché dans stdout...
sed -e 's/chaineDepart/nouvelleChaine/' myfile.txt
ici toute les occurences trouvées dans myfile.txt sont remplacées et le tout est redirigé vers le fichier myfile_new.txt
sed -e 's/chaineDepart/nouvelleChaine/g' myfile.txt > myfile_new.txt
ici, la même chose mais de la ligne 2 à 10 incluses ...
sed -e '2,10s/chaineDepart/nouvelleChaine/g' myfile.txt > myfile_new.txt
ici, un très bonne article ...
il est possible d'utiliser sous vim :
ici toute les occurences trouvées dans le fichier edité sont remplacées :%s/texte_à_trouver/nouveau_texte/g
ici, un très bonne article ...
il est possible d'utiliser la commande sed :
ici la première occurence trouvée dans le fichier myfile.txt de 'chaineDepart' sera remplacée par 'nouvelleChaine', et le resultats sera affiché dans stdout...
sed -e 's/chaineDepart/nouvelleChaine/' myfile.txt
ici toute les occurences trouvées dans myfile.txt sont remplacées et le tout est redirigé vers le fichier myfile_new.txt
sed -e 's/chaineDepart/nouvelleChaine/g' myfile.txt > myfile_new.txt
ici, la même chose mais de la ligne 2 à 10 incluses ...
sed -e '2,10s/chaineDepart/nouvelleChaine/g' myfile.txt > myfile_new.txt
ici, un très bonne article ...
il est possible d'utiliser sous vim :
ici toute les occurences trouvées dans le fichier edité sont remplacées :%s/texte_à_trouver/nouveau_texte/g
ici, un très bonne article ...
jeudi 12 novembre 2009
putty : créer un tunnel ...
J'ai besoin d'accéder a un port particulier auquel je n'ai pas accès directement, mais auquel une autre machine a accès ... Dans mon cas, je veux accéder à une console weblogic situé sur mon serveur "cible" sur le port 7001, et je n'ai qu'accès à un autre serveur "dit accessible" (qui lui a accès au serveur de cible et au port 7001) ...
Il faut donc que je crée un tunnel ssh ... avec putty ...
1) configurer putty :

Tout d'abord on se rend sur la rubrique Tunnels de putty ...
ici, on voit que ds source port, je mets mon PC en local 127.0.0.2:11151
et que je mets dans destination port le serveur et le port cible : 10.14.51.139:11151
et ne pas oublier d'appuyer sur "add"
2) Se connecter au serveur accessible via ssh ... le tunnel est fait ...
3) Le tunnel est fait, maintenant je lance mon browser sur http://localhost:11151/console ... et c'est magique j'obtient le display de la console weblogic !!!
Il faut donc que je crée un tunnel ssh ... avec putty ...
1) configurer putty :
Tout d'abord on se rend sur la rubrique Tunnels de putty ...
ici, on voit que ds source port, je mets mon PC en local 127.0.0.2:11151
et que je mets dans destination port le serveur et le port cible : 10.14.51.139:11151
et ne pas oublier d'appuyer sur "add"
A noter qu'il faut faire attention aux translation d'adresse IP (ici l'adresse IP, il faut mettre l'adresse IP du serveur "cible" vu par le serveur "accèdé"
2) Se connecter au serveur accessible via ssh ... le tunnel est fait ...
3) Le tunnel est fait, maintenant je lance mon browser sur http://localhost:11151/console ... et c'est magique j'obtient le display de la console weblogic !!!
vendredi 6 novembre 2009
linux : afficher l'espace disque utilisé ou la taille de repertoire
La commande df affiche l'ensemble des points de montage et l'espace occupé, et l'option -h permet un affichage "human readable" :
df -h
La commande du affiche l'ensemble des points de montage et l'espace occupé, et l'option -h permet un affichage "human readable" :
du -h --max-depth=1
df -h
La commande du affiche l'ensemble des points de montage et l'espace occupé, et l'option -h permet un affichage "human readable" :
du -h --max-depth=1
mardi 3 novembre 2009
linux : trouver un process qui utilise un port
la commande netstat -ap permet d'afficher les port et n° de PID qui utlise le port ... le grep fait un filtre ...
netstat -ap | grep 7670
mercredi 28 octobre 2009
weblogic : installation d'un domain ... via config.sh ...
Voici le configuration wizard en ligne de commande :
Tapez: ./config.sh –mode=console
Ensuite il suffit de répondre aux questions posées par le script ... A noter qu'il est possible de l'utiliser sous Linux/Unix et Windows ...
Il existe le mode silencieux :
./config.sh -mode=silent -silent_script=MonScript.txt
Un exemple de script se trouve dans l'installe de bea ${BEA_HOME}\weblogic81\common\templates\silent_scripts\domain_wls.txt ...
Une syntaxe particulière et relativement simple existe pour ce type de script ...
Un article très complet se trouve ici
Tapez: ./config.sh –mode=console
Ensuite il suffit de répondre aux questions posées par le script ... A noter qu'il est possible de l'utiliser sous Linux/Unix et Windows ...
Il existe le mode silencieux :
./config.sh -mode=silent -silent_script=MonScript.txt
Un exemple de script se trouve dans l'installe de bea ${BEA_HOME}\weblogic81\common\templates\silent_scripts\domain_wls.txt ...
Une syntaxe particulière et relativement simple existe pour ce type de script ...
//This is an example of a Configuration Wizard silent script. This example uses the
// Basic WebLogic Server Domain template to show how to open, modify, and write out
// a domain in silent mode. Please note that many values used in this script are subject
// to change based on your WebLogic installation and the template you are using.
//
// Usage:
//= config.cmd -mode=silent -silent_script=
//= ./config.sh -mode=silent -silent_script=
//
// Where:
//should be the full path to the silent script.
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
//Read in a domain template.
/////////////////////////////////////////////////////////////////////////////////////////
read template from
"D:\bea\weblogic81/common/templates/domains/wls.jar";
/////////////////////////////////////////////////////////////////////////////////////////
//Find and configure the Admin Server.
/////////////////////////////////////////////////////////////////////////////////////////
find Server "myserver" as s1;
set s1.ListenAddress "";
set s1.ListenPort "7001";
set s1.SSL.Enabled "true";
set s1.SSL.ListenPort "7002";
/////////////////////////////////////////////////////////////////////////////////////////
//Create a JMSQueue.
/////////////////////////////////////////////////////////////////////////////////////////
//A JMSServer has to be created first.
create JMSServer "myJMSServer" as jmsserver;
create JMSQueue "myJMSQueue" as myq;
//required attribute
set myq.JNDIName "jms/myjmsqueue";
//required attribute
set myq.JMSServer "myJMSServer";
//optional attribute
//set myq.StoreEnabled "false";
//target "myJMSServer" to server "myserver"
assign JMSServer "myJMSServer" to target "myserver";
/////////////////////////////////////////////////////////////////////////////////////////
//Create a JDBCConnectionPool.
/////////////////////////////////////////////////////////////////////////////////////////
create JDBCConnectionPool "demoPool" as mypool;
//required attribute
set mypool.DriverName "com.pointbase.jdbc.jdbcUniversalDriver";
//required attribute
set mypool.URL "jdbc:pointbase:server://localhost:9092/demo";
//required attribute
set mypool.Password "PBPUBLIC";
//optional attribute (but it's recommended you set the db user...)
set mypool.Properties "user=PBPUBLIC";
//target all JDBC connection pools to server "myserver"
assign JDBCConnectionPool "*" to target "myserver";
/////////////////////////////////////////////////////////////////////////////////////////
//target existing applications.
/////////////////////////////////////////////////////////////////////////////////////////
//target applications only when they exist in current domain template
//assign application "*" to target "myserver";
/////////////////////////////////////////////////////////////////////////////////////////
//Create the admin user and password.
/////////////////////////////////////////////////////////////////////////////////////////
find User "weblogic" as u1;
set u1.password "weblogic";
/////////////////////////////////////////////////////////////////////////////////////////
//Write out the domain.
/////////////////////////////////////////////////////////////////////////////////////////
set OverwriteDomain "true";
write domain to "D:\bea/user_projects/domains/wls";
/////////////////////////////////////////////////////////////////////////////////////////
//Close domain template to indicate completion of work.
/////////////////////////////////////////////////////////////////////////////////////////
close template;
Un article très complet se trouve ici
Inscription à :
Articles (Atom)