Я хотел бы настроить распространение в Oracle AQ (11).
Я хотел бы перейти из очереди «Q» в таблице очереди «QT» в очередь «QD» в таблице очереди «QTD».
Это моя установка:
DECLARE
subscriber sys.aq$_agent;
BEGIN
DBMS_AQADM.CREATE_QUEUE_TABLE(queue_table=>'QT',multiple_consumers=>TRUE,queue_payload_type=>'RAW');
DBMS_AQADM.CREATE_QUEUE_TABLE(queue_table=>'QTD',queue_payload_type=>'RAW');
DBMS_AQADM.CREATE_QUEUE(queue_name => 'Q', queue_table => 'QT');
DBMS_AQADM.CREATE_QUEUE(queue_name => 'QD', queue_table => 'QTD');
DBMS_AQADM.START_QUEUE(queue_name => 'Q');
DBMS_AQADM.START_QUEUE(queue_name => 'QD');
subscriber := sys.aq$_agent('SUB', 'QD', NULL);
DBMS_AQADM.ADD_SUBSCRIBER(queue_name => 'Q',subscriber => subscriber, queue_to_queue => TRUE);
DBMS_AQADM.SCHEDULE_PROPAGATION(queue_name => 'Q');
END;
/
Я отправляю сообщение из клиента Java aqapi. Сообщение отправляется без ошибок, я вижу его в очереди "Q":
select * from QT;
"Q_NAME" "MSGID" "CORRID" "PRIORITY" "STATE" "DELAY" "EXPIRATION" "TIME_MANAGER_INFO" "LOCAL_ORDER_NO" "CHAIN_NO" "CSCN" "DSCN" "ENQ_TIME" "ENQ_UID" "ENQ_TID" "DEQ_TIME" "DEQ_UID" "DEQ_TID" "RETRY_COUNT" "EXCEPTION_QSCHEMA" "EXCEPTION_QUEUE" "STEP_NO" "RECIPIENT_KEY" "DEQUEUE_MSGID" "SENDER_NAME" "SENDER_ADDRESS" "SENDER_PROTOCOL" "USER_DATA" "USER_PROP"
"Q" FC914BFDC7489ECEE040010A393F3DD1 "" 1 0 0 0 0 0 24-JUN-14 07.56.27.258348000 AM "RISKOPALL" "9.5.283837" "" "" 0 "" "" 0 0 "" "" 0 (BLOB)
Но я не вижу его в очереди назначения "QD":
select * from QTD;
Показывает пустой результат.
Вы хоть представляете, что с ним не так?
Я уже пробовал ENABLE_PROPAGATION_SCHEDULE, но он уже включен после SCHEDULE_PROPAGATION. Это приводит к ошибке.
Я проверил эту страницу: http://docs.oracle.com/cd/B28359_01/server.111/b28420/aq_trbl.htm, но я не могу найти представление DBA_QUEUE_SCHEDULES. У меня есть права администратора. Где мне его искать? Как устранить неполадки распространения?
Любая помощь очень ценится!