Créer un .bat avec des commandes Oracle [Résolu/Fermé]

Signaler
Messages postés
96
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
18 avril 2008
-
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
-
Bonjour,

Je souhaiterais créer des routines sous windows en attaquant une base de données Oracle 10g
Mais je dois peut-être mal m'y prendre!
J'espère avoir plus de d'aide sur ce forum.

Voici mon programme batch en partie :

@SET CHAINECONNECT=%ORAUSER%/%ORAPASSWD%@%ORASID%
:creation
@SET REPONSE=
@CLS
@ECHO ------------------------------------------------------------------------
@ECHO                       Etes-vous certain ? Y or N
@ECHO ------------------------------------------------------------------------
@SET /P REPONSE=Reponse : 
@IF '%REPONSE%' == '' GOTO creation
@IF /I %REPONSE% == y GOTO suite2
@IF /I %REPONSE% == n GOTO commencement

:suite2
@SET ORABASE=
@SET ORAPASS=
@SET /P ORABASE=Nom de la base souhaite : 
@SET /P ORAPASS=Mot de passe souhaite : 
@IF %ORABASE% == '' GOTO commencement
@IF %ORAPASS% == '' GOTO commencement
@GOTO gocreat

:gocreat
SQLPLUS %CHAINECONNECT%
CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;
GRANT all privilege to %ORABASE% with admin option;
GRANT dba to %ORABASE%;
GRANT connect to %ORABASE%;
GRANT "EXP_FULL_DATABASE" TO "%ORABASE%" with admin option;
GRANT "IMP_FULL_DATABASE" TO "%ORABASE%" with admin option;
GRANT "DBA" TO "%ORABASE%" with admin option;
GRANT "CONNECT" TO "%ORABASE%" with admin option;
GRANT "RESOURCE" TO "%ORABASE%" with admin option;
GRANT "AQ_ADMINISTRATOR_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;
GRANT "DELETE_CATALOG_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;
GRANT "EXECUTE_CATALOG_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;
GRANT "RECOVERY_CATALOG_OWNER" TO "%ORABASE%" WITH ADMIN OPTION;
GRANT "SELECT_CATALOG_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;
GRANT "SNMPAGENT" TO "%ORABASE%" WITH ADMIN OPTION;
ALTER USER "%ORABASE%" DEFAULT ROLE ALL;
QUIT;
@ECHO ------------------------------------------------------------------------
@ECHO         Creation de la base %ORABASE% effectue avec succes
@ECHO ------------------------------------------------------------------------
%SLEEP4%
@GOTO commencement


Le soucis est que lorsque je lance mon programme, le SQLPLUS %CHAINECONNECT% se conencte bien, mais lorsqu'il doit lancer les commandes de CREATE ; GRANT ... ça reste figé, ça ne bouge pas, et lorsque je tape QUIT ça lance les CREATE et GRANT ...

Avez vous des idées !

Merci d'avance.

4 réponses

Messages postés
96
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
18 avril 2008
3
Personne n'aurait une idée ?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 327
mettre toutes les commandes Oracle CREATE, GRANT, etc dans un fichier, oracle.txt et faire une redirection

SQLPLUS %CHAINECONNECT% < oracle.txt
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
96
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
18 avril 2008
3
Ce n'est pas possible autrement que de passer par un fichier texte ou un fichier sql !!!!

Du coup je me débrouille comment pour que mes variables saisies soient prisent en compte dans un fichier externe !?
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 327
pour n'exécuter qu'une fois la commande, tu peux aussi envoyer tout les echo dans un fchier:
@ECHO CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%; >> oracle.txt
...
SQLPLUS < oracle.txt
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 327
et comme ça

( echo CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;
echo GRANT all privilege to %ORABASE% with admin option;
...
echo QUIT; ) | SQLPLUS %CHAINECONNECT%
Messages postés
96
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
18 avril 2008
3
Salut,

Effectivement, moi qui ai l'habitude de faire du KornShell je n'ai pas pensé à le faire façon UNIX.
Bon effectivement, le fait de faire :
( echo CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;
echo GRANT all privilege to %ORABASE% with admin option;
...
echo QUIT; ) | SQLPLUS %CHAINECONNECT%

à la fin de ma requete aurait été judicieux, oui mais voilà, façon UNIX sur windows ce n'est pas encore ça.

Mais tu m'a mis sur la voie de la solution, et voici la solution :

@ECHO CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT all privilege to %ORABASE% WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT dba to %ORABASE%;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT connect to %ORABASE%;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "EXP_FULL_DATABASE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "IMP_FULL_DATABASE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "DBA" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "CONNECT" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "RESOURCE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "AQ_ADMINISTRATOR_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "DELETE_CATALOG_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "EXECUTE_CATALOG_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "RECOVERY_CATALOG_OWNER" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO GRANT "SELECT_CATALOG_ROLE" TO "%ORABASE%" WITH ADMIN OPTION;|SQLPLUS -s %CHAINECONNECT%
@ECHO ALTER USER "%ORABASE%" DEFAULT ROLE ALL;|SQLPLUS -s %CHAINECONNECT%


En effet, il faut mette en début de chaque lignes un "echo" ; et en fin de chaque lignes mon "|SQLPLUS -s %CHAINECONNECT%" sans les parenthèses de début et de fin.
Du coup mon script est prêt à fonctionner.

Merci du coup de main Dubcek.