IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

executer un shutdown immediate à partir de java


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 33
    Points
    33
    Par défaut executer un shutdown immediate à partir de java
    Bonjour,

    Je cherche un moyen de lancer en java les commandes sql suivantes:
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1/24;
    ALTER DATABASE OPEN RESETLOGS;

    En l'éxécutant de manière conventionnelle, je reçois un message indiquant une instruction sql non valide.

    N.B: A partir de toad: même résultat. A partir de sql+, les commandes fonctionnent.

    Auriez vous une idée pour exécuter ce type de commande?

    Cordialement,
    Yves.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    code java?
    quelle base de donnée?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Il s'agit d'une base de données oracle et le code java est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Connection conn = null;
    String url = "jdbc:oracle:thin:@LAM:1521:LAM";
    String userName = "SYS AS SYSDBA";
    String password = "root";
     
    try
    {
           Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
           conn = DriverManager.getConnection(url, userName, password);
           Statement s = conn.createStatement();
           s.execute("SHUTDOWN IMMEDIATE");
           s.close();
           conn.close();
    }catch(Exception e)
    {
           system.out.println(e);
    }
    Merci.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    attention, avec oracle, que toutes les commandes sql plus ne sont pas accessible à jdbc. En effet, une partie des commandes sql plus sont interprétée directement par l'interpréteur SQL plus, et non pas par le serveur de base de données. Or, le driver jdbc se contente d'envoyer telles quelles les instructions au serveur DB. Les commande SQL plus ne sont alors pas accessible

    edit: d'après ce site, il est possible à partir de oracle 11gR1 de faire un shutdown avec jdbc. La propriété internal logon semble indispensable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import oracle.jdbc.OracleConnection;
    import oracle.jdbc.pool.OracleDataSource;
    import java.sql.Statement;
    import java.sql.SQLException;
    import java.util.Properties;
     
    public class JDBCShutdown {
     
      public static void main(String[] args) {
        try {
          // Set the connection properties.
          // required: SYSDBA
          Properties prop = new Properties();
          prop.setProperty("user","sys");
          prop.setProperty("password","password");
          prop.setProperty("internal_logon","sysdba");
     
          OracleDataSource ods = new OracleDataSource();
          ods.setConnectionProperties(prop);
          ods.setURL("jdbc:oracle:thin:@//ora1:1521/orcl");
          OracleConnection ocon = (OracleConnection)ods.getConnection();
          System.out.println("Connected");    
     
          // shutdown the database
          ocon.shutdown(OracleConnection.DatabaseShutdownMode.IMMEDIATE);
          System.out.println("Instance stopped");
          Statement stmt = ocon.createStatement();
          stmt.execute("alter database close normal");
          stmt.execute("alter database dismount");
          stmt.close();
          System.out.println("Database closed and dismounted");
          ocon.shutdown(OracleConnection.DatabaseShutdownMode.FINAL);
          ocon.close();
          ods.close();
          System.out.println("Database stopped");
     
        } catch(SQLException e) {
          System.out.println(e.getMessage());
        }
     
      }
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    je suis actuellement en 10g et la fonction ne semble pas être prise en charge.

    Merci de ton aide.

    Yves.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ben oui, c'est à partir de 11GR1. Sur la 10G, perdu, a priori.

    Il reste la possibilité de prendre un driver prévu pour la 11G et tenter le coup avec (ils sont toujours rétro compatibles avec les anciennes version du protocole), mais si c'est au niveau du protocol oracle que ce n'est pas prévu, ce sera cuit.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Merci,

    j'ai mis en place tout ce dont j'avais besoin. Maintenant , je redoute juste que maven n'ai pas accès à la librairie ojdbc dans cette version (5).

    Je ne trouve pas la librairie au niveau de maven mais je ne l'ai pas trouvé dans http://repo1.maven.org/maven2/com/oracle/ . Cependant il apparait dans un pom dans un autre topic http://www.developpez.net/forums/d93...contient-java/ dans l'avant dernière réponse de nannous.

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    maven n'a accès à aucun ojdbc. Attention aussi.

    ojdbc5.jar, chez oracle, ca ne veux pas dire 'driver en version 5', ca veux dire 'driver de version indéterminée pour java 5' ! Il faut donc faire très attention quand vous les mettez dans un repository privé de maven, de bien ajouter le numéro de version qui apparait sur le site de téléchargement. Sinon, dans 6 mois, ce sera le bordel pour savoir de quand/quelle version date ce driver

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    La version correspond à la version de la base de données? (11.2.0.2.0)

    J'ai récupéré un extrait de pom sur un autre topic:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <dependency>
    	<groupId>oracle</groupId>
    	<artifactId>ojdbc5</artifactId>
    	<version>11.1.0.6.0-patche</version> 
    </dependency>
    Mais le groupeId ID pointe sur un répertoire que je ne trouve pas sur http://repo1.maven.org/maven2/com/oracle/.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    vous allez devoir le mettre dans un repository local, interne à votre entreprise, comme tous les jars non distribués par maven. Il n'existe aucun repository public avec le jar ojdbc dedans, et pour cause, il est sous licence oracle, donc nécessite un téléchargement sur le site oracle.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    ça marche (à quelques choses près que j'ai du mal à implémenter le shutdown (+startup et flashback) au milieu de mes suites de tests soapui sans que mes webservices répondent toujours après).

    Je te remercie pour ton aide.

    Cordialement.
    Yves.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. lancer un executable à partir de java
    Par MariaDV dans le forum NetBeans
    Réponses: 1
    Dernier message: 17/03/2010, 14h29
  2. Réponses: 1
    Dernier message: 20/03/2009, 07h36
  3. [Runtime] executer une ligne de commande cmd à partir de java
    Par mazizou dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 10/05/2007, 13h47
  4. Executer une commande avec sudo a partir de java
    Par barabas123 dans le forum Langage
    Réponses: 16
    Dernier message: 05/01/2007, 16h47
  5. Unité Delphi appelée à partir de JAVA
    Par babaahmed dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 26/04/2003, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo