2016-07-29 2 views
0

응용 프로그램에서 JDBC를 사용하여 Oracle 데이터베이스에 연결했습니다. 우리가 첨부했습니다. 문제는 콜백/수신기를 통해 데이터베이스가 종료되었음을 식별하는 것입니다.JDBC에서 Oracle 데이터베이스 종료를 감지하는 방법은 무엇입니까?

현재, 우리는 다음과 같은 리스너가 첨부 : 데이터베이스가 종료 될 때이 이벤트의

Connection eventListener = new ConnectionEventListener() { 
    @Override 
    public void connectionErrorOccurred(ConnectionEvent event){ 
     // log - connection error 
    } 

    @Override 
    public void connectionClosed(ConnectionEvent event) { 
     // log - connection closed 
    } 
} 

없음이 트리거되지 않습니다. 데이터베이스 종료을 감지하고 데이터베이스가를 시작하고 사용자에게 알릴 수있는 메커니즘을 가지고 있고, 데이터베이스 (구성)에 대한 중 여론 조사 또는 서비스 (응용 프로그램) 중단에

생각입니다.

+0

무슨 뜻입니까? 연결에 실패하면 아마 db가 종료되거나 뭔가가 있습니다. –

+0

또한 다음과 같이 db를 종료하지 않는 동안 세션을 종료 할 수있는 방법이 있습니다. 시스템을 죽이십시오. ', ' –

답변

0

문제를 올바르게 지정할 수 없습니다. 당신은 연결을 얻거나 연결할 수 없으며 이유 (연결할 수 없거나 db shutdown 등)를 지정할 수 없기 때문에이 모든 경우에 동일한 예외가 발생합니다.

+0

나는 동의합니다. 데이터베이스가 종료되었는지 여부를 확인할 수있는 다른 방법이 있습니까? 내 연결에 문제가있는 것이 아닙니다. 나는 (내가 알고있는 바에 따르면) 내가 통제 할 수있는 모든 것이 데이터베이스와의 관계에 있다는 것을 이해한다. –

+0

@harshchiki 내가 아는 바에 따르면 무엇이 잘못되었는지 정의 할 방법이 없습니다. 나는 SQL Plus와 캐시 된 코드 예외를 실행하려고했지만 동일한 코드 예외에 대한 몇 가지 다른 문제에 대해서는 신을 갖고있다. – quento

1

요청이 완전히 정의되지 않은 것 같습니다. 예를 들어 RAC 클러스터의 경우 ONS 메시지에 응답하도록 응용 프로그램을 구성 할 수 있으며 응용 프로그램이 모든 연결을 다른 데이터베이스 노드로 안전하게 마이그레이션 할 수 있습니다. 따라서 하나의 데이터베이스 노드가 다운 된 경우에도 응용 프로그램은 계속 원활하게 작동 할 수 있습니다.

JBOSS 소스 코드에 대한 간략한 개요는 exception sorter라는 클래스가 있으며 여기에는 다양한 유용한 Oracle 오류 코드가 나와 있습니다. example에 대해,하지만 현재 JBOSS 코드베이스는 더 긴 목록을 가지고 있다고 생각합니다.

Here은 내가 수집 한 오류 코드 목록입니다. 모든 오류 코드는 (어떤 이유로) 데이터베이스에 연결할 수없는 상황을 나타냅니다.

추신 : DCD (Dead connection detection)는 다른 주제입니다.

0

쿼리가 실패하면 트랜잭션을 필요로하므로 오류가 발생하여 연결을 확인할 수 있습니다.

관련 문제