Rechercher : dans
Par :

Créer un .bat avec des commandes Oracle

Dernière réponse le 18 avr 2008 à 09:27:14 smooncef, le 17 avr 2008 à 11:35:46 
 Signaler ce message aux modérateurs

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.

Peace ...
Configuration: Windows XP
Firefox 3.0

Meilleures réponses pour « Créer un .bat avec des commandes Oracle » dans :
Création d’un listener au niveau du serveur Oracle VoirPour créer un listener au niveau d’un serveur de base de données Oracle il suffit d’éditer les fichiers listener.ora tnsnames.ora au niveau du répertoire $ORACLE_HOME/network/admin. Pour démarrer le listener il faut utiliser la commande lsnrctl start
Exécuter - Créer votre propre commande VoirPour ceux qui aiment tout faire avec le clavier, il est possible de créer vos propres commandes exécutables dans Menu démarrer > Exécuter. Nous allons prendre l'exemple de la commande netnavig qui exécutera Mozilla FireFox. Ouvrez la base...
Comment récupérer le résultat d'une commande dans une variable VoirComment récupérer le résultat d'une commande dans une variable Préambule Syntaxe Exemples Préambule Il est bien souvent nécessaire de récupérer le résultat d'une commande (ou de son code retour) dans une variable afin de pouvoir...
Oracle - Les séquences VoirCet article s'appuie sur la version 8.1.6 d'Oracle. Une séquence est un objet de base de données Oracle, au même titre qu'une table, une vue, etc... Autrement dit, il appartient à un utilisateur, on peut le manipuler, le modifier, à condition...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Création d'index VoirQu'est-ce qu'un index? Un index est un objet complémentaire (mais non indispensable) à la base de données permettant d'"indexer" certaines colonnes dans le but d'améliorer l'accès aux données par le SGBDR, au même titre qu'un index dans un livre ne...

1

smooncef, le 17 avr 2008 à 14:41:12

Personne n'aurait une idée ?
Peace ...

Répondre à smooncef

2

dubcek, le 17 avr 2008 à 15:17:46

Mettre toutes les commandes Oracle CREATE, GRANT, etc dans un fichier, oracle.txt et faire une redirection

SQLPLUS %CHAINECONNECT% < oracle.txt

Répondre à dubcek

3

smooncef, le 17 avr 2008 à 16:53:11

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 !?

Peace ...

Répondre à smooncef

4

dubcek, le 17 avr 2008 à 17:30:32

Et comme ça

( echo CREATE USER %ORABASE% IDENTIFIED BY %ORAPASS%;
echo GRANT all privilege to %ORABASE% with admin option;
...
echo QUIT; ) | SQLPLUS %CHAINECONNECT%

Répondre à dubcek

5

smooncef, le 18 avr 2008 à 09:19:30

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.

Peace ...

Répondre à smooncef

6

 dubcek, le 18 avr 2008 à 09:27:14

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

Répondre à dubcek