Oracle Database에서 폴링 기반 데이터 변경 메시지 수신 지원
TheOracle Database 어댑터를 사용하면 클라이언트 프로그램이 Oracle 데이터베이스에서 Oracle 데이터베이스에 저장된 데이터의 변경 내용을 알리는 메시지를 받을 수 있습니다. Oracle Database 어댑터는 어댑터가 패키지 내에서 지정된 SELECT 쿼리, 저장 프로시저, 함수 또는 프로시저 또는 함수를 실행하고, 데이터를 검색하고, 정기적으로 클라이언트에 결과를 제공하는 "폴링 기반" 메시지 수신을 지원합니다. 이를 사용하도록 설정하기 위해 Oracle 데이터베이스 어댑터는 POLLINGSTMT 작업을 노출합니다. 또한 패키지 내의 모든 저장 프로시저, 함수 및 프로시저 및 함수는 폴링을 위한 인바운드 작업으로 노출됩니다.
어댑터는 Oracle 데이터베이스를 폴링하는 두 가지 방법을 제공합니다.
SELECT 문 사용. Oracle 데이터베이스의 테이블과 뷰를 폴링하는 간단한 SELECT 문을 지정할 수 있습니다. 어댑터는 지정된 간격으로 SELECT 문을 실행하고 결과를 어댑터 클라이언트에 반환합니다.
패키지 내의 저장 프로시저, 함수 또는 프로시저 또는 함수 사용. 패키지 내에서 저장 프로시저, 함수 또는 프로시저 또는 함수를 지정하여 Oracle 데이터베이스를 폴링할 수 있습니다. 어댑터는 지정된 간격으로 요청 메시지를 실행하고 결과를 어댑터 클라이언트에 반환합니다.
폴링 작업 워크플로
Oracle Database 어댑터를 사용하는 일반적인 폴링 작업에는 다음이 포함됩니다.
어댑터 클라이언트는 InboundOperationType 바인딩 속성에서 폴링을 인바운드 작업으로 지정해야 합니다. 이 바인딩 속성의 기본값은 Polling입니다.
어댑터 클라이언트는 PolledDataAvailableStatement 바인딩 속성에 대한 SELECT 문을 지정하여 폴링에 사용할 수 있는 데이터가 있는지 여부를 결정해야 합니다. 이 문을 실행할 때 반환된 결과 집합의 첫 번째 행에 양의 정수 값이 포함된 경우 폴링에 사용할 수 있는 날짜가 있습니다. 기본적으로 이 바인딩 속성의 값은 로
Select 1 FROM DUAL
설정됩니다. 즉, 폴링되는 테이블에 데이터가 있는지 여부에 관계없이 어댑터가 폴링을 계속해야 합니다.어댑터 클라이언트는 PolledDataAvailableStatement 바인딩 속성에 지정된 문이 실행되는 간격(초)을 정의하려면 PollingInterval 바인딩 속성에 대한 폴링 간격을 지정해야 합니다. 모든 폴링 간격이 끝나면 폴링된 데이터 사용 가능한 문이 실행되고 결과 집합이 반환됩니다.
어댑터 클라이언트는 POLLINGStatement 바인딩 속성에 대한 SELECT 문 또는 저장 프로시저를 지정해야 합니다.
테이블 또는 뷰를 폴링하려면 이 바인딩 속성에서 SELECT 쿼리를 지정해야 합니다.
패키지 내에서 저장 프로시저, 함수 또는 프로시저 또는 함수를 사용하여 폴링하려는 경우 이 바인딩 속성에서 해당 작업에 대한 전체 요청 메시지를 지정해야 합니다.
PollingStatement 바인딩 속성의 문은 1단계의 PolledDataAvailableStatement 바인딩 속성에 의해 결정되는 폴링에 사용할 수 있는 데이터가 있는 경우에만 실행됩니다.
어댑터 클라이언트는 PollingAction 바인딩 속성에서 폴링 작업에 대한 작업을 지정해야 합니다. 특정 작업에 대한 폴링 작업은 어댑터 서비스 사용 추가 기능을 사용하여 작업에 대해 생성된 메타데이터에서 결정됩니다.
참고
PollingStatement 바인딩 속성에서 SELECT 문을 사용하여 테이블 또는 뷰를 폴링하는 경우 PollingAction 바인딩 속성에 대한 값을 지정할 필요가 없습니다. 이 경우 기본값인 Null이 전달됩니다.
어댑터 클라이언트는 PollWhileDataFound 바인딩 속성을 사용하여 폴링 간격을 무시하고 사용 가능한 경우 데이터를 지속적으로 폴링할 수 있습니다.
중요
PollWhileDataFound 바인딩 속성의 값을 True로 설정하면 어댑터 클라이언트는 Oracle의 데이터를 지속적으로 폴링하고 프로세스에서 Oracle 데이터베이스에 대한 연결을 루프로 열고 닫습니다. ODP.NET 연결을 여는 속도가 닫히는 연결보다 크면 일정 시간 후에 연결이 소진되고 예외가 throw됩니다. 해결 방법으로 UseOracleConnectionPool 의 값이 True로 설정되어 있고 IncrPoolSize 바인딩 속성에 적절한 값이 언급되어 어댑터 클라이언트에서 열 수 있는 연결 수를 제어해야 합니다.
어댑터 클라이언트는 PostPollStatement 바인딩 속성에 대해 폴링 후 문인 Oracle PL/SQL 블록을 지정할 수 있습니다. 이 바인딩 속성에 지정된 문은 PollingStatement 바인딩 속성에 지정된 문이 실행된 후에 실행됩니다.
어댑터는 폴링 문과 폴링 후 문을 트랜잭션에 래핑하고 트랜잭션 시간 제한 값은 PollingInterval 바인딩 속성에 지정된 값으로 설정됩니다. 따라서 들어오는 메시지를 처리하고 회신을 보내는 데 필요한 시간보다 크거나 같은 시간 제한 값을 지정하는 것이 중요합니다. 클라이언트 프로그램에서 메시지를 사용하거나 폴링 후 쿼리를 실행하는 데 걸리는 시간이 시간 제한 값보다 많으면 트랜잭션이 롤백됩니다. 소요 시간이 시간 제한 값보다 작으면 어댑터는 다음 설문 조사를 수행하기 전에 트랜잭션을 커밋하고 폴링의 남은 시간 동안 "절전 모드"를 설정합니다.
어댑터는 Oracle 데이터베이스에서 들어오는 빈 폴링 응답을 표시하지 않습니다.
폴링과 알림의 차이점
폴링 및 알림은 모두 인바운드 작업이며 Oracle 데이터베이스의 데이터 변경에 대해 어댑터 클라이언트에 알리지만 다음 표에서는 둘 사이의 몇 가지 차이점을 보여 줍니다. 다음 차이점은 요구 사항에 따라 작업을 결정하는 데 도움이 됩니다.
폴링 | 알림 |
---|---|
폴링은 Oracle 데이터베이스 어댑터에서 지원하는 모든 Oracle 데이터베이스 버전에 대해 지원됩니다. | 알림은 Oracle 데이터베이스 버전 10.2 이상에서만 지원됩니다. |
폴링 간격을 구성하여 정기적으로 폴링에 사용할 수 있는 데이터를 검사 또는 데이터를 사용할 수 있는 시점과 즉시 구성할 수 있습니다. 팁: 폴링은 데이터 변경이 지속적으로 발생하는 시나리오에서 더 나은 처리량을 제공할 수 있으며, 각 변경 내용에 대한 알림을 언제와 같이 알리고 싶지 않을 수 있습니다. 대신 마지막 변경 알림 이후 발생한 모든 변경 내용에 대한 알림을 받을 폴링 간격을 지정합니다. | 데이터 변경 알림은 항상 즉각적입니다. |
폴링은 어댑터에 의해 시작됩니다. 어댑터는 SQL 문을 실행하여 데이터를 폴링에 사용할 수 있는지 여부를 확인하고 폴링에 사용할 수 있는 데이터가 있는 경우 폴링 문을 실행하여 폴링을 시작합니다. | 알림은 Oracle 데이터베이스에서 시작됩니다. 어댑터에서 발급한 알림 문은 문의 결과 집합이 변경된 경우 데이터베이스에 알림을 시작하도록 지시합니다. 알림은 Oracle 데이터베이스의 기능입니다. |
폴링 문을 사용하여 Oracle 데이터베이스의 데이터를 읽거나 업데이트할 수 있습니다. | 알림 문을 사용하여 Oracle 데이터베이스의 데이터만 읽을 수 있습니다. |
폴링은 변경된 실제 데이터를 알려줍니다. | 알림은 삽입, 업데이트 및 삭제와 같은 데이터의 변경 유형에 대해서만 알릴 수 있습니다. |
조건부 액세스에 대한 자세한 내용은
어댑터가 Oracle 데이터베이스에서 폴링 기반 메시지 수신을 지원하는 방법은 폴링 기반 데이터 변경 메시지 수신을 참조하세요.
BizTalk Server 사용하여 Oracle 데이터베이스에서 폴링 기반 메시지 수신은 Biztalk Server를 사용하여 Oracle Database에서 함수 및 프로시저 호출을 참조하세요.
WCF 서비스 모델을 사용하여 Oracle 데이터베이스에서 폴링 기반 메시지 수신은 WCF 채널 모델을 사용하여 SQL Server 폴링 기반 데이터 변경 메시지 받기를 참조하세요.
WCF 채널 모델을 사용하여 Oracle 데이터베이스에서 폴링 기반 메시지 수신은 WCF 채널 모델을 사용하여 SQL Server 폴링 기반 데이터 변경 메시지 받기를 참조하세요.
폴링 쿼리를 수행하기 위한 메시지 구조 및 SOAP 작업은 폴링 작업에 대한 메시지 스키마를 참조하세요.