Java Oracle localhost erreur de connexion (ORA-12505)
Je suis en train actuellement de se connecter à une base de données sur mon ordinateur actuel.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
public static void main(String[] argv) throws Exception {
Connection connection = null;
try {
//Load the JDBC driver
String driverName = "oracle.jdbc.driver.OracleDriver";
Class.forName(driverName);
//Create a connection to the database
String serverName = "localhost";
String portNumber = "1521";
String sid = "xe";
String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
String username = "scott";
String password = "tiger";
connection = DriverManager.getConnection(url, username, password);
System.out.println("Success");
} catch (ClassNotFoundException e) {
System.out.println("Class Not Found Error");
}
}
}
Je reçois cette erreur et je ne sais pas pourquoi...
Exception in thread "main" java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:xe
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:496)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:411)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:490)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:202)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:465)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Main.main(Main.java:21)
Au sein de mon serveur, j'ai utilisé la commande (connecté en tant que sys)
SQL> sélectionner une instance de v$thread;
(il retourne)
Exemple--> xe
Que pouvais-je faire incorrect?
Merci!
P. S. j'ai aussi essayé 127.0.0.1 au lieu de localhost
Ce n'
Il est de votre chaîne de connexion à la base de données ou de fichiers de configuration.
Êtes-vous à l'aide de Oracle Express Edition (XE) ou le Standard/Enterprise editions?
le SID
n'est pas nécessaire. Il est d'exécuter un exemple, en passant par sa question précédente, de sorte que le
lsnrctl status
afficher lors de l'exécution avec l'utilisateur propriétaire de la base de données?Il est de votre chaîne de connexion à la base de données ou de fichiers de configuration.
Êtes-vous à l'aide de Oracle Express Edition (XE) ou le Standard/Enterprise editions?
le SID
xe
laisse à penser qu'il est uing Express Edition.n'est pas nécessaire. Il est d'exécuter un exemple, en passant par sa question précédente, de sorte que le
xe
SID peut-être à partir de l'exemple qu'il a copié.OriginalL'auteur k9b | 2011-07-24
Vous devez vous connecter pour publier un commentaire.
Vérifier si l'auditeur.ora fichier sous le
<ORACLE_HOME>\admin\NETWORK
répertoire a la valeur suivante:LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = LENOVO-E04EFE5E)(PORT = 1522)) ) ) DEFAULT_SERVICE_LISTENER = (XE)
Merci pour cela, j'ai eu un problème avec le port a été 1522 au lieu de 1521, il fonctionne maintenant. MERCI!
OriginalL'auteur Jugal Shah
Au lieu de
String url = "jdbc:oracle:mince:@" + serverName + ":" + port + ":" + sid;
utiliser ceci:
String url = "jdbc:oracle:mince:@" + serverName + ":" + port + "/" + sid;
OriginalL'auteur Sergio
remplacer xe avec le nom de base de données que vous avez mis lors de l'installation, vous pourrez sûrement obtenir le succès
si vous avez oublié le dbname il pourrait être récupérées à partir du fichier tnsnames.ora dans votre oracle directory
OriginalL'auteur tarun hasija
J'ai fait face à un même problème lors de la connexion à oracle rac. J'ai changé l'url de
port:servicename
àport/servicename
et il a travaillé pour moi.OriginalL'auteur user3877876
Je vais deviner que le TNS listener a commencé, mais l'instance de base de données a démarré avant l'auditeur n'.
Lorsque l'instance de base de données démarre, il va s'inscrire avec le TNS listener. Cependant, si il n'y a pas d'auditeur pour s'inscrire, il ne peut pas le faire. Lorsque l'auditeur démarre, il ne vérifie pas si les instances qu'il sait à ce sujet ont commencé.
Je peux fournir une démonstration. Je suis à l'aide d'Oracle 11g XE Beta sur Windows 7. Initialement, le OracleServiceXE service est en cours d'exécution, mais OracleXETNSListener service n'est pas.
J'ai couru votre base de données de code de connexion et j'ai eu l'erreur suivante:
Si vous obtenez une erreur ORA-12505 erreur, alors clairement votre TNS listener est en cours d'exécution.
J'ai alors commencé à le TNS listener et re-couru à votre base de données de code de connexion. J'ai obtenu le résultat suivant: (j'ai renommé votre classe et a changé le nom d'utilisateur et le mot de passe à l'intérieur, mais dans les autres cas, le code à l'intérieur c'est la même chose):
(Cette erreur n'est pas identique à la vôtre: je n'ai pas
The Connection descriptor used by the client was:
section. Je ne suis pas sûr à 100% pourquoi.)Dans le cas ci-dessus, la solution est de se connecter à SQL*Plus que
SYS
et exécuterALTER SYSTEM REGISTER
. Il enregistre l'instance avec l'auditeur:Après avoir fait cela, j'ai été en mesure de se connecter à la base de données:
OriginalL'auteur Luke Woodward