tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
33
ZUGRIFFE
8387
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von tekilla209
    tekilla209 tekilla209 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    60
    Hallo Leutz,

    ich habe ein Prog. geschrieben, dass mit den wichtigsten gängigen Datenbanken zusammen funktionieren soll.
    Jetzt bin ich dabei die Möglichkeit Oracle zu verwenden einzubauen und bekomme schon bei der Verbindung einige Probleme.

    Der folgende Code liefert einen Error, mit dem ich nichts anfangen kann (hab leider keine Ahnung von Oracle)

    Code :
    1
    2
    
    Class.forName(driver);
    conn = DriverManager.getConnection(url, user, password);

    driver = "oracle.jdbc.driver.OracleDriver"
    url = "jdbc:oracle:thin:@192.168.0.222:1521"

    Der Error:

    java.sql.SQLException: Listener refused the connection with the following error:
    ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
    The Connection descriptor used by the client was:
    192.168.0.222:1521

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:380)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:466)
    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:839)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    ...

    2. Frage: Wie kann ich SHOW DATABASES und SHOW TABLES in Oracle realisieren?
    ich habe gelesen das geht nicht so ohne weiteres. Wie kann ich überhaupt verschiedene Datenbanken auf einem Oracle Server laufen lassen?


    PS:
    Ich verwende Oracle Express Edition 10g
     

  2. #2
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    Ich mag mich täuschen, aber fehlt da nicht noch der Datenbankname in der URL?

    url = "jdbc:oracle:thin:@192.168.0.222:1521:databaseName"

    *grüssle*
    MeinerEiner
     

  3. #3
    Avatar von tekilla209
    tekilla209 tekilla209 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    60
    Danke erstma für die Antwort!

    im Prinzip hast Du ja recht, aber ich dachte ich könnte die verbindung est mal so aufbauen und dann ein "SHOW DATABASES" äquivalent benutzen und anschliesent USE databasename machen.

    Wie kann ich sehen welche Datenbanken vorhanden sind?
    hab bisher nur den Server installiert ohne irgendwelchen Content. Sollte Da nicht immer eine Datenbank namens "system" existieren?
    url = "jdbc:oracle:thin:@192.168.0.222:1521:system" habe ich schon versucht, ging aber auch net.

    Wie kann ich in dem Oracle neue Datenbanken anlegen?
    Mit dem Webinterface-Teil kann ich Tabellen anlegen aber unter welchem Datenbanknamen finde ich die dann?
     

  4. #4
    MeinerEiner_80 Tutorials.de Gastzugang
    Wie gesagt, 100% sicher bin ich nicht, aber
    das was du willst ist glaub ich nicht so ganz JDBC konform, wird also erstmal nicht untersützt.
    Aber eventuell hat dein Orakeltreiber ja ein paar Erweiterungen, die das ermöglichen.
    Da musst du mal in die Doku von dem Treiber schauen...

    *grüssle*
    MeinerEiner
     

  5. #5
    jgraber jgraber ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    13
    Hi,

    Zitat Zitat von tekilla209 Beitrag anzeigen
    2. Frage: Wie kann ich SHOW DATABASES und SHOW TABLES in Oracle realisieren?
    ich habe gelesen das geht nicht so ohne weiteres. Wie kann ich überhaupt verschiedene Datenbanken auf einem Oracle Server laufen lassen?

    Ein Show Database wird so weit ich Oracle verstanden habe, nicht möglich sein. Jede DB ist für sich alleine ein abgeschlossenes System. Um auf die Oracle-DB zu kommen, benötigst Du eine SID (System Identifier), die Du beim Verbindungsaufbau angeben musst.

    Ein Show table müsste mit "SELECT * FROM ALL_TABLES" (Oder so ähnlich) möglich sein. Habe derzeit keine Oracle-Instanz, auf der ich es testen kann. Mit dem Statement solltest Du aber alle Tabellen zurück bekommen, auf die der User zugreiffen kann (Sowohl die eigenen wie auch die Tabellen anderer User, für die du entsprechende Rechte wie SELECT erhalten hast.
    Alle Tabellen in der DB sind in der Tabelle DBA_TABLES enthalten. Diese Tabelle gehört aber dem Benutzer SYS und ist in der Regel für Benutzer nicht lesbar.

    Hoffe damit geholfen zu haben. Sollte ich daneben liegen, würde ich mich über eine entsprechende Rückmeldung freuen.
     

  6. #6
    Avatar von tekilla209
    tekilla209 tekilla209 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    60
    Danke nochmal für eure Antworten!

    Habs jez endlich gerafft. Aber...
    So wie ich das verstanden habe gibt es doch nur eine DB pro Server?
    Wozu also den Datenbanknamen angeben, wenn doch sowieso nur eine DB existiert?
    Geändert von tekilla209 (09.07.07 um 12:43 Uhr)
     

  7. #7
    MeinerEiner_80 Tutorials.de Gastzugang
    Zitat Zitat von tekilla209 Beitrag anzeigen
    So wie ich das verstanden habe gibt es doch nur eine DB pro Server?
    Nee, man kann durchaus mehrere Datenbanken auf einem Server unterbringen..
     

  8. #8
    Avatar von tekilla209
    tekilla209 tekilla209 ist offline Mitglied Silber
    Registriert seit
    Apr 2007
    Beiträge
    60
    Also doch wie bei MySQL nur dass es kein "SHOW DATABASES" und auch kein "USE" gibt?
    Geht wahrscheinlich nur nicht bei XE, hab zumindest nicht gefunden wo...
     

  9. #9
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    ja bei Oracle XE gibts die Einschränkung, dass man nur eine Datenbankinstanz auf einem Rechner betreiben kann:
    ...
    The third limit is that only a single XE database can run on any given computer. The important point here is that you don't need a database for each application you create, as you might for some competing databases. Instead, Oracle uses the concept of schemas to separate applications...
    http://www.oracle.com/technology/pub...tabase-xe.html

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  10. #10
    fenerli23 fenerli23 ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    176
    Hi an alle,

    wollte per Java auf meine Oracle Database 10g Express zugreifen, jedoch tritt immer wieder ein Fehler auf könnte mir jemand vielleicht weiterhelfen...?

    lg


    Code :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import oracle.jdbc.OracleDriver;
     
    class hr
    {
        public static void  main(String args[]) 
        {
     
            try 
            {
                    DriverManager.registerDriver(new OracleDriver());
            }
            catch (SQLException e)
            {
                System.err.println ("ERROR: Could not register the driver! Exiting ..");
                e.printStackTrace();
                Runtime.getRuntime().exit(1);
            }   
            // 1. JDBC-Treiber laden
           // Class.forName("oracle.jdbc.OracleDriver").newInstance();
           
     
            // Connect zur thinDriver
            Connection thinDriverConnection  = null;
            try
            {
                  String thinDriverURL = "jdbc:oracle:thin:@remote_machine:1521:remote_xe";
                  thinDriverConnection = DriverManager.getConnection(
                          thinDriverURL, "hr", "fenerium");
            }
            catch (SQLException e)
            {
                System.err.println ("ERROR: Could not register the driver! Exiting ..");
                e.printStackTrace();
                Runtime.getRuntime().exit(1);
            }
            finally
            {
                try
                {
                    if (thinDriverConnection != null)
                        thinDriverConnection.close();
                }
                catch (SQLException ignore) {}
            }
            
            String connectDescriptor = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = " +
                    "(PROTOCOL = TCP)(HOST = remote_machine)(PORT = 1521)))(CONNECT-DATA =" +
                    "(SID = REMOTE_XE)))";
            
            //thin Driver connection using a connect descriptor
            try
            {
                String thinDriverConnectDescriptorURL = "jdbc:oracle:thin:@" + connectDescriptor;
                
                thinDriverConnection= DriverManager.getConnection(
                      thinDriverConnectDescriptorURL, "hr", "fenerium");
            }
            catch (SQLException e)
            {
                // handle the exception properly -  in this case, we just 
                // print a message and stack trace and exit the application
                System.err.println ("ERROR: Could not register the driver! Exiting ..");
                e.printStackTrace();
                Runtime.getRuntime().exit(1);
             }
             finally
             {
                 try
                 {
                     if (thinDriverConnection != null)
                     thinDriverConnection.close();
                 }
                 catch (SQLException ignore) {}
             }          
     
             
             // OCI driver connection using a connect descriptor
             Connection ociDriverConnection = null;
             try
             {
                String ociDriverURL = "jdbc:oracle:oci:@remote_xe"; 
                                        
                ociDriverConnection= DriverManager.getConnection(
                          ociDriverURL, "hr", "fenerium");
             }
             catch (SQLException e)
             {
                // handle the exception properly -  in this case, we just 
                // print a message and stack trace and exit the application
                System.err.println ("ERROR: Could not register the driver! Exiting ..");
                e.printStackTrace();
                Runtime.getRuntime().exit(1);
              }
              finally
              {
                 try
                  {
                     if (ociDriverConnection != null)
                      ociDriverConnection.close();
                  }
                 catch (SQLException ignore) {}
              }    
             
              
              //OCI driver connection using a connect descriptor
              try
              {
                  String ociDriverConnectDescriptorURL = "jdbc:oracle:oci:@" 
                            + connectDescriptor;
                
                  ociDriverConnection= DriverManager.getConnection(
                          ociDriverConnectDescriptorURL, "hr", "fenerium");
              }
              catch (SQLException e)
              {
                  // handle the exception properly -  in this case, we just 
                  // print a message and stack trace and exit the application
                  System.err.println ("ERROR: Could not register the driver! Exiting ..");
                  e.printStackTrace();
                  Runtime.getRuntime().exit(1);
              }
              finally
              {
                 try
                  {
                     if (ociDriverConnection != null)
                      ociDriverConnection.close();
                  }
                 catch (SQLException ignore) {}
              }         
        }
     

  11. #11
    Tobias Köhler Tutorials.de Gastzugang
    Welcher Fehler tritt denn immer auf?
    Ich vermute einfach mal, dass er hier liegt:
    Code java:
    1
    2
    
    // 1. JDBC-Treiber laden
           // Class.forName("oracle.jdbc.OracleDriver").newInstance();
    Die Zeile sollte nicht auskommentiert sein, oder?
     

  12. #12
    fenerli23 fenerli23 ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    176
    Also wie ich das verstehe, stimmt das schon mit dem auskommentieren das ist eine Alternative zu dem hier:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
       try 
            {
                    DriverManager.registerDriver(new OracleDriver());
            }
            catch (SQLException e)
            {
                System.err.println ("ERROR: Could not register the driver! Exiting ..");
                e.printStackTrace();
                Runtime.getRuntime().exit(1);
            }

    Als Feherl tritt dies auf:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    ERROR: Could not register the driver! Exiting ..
    java.sql.SQLException: E/A-Exception: The Network Adapter could not establish the connection
        [COLOR="Red"]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
                                                  (TCDriverExtension.java35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at java.sql.DriverManager.getConnection(DriverManager.java:525)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at hr.main(hr.java:31)[/COLOR]
     

  13. #13
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    In der Java 1.6 Api steht:
    The DriverManager methods getConnection and getDrivers have been enhanced to support the Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers must include the file META-INF/services/java.sql.Driver. This file contains the name of the JDBC drivers implementation of java.sql.Driver. For example, to load the my.sql.Driver class, the META-INF/services/java.sql.Driver file would contain the entry:
    Nutzt du Java 1.6 und ist diese genannte Datei auch vorhanden? Falls nicht muss weiterhin der Treiber explizit mit Class.forName() geladen werden..

    *grüssle*
    MeinerEiner
     

  14. #14
    fenerli23 fenerli23 ist offline Mitglied Gold
    Registriert seit
    Oct 2007
    Beiträge
    176
    ich nutze java jdk 1.5

    ich habe die treiber schon in die classpath eingefügt und wollte nun so die Treiber laden, damit ich auf die Oracle Database zugreifen kann.

    Hatte das auch mit class.forName() vorher versucht jedoch trat da immer ein Fehler auf..


    lg
     

  15. #15
    y0dA y0dA ist offline Mitglied Brokat
    Registriert seit
    Mar 2007
    Beiträge
    263
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    So sollte es funktionieren:
    Für USER eben noch das Schema eingeben und für PASSWORD das Passwort (eh klar) :).
     
    try {
                DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
                conn = DriverManager.getConnection(
                        "jdbc:oracle:thin:@remote_machine:1521:remote_xe", "USER", "PASSWORD");
            } catch (SQLException e) {
                e.printStackTrace();
            }
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 03.06.10, 07:18
  2. Oracle Datenbank anlegen
    Von Balian im Forum Relationale Datenbanksysteme
    Antworten: 12
    Letzter Beitrag: 01.11.07, 15:27
  3. Verbindung zu Oracle-Datenbank
    Von WIK-Lars im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 27.10.06, 10:56
  4. Import in Oracle 10g Datenbank
    Von liam im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 29.09.06, 18:47
  5. Oracle Datenbank
    Von riddler2kone im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 06.03.02, 09:54