ERLEDIGT
NEIN
NEIN
ANTWORTEN
33
33
ZUGRIFFE
8387
8387
EMPFEHLEN
-
04.07.07 15:01 #1
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
-
04.07.07 16:41 #2MeinerEiner_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
-
04.07.07 16:51 #3
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?
-
04.07.07 17:11 #4MeinerEiner_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
-
Hi,
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.
-
09.07.07 12:12 #6
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)
-
09.07.07 13:00 #7MeinerEiner_80 Tutorials.de Gastzugang
-
09.07.07 14:30 #8
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...
-
09.07.07 17:27 #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:
http://www.oracle.com/technology/pub...tabase-xe.html...
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...
Gruß TomJava 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
-
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) {} } }
-
29.10.07 12:43 #11Tobias Köhler Tutorials.de Gastzugang
Welcher Fehler tritt denn immer auf?
Ich vermute einfach mal, dass er hier liegt:
Die Zeile sollte nicht auskommentiert sein, oder?Code java:1 2
// 1. JDBC-Treiber laden // Class.forName("oracle.jdbc.OracleDriver").newInstance();
-
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]
-
29.10.07 13:28 #13MeinerEiner_80 Tutorials.de Gastzugang
Moin!
In der Java 1.6 Api steht:
Nutzt du Java 1.6 und ist diese genannte Datei auch vorhanden? Falls nicht muss weiterhin der Treiber explizit mit Class.forName() geladen werden..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:
*grüssle*
MeinerEiner
-
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
-
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
-
Verbindungsprobleme mit meiner Datenbank
Von rhô im Forum JavaAntworten: 3Letzter Beitrag: 03.06.10, 07:18 -
Oracle Datenbank anlegen
Von Balian im Forum Relationale DatenbanksystemeAntworten: 12Letzter Beitrag: 01.11.07, 15:27 -
Verbindung zu Oracle-Datenbank
Von WIK-Lars im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 27.10.06, 10:56 -
Import in Oracle 10g Datenbank
Von liam im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 29.09.06, 18:47 -
Oracle Datenbank
Von riddler2kone im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 06.03.02, 09:54





Zitieren

Login





