2010-11-23 8 views
17

Oracle AQ를 처음 테스트했습니다. 내가 작성한 큐에 2000 행의 테스트 삽입을 작성했습니다.Oracle AQ에서 큐를 지우는 방법

이제이를 정리하고 싶습니다. 나가 가르치는 때, 나는 달이기 위하여 만기 시간을 두었다. 오래 기다릴 수 없어. 그리고 난 그냥 큐 테이블에서 삭제해야한다고 생각하지 않습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+1

이 솔루션은 바로 여기에 예를 들면 다음과 같습니다


솔루션은

는 SQL은 다음과 같이 보인다. Oracle docs를 좋아하는 사람들 http://docs.oracle.com/cd/B19306_01/server.102/b14257/aq_admin.htm#BAJFEDGG 예제 8-17 및 8-18 "대기열 테이블의 모든 메시지 제거" – ono2012

답변

19

DBMS_aqadm.purge_queue_table 절차를 사용할 수 있습니다. http://psoug.org/reference/dbms_aqadm.html :

-- purge queue 
DECLARE 
po_t dbms_aqadm.aq$_purge_options_t; 
BEGIN 
    dbms_aqadm.purge_queue_table('MY_QUEUE_TABLE', NULL, po_t); 
END; 
+0

완벽하게 일했습니다! 고마워. –

2

대기열 테이블에서 삭제 만하면됩니다. 어떤 경우

오라클 스트림 AQ는, 큐 테이블 또는 관련 인덱스 구성 테이블 (에 이었지만)에 데이터 조작 언어 (DML) 작업을 지원하지 않습니다 신경 쓰지

, 그냥 확인 및 that's not right했다. 큐 테이블을 수정하는 유일한 방법은 제공된 API를 사용하는 것입니다. DML 작업이 수행되면 큐 테이블과 IOT가 일치하지 않아 효과적으로 망가질 수 있습니다.


그래서, 당신은 오프 항목을 끌어 약간의 PL/SQL 루틴을 만들어야합니다.

dbms_aq 패키지를 사용하십시오. 문서에서 예제를 확인하십시오 : Dequeuing Messages. 아래로 스크롤하면 전체 예제가 나타납니다.

+0

큐 테이블에서 삭제할 수 없다는 것을 알고있었습니다. 큐에서 메시지를 제거하는 데 사용하는 API는 무엇입니까? –