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 :

Connexion BDD oracle impossible depuis java


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Connexion BDD oracle impossible depuis java
    Bonjour,

    Je suis étudiant et je fais actuellement un projet java / bdd sous oracle.

    J'ai deux pc, deux vm, une linux oracle qui héberge ma BDD en version 10g (10.2.0.1.0)

    J'ai une application java sur l'autre vm que je développe avec éclipse. (JDK 1.5)

    J'ai un programme de test que je lance en bash pour tester la connexion à la base, j'ai aussi l'équivalent de cette fonction dans eclipse avec les interface etc..

    Et je rencontre un problème de connexion donc...

    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 java.sql.*;
     
     
    class TestRainDB {
     
    	public static void main (String[] args) {
     
    		String driverName = "oracle.jdbc.driver.OracleDriver";
    		String dbUrl = "jdbc:oracle:thin:@192.168.0.20:1521:XE";
    		String user = "ADM_FPR";
    		String pass = "mdp";
     
    		try {
    			// Etape 1.  Chargement du driver
    			System.out.println("Chargement du driver: "  + driverName);
    			Class.forName(driverName);
     
    			// Etape 2:  Obtention de la connexion
    			System.out.println("Connexion a la base: "  + dbUrl);
    			System.out.println("User id: "  + user);
    			Connection myConn = DriverManager.getConnection (dbUrl, user, pass);
     
    			// Etape 3:  Creer et  executer la requete SQL
    			System.out.println("Execution de la requete...");
    			Statement myStmt = myConn.createStatement ();
    			ResultSet myRs = myStmt.executeQuery ("SELECT * from Comic_Books");
     
    			// Etape 4:  Traiter le ResultSet
    			while (myRs.next ()) {
    				System.out.println (myRs.getString ("artist_name") + " - " + myRs.getString ("title"));
    			}
     
    			myConn.close();
    		}
    		catch (SQLException exc) {
    			exc.printStackTrace();
    		}
    		catch (ClassNotFoundException exc) {
    			exc.printStackTrace();
    		}
    	}
    }
    Je charge mon driver via : export CLASSPATH=$SCLASSPATH:/usr/share/java/ojdbc14.jar

    Je lance dans mon bash et j'obtiens l'erreur suivante :
    J'obtiens la même erreur dans eclipse..

    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
    Chargement du driver: oracle.jdbc.driver.OracleDriver
    Connexion a la base: jdbc:oracle:thin:@192.168.0.20:1521:XE
    User id: ADM_FPR
    java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    	at java.sql.DriverManager.getConnection(DriverManager.java:620)
    	at java.sql.DriverManager.getConnection(DriverManager.java:200)
    	at TestRainDB.main(TestRainDB.java:26)
    J'ai parcouru une grande partie des forum, les faq etc http://java.developpez.com/faq/jdbc/?page=connection

    Je me suis dit qu'il devait y avoir un problème réseau box ou autre, j'ai essayé d'ouvrir le port 1521 j'ai vérifié le listener.ora le port est OK..

    Les machines ping entre elle.

    J'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (obvious) IP address is incorrect - try PING
    The port is not open, or is blocked by a firewall - try TELNET
    The DB listener is not running or is binding to a different network interface - again, TELNET should confirm this (also use Oracle client tools to connect)
    No local ports are available for the out-going connection (unlikely) - only if you're making thousands of connections, or creating hundreds of new connections every minute.
    Un telnet 192.168.0.19 1521 ne donne rien..
    Je n'ai pas d'oracle client tools à disposition..
    J'ai essayé en local sur la même machine avec deux vm : pareil...

    Voila je n'arrive pas trouver la solution par moi-même c'est pourquoi je sollicite votre aide.

    Merci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut re
    J'ai fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    netstat -an | grep 1521
    et ma bdd ecoute bien sur le port 1521

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tcp 0     0    0.0.0.0:1521            0.0.0.0:*          LISTEN

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par pauselol Voir le message
    J'ai fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    netstat -an | grep 1521
    et ma bdd ecoute bien sur le port 1521

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tcp 0     0    0.0.0.0:1521            0.0.0.0:*          LISTEN
    Vérifiez vos règles firewall permettent la connexion sur le port 1521
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo /usr/sbin/iptables -L -n | grep 1521
    vous devriez voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1521
    car si les règles par défaut sont de tout rejeter sauf ce qui est explicitement ouvert, il est normal que l'autre VM ne puisse se connecter à la DB.

    pour ouvrir le port :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo /usr/sbin/iptables -I input_ext 1 -p tcp --dport 1521 -j ACCEPT
    remplacez input_ext par le nom de la chaîne iptables de votre firewall, regardez avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sudo /usr/sbin/iptables -L
    celles qui sont définies et mettez la règle dans la chaîne qui contient déjà des règles similaires

    ou utilisez l'utilitaire GUI adhoc sur votre distribution.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Salut sur ma vm linux oracle qui héberge la bdd j'ai fait un

    et j'ai ça comme résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     all      ::/0                 ::/0                state RELATED,ESTABLISHED 
    ACCEPT     icmpv6    ::/0                 ::/0                
    ACCEPT     all      ::/0                 ::/0                
    ACCEPT     tcp      ::/0                 ::/0                state NEW tcp dpt:22 
    REJECT     all      ::/0                 ::/0                reject-with icmp6-adm-prohibited 
     
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    REJECT     all      ::/0                 ::/0                reject-with icmp6-adm-prohibited 
     
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ip6tables -I INPUT 1 -p tcp --dport 1521 -j ACCEPT

    Et la ligne apparaît dans le firewall correctement
    Ca ne marche encore pas.

    Du coup j'ai tout ouvert des deux cotés


    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
     
     
    coté appli
     
    iptables -t filter -F 
    iptables -P INPUT ACCEPT 
    iptables -P FORWARD ACCEPT 
    iptables -P OUTPUT ACCEPT
     
    coté BDD
     
    ip6tables -t filter -F 
    ip6tables -P INPUT ACCEPT 
    ip6tables -P FORWARD ACCEPT 
    ip6tables -P OUTPUT ACCEPT
    et toujours rien... Je comprend pas

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ok j'ai résolu grâce à JeitEmgie merci de ses indications pour le firewall, le problème venait bien de là : j'explique mon erreur :

    J'ai analysé les trames entre les deux vm et on voit bien que l'erreur remonté par la BDD vers la machine client est une erreur de type : host administratively prohibited qui informe donc bien qu'une règle bloque la transaction...

    Je me suis rendu compte en définitif que ip6tables et iptables ne sont pas les même parefeu... l'un pour IPv6 et l'autre pour IPv4..

    Comme par défaut les communication sont en deny all et que j'avais modifié la conf uniquement de IPv6, ça n'allait pas marcher !

    Maintenant tout est ok, merci beaucoup JeitEmgie

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

Discussions similaires

  1. connexion bdd oracle avec perl
    Par hammag dans le forum SGBD
    Réponses: 4
    Dernier message: 11/01/2008, 16h24
  2. Réponses: 3
    Dernier message: 10/01/2008, 12h08
  3. connexion jdbc à oracle a travers Java
    Par dzwael dans le forum JDBC
    Réponses: 3
    Dernier message: 03/10/2007, 16h38
  4. Connexion Firebird 1.5 depuis Java via JDBC
    Par rprom1 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 04/04/2006, 11h29
  5. Connexion BDD oracle TNS protocol adapter error
    Par cedrickb dans le forum Access
    Réponses: 3
    Dernier message: 30/12/2004, 13h02

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