2016-05-03 3 views
3

PL/SQL Developerを使用してOracleデータベースに完全に接続していました。私は私のJavaコードからDBにアクセスしようとしました。その後、PL/SQL Developerからこのエラー「ORA-12154 TNS:解決できませんでした。私はまだ私のコードからデータベースとクエリにアクセスすることができます。Oracleを使用すると、突然ORA-12154 TNSを受信しました。メッセージを解決できませんでした。

私はこのエラーの推奨される解決策を読んでいますが、私はWindowsとデータベースサーバーの両方に制限付きの特権を持つシンクライアントを使用しているため、使用できませんでした。

私はこの問題を解決するための提案を感謝します。

また、私のコードを実行する前にすべてがうまくいたので、この問題の理由が非常に不思議です。これはデータベースに接続して特権を持っている1つのビューを照会するのと同じくらい簡単です! また、他のシンクライアントの他のユーザーは、PL/SQL Developerにも接続できません。次のように 私のコードは次のとおりです。

public static void main(String[] args) throws IOException { 
    // TODO code application logic here 

    Logger logger = Logger.getLogger("MyLog"); 
    FileHandler fh; 
    fh = new FileHandler("C:/Users/batam/Documents/MyLogFile.log"); 
    logger.addHandler(fh); 
    SimpleFormatter formatter = new SimpleFormatter(); 
    fh.setFormatter(formatter); 

     Class.forName("oracle.jdbc.driver.OracleDriver"); 

     Connection connection = null; 

    try { 
     connection = DriverManager.getConnection(
       "jdbc:oracle:thin:@capmtr10:1521/FINDATA1", "bamat", 
       "fg_3002"); 

    } catch (SQLException e) { 

       e.printStackTrace(); 

     return; 

    } 

    if (connection != null) { 

     try { 
      String sql = "select a.userid, a.Description from USER_FINANCE a where a.userid = 'batam'"; 

      Statement stmt = connection.createStatement(); 

      ResultSet rs = stmt.executeQuery(sql); 

      while (rs.next()) { 

       String id = rs.getString("userid"); 
       String name = rs.getString("Description"); 

       logger.info("Selecteds are : " + id + " : " + name); 
      } 

      rs.close(); 
      stmt.close(); 
     } catch (SQLException e) { 
      logger.info("SQLException : " + e.getMessage()); 
     } finally { 
      try { 
       connection.close(); 
      } catch (SQLException ex) { 
       Logger.getLogger(IFS.class.getName()).log(Level.SEVERE, null, ex); 
       logger.info("Close Exception : " + ex.getMessage()); 
      } 
     } 

    } else { 
     System.out.println("Failed to make connection!"); 
     logger.info("Failed to make connection!"); 
    } 

} 

それはまだ、このエラーなしで接続している間、私はsystem_context機能を使用して、私のシンクライアント上のPL/SQLの開発者からのサーバーのホスト名とサービス名を取得しています。

ありがとうございます。

+0

例外の原因となったコードを表示します。 –

+0

PL/SQLはOracleにアクセスするためのツールではありません。あなたが使ったツールの本当の名前は何ですか? PL/SQL開発者ですか? SQLplus? SQL Developer?トッド? – Codo

+0

Javaでどの接続文字列を使用していますか?そして、あなたは他のツールでどのような接続設定を指定しましたか? – Codo

答えて

0

oracleクライアント・ツールをインストールしましたか?もしそうなら、cmdのtnsping YOUR_SIDはあなたのデータベースへの接続のステータスを与えます。

関連する問題