Oracle ora-12514 tns listener does not currently know of service requested in connect descriptor

ORA-12514 “TNS:리스너는 현재 연결 기술자에 요청된 서비스를 알지 못합니다”는 Oracle 데이터베이스에서 발생하는 에러입니다. 이 에러는 클라이언트가 연결 기술자(TNS connect descriptor)에 요청된 서비스를 리스너가 인식하지 못할 때 발생합니다. 아래에는 이 에러의 원인과 해결 방법, 예시를 설명하겠습니다.

원인

  1. 잘못된 서비스 이름: 연결 기술자에 지정된 서비스 이름이 잘못되었을 경우에 발생할 수 있습니다. 올바른 데이터베이스 서비스 이름을 사용해야 합니다.
  2. 리스너 구성 오류: 리스너 구성에 문제가 있을 경우에도 이 에러가 발생할 수 있습니다. 리스너가 데이터베이스 서비스를 인식하지 못하는 상황입니다.
  3. 리스너 동작 중지: 리스너가 동작 중지되어 있는 경우에도 이 에러가 발생할 수 있습니다. 리스너가 정상적으로 실행되고 있는지 확인해야 합니다.

에러가 발생하는 예시

다음은 잘못된 서비스 이름으로 인해 ORA-12514 에러가 발생하는 예시입니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class OracleConnectionExample {
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@localhost:1521:INVALID_SERVICE";
        String username = "your_username";
        String password = "your_password";

        try {
            Connection conn = DriverManager.getConnection(url, username, password);
            System.out.println("데이터베이스 연결 성공!");
            conn.close();
        } catch (SQLException e) {
            System.out.println("데이터베이스 연결 실패: " + e.getMessage());
        }
    }
}

에러 메시지: ORA-12514: TNS:리스너는 현재 연결 기술자에 요청된 서비스를 알지 못합니다.

해결방법

  1. 올바른 서비스 이름 사용: 연결 기술자에 올바른 데이터베이스 서비스 이름을 지정해야 합니다. 데이터베이스 관리자에게 올바른 서비스 이름을 확인하고 사용해야 합니다.
  2. 리스너 구성 확인: 리스너 구성에 문제가 있는지 확인해야 합니다. 리스너 설정 파일(tnsnames.ora 또는 listener.ora)을 확인하고 수정해야 할 수도 있습니다. 필요한 경우, 데이터베이스 관리자에게 도움을 요청해야 합니다.
  3. 리스너 실행 상태 확인: 리스너가 실행 중인지 확인해야 합니다. 리스너가 중지되어 있다면, 리스너를 시작해야 합니다. 데이터베이스 관리자 또는 시스템 관리자에게 리스너를 시작하도록 요청해야 합니다.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class OracleConnectionExample {
    public static void main(String[] args) {
        String url = "jdbc:oracle:thin:@localhost:1521:VALID_SERVICE";
        String username = "your_username";
        String password = "your_password";

        try {
            Connection conn = DriverManager.getConnection(url, username, password);
            System.out.println("데이터베이스 연결 성공!");
            conn.close();
        } catch (SQLException e) {
            System.out.println("데이터베이스 연결 실패: " + e.getMessage());
        }
    }
}

해당 예시에서는 url 변수에 올바른 데이터베이스 서비스 이름인 “VALID_SERVICE”를 사용하여 연결 기술자를 수정하였습니다. 이렇게 하면 ORA-12514 에러가 발생하지 않고 데이터베이스 연결이 성공합니다.

주의사항

실제 에러 메시지와 상황에 따라 원인과 해결 방법은 달라질 수 있습니다. 따라서, 발생한 에러 메시지를 정확히 확인하고 해당 상황에 맞는 해결 방법을 찾아야 합니다. 데이터베이스 관리자에게 도움을 요청하는 것도 좋은 방법입니다.

Leave a Comment