2014-12-15 2 views
-1

Я использую приведенный ниже код для подключения oracle 10g и получения некоторых данных.Проблема с соединением Java с Oracle

public static void main(String[] args) { 
    try{ 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     Connection con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521/orcl","scott","tiger"); 
     Statement stmt=con.createStatement(); 
     ResultSet rs=stmt.executeQuery("select * from emp"); 
     while(rs.next()) 
     System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)); 
     con.close(); 

    } 
    catch(Exception e) 
    { 
     System.out.println(e); 
    }  
} 

Он отлично работает некоторое время, но через некоторое время она бросает ниже ошибки и не подключается:

java.sql.SQLException: Listener refused the connection with the following error: 

ORA-12518, TNS:listener could not hand off client connection 

The Connection descriptor used by the client was: 

127.0.0.1:1521/orcl 
+0

Вы используете oracle 9i? ORA-12518, как известно, встречается в Oracle Net Services версии 9.2.0.5-10.2.0.1, в котором попытка новых подключений в базе данных выдает ORA-12518 или TNS-12518. ORA-12518 появляется в журнале слушателя при подключении нового пользователя. – dev

+0

Я предлагаю вам попробовать http://stackoverflow.com/questions/13624464/ora-12518-tnslistener-could-not-hand-off-client-connection –

+0

Хотя я очень сомневаюсь, что это причина: 'oracle.jdbc.driver .OracleDriver' устарел на века, вы должны использовать 'oracle.jdbc.OracleDriver'. Также, какую версию драйвера JDBC вы используете? Вы можете проверить это с помощью 'con.getMetaData(). GetDriverVersion()' –

ответ

0

установка попробовать

DIRECT_HANDOFF_TTC_LISTENER = OFF

, вы сможете найти этот файл unde $ oraclehome/product/$ version/server/listners.ora

Иногда это может также произойти из-за ограниченных ресурсов. прежде чем делать что-либо, попробуйте перезапустить oracle, после этого, если проблема исчезнет, ​​это означает, что это ограниченная ошибка ресурсов.

0

Учитывая периодическое поведение, может возникнуть проблема с сервером или достигнут предела. Проверьте listener.log и alert.log, чтобы узнать, есть ли другая ошибка Oracle, препятствующая созданию сеанса.

Я предполагаю, что у вас слишком много сеансов или процессов. Подсчитайте количество строк в представлениях v $ session и v $ и сравните с параметрами базы данных «сеансы» и «процессы». Возможно, вам придется увеличить их. Кроме того, проверьте, не отстает ли ваше приложение от неиспользуемых сеансов, иначе у вас не будет сеансов, независимо от того, насколько высоко вы установили параметры.

Смежные вопросы