Créer un .bat avec des commandes Oracle
Résolu
smooncef
Messages postés
96
Date d'inscription
Statut
Membre
Dernière intervention
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
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%
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.
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.
A voir également:
- Oracle bat
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- .Bat linux ✓ - Forum Linux / Unix
- Oracle america inc virus ✓ - Forum Virus
- .Bat mac ✓ - Forum MacOS
4 réponses
mettre toutes les commandes Oracle CREATE, GRANT, etc dans un fichier, oracle.txt et faire une redirection
SQLPLUS %CHAINECONNECT% < oracle.txt
SQLPLUS %CHAINECONNECT% < oracle.txt
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
@ECHO CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%; >> oracle.txt
...
SQLPLUS < oracle.txt
et comme ça
( echo CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;
echo GRANT all privilege to %ORABASE% with admin option;
...
echo QUIT; ) | SQLPLUS %CHAINECONNECT%
( echo CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;
echo GRANT all privilege to %ORABASE% with admin option;
...
echo QUIT; ) | SQLPLUS %CHAINECONNECT%
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 :
à 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 :
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.
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.