실수로 LOG4PLSQL을 잘못된 (즉, SYS) 스키마에 정리하려고합니다. QTAB_LOG
이라는 큐 테이블이 사라져야합니다. 나는 성공적으로 중지하고 관련 큐 떨어졌다 :DBMS_AQADM.DROP_QUEUE_TABLE을 사용하여 Oracle 대기열 테이블을 삭제할 수 없습니다.
call DBMS_AQADM.STOP_QUEUE('LOG_QUEUE');
call DBMS_AQADM.DROP_QUEUE('LOG_QUEUE');
을하지만 큐 테이블 자체를 삭제하는 것은 실패
SQL Error: ORA-00942: table or view does not exist
ORA-06512: at "SYS.DBMS_AQADM", line 240
ORA-06512: at line 1
00942. 00000 - "table or view does not exist"
그리고 물론
이 테이블을 삭제 :이 오류와call DBMS_AQADM.DROP_QUEUE_TABLE('QTAB_LOG');
정상적인 방법 :
drop table QTAB_LOG;
은 허용되지 않습니다.
SQL Error: ORA-24005: Inappropriate utilities used to perform DDL on AQ table LOG4PLSQL.QTAB_LOG
24005. 00000 - "must use DBMS_AQADM.DROP_QUEUE_TABLE to drop queue tables"
*Cause: An attempt was made to use the SQL command DROP TABLE for queue
tables, but DROP TABLE is not supported for queue tables.
*Action: Use the DBMS_AQADM.DROP_QUEUE_TABLE procedure instead of the
DROP TABLE command.
내가 뭘 잘못하고 있니?
예,'dbms_aqadm' 호출을 순서없이 실행하여 큐 테이블을 삭제하려는 시도가 여러 번 실패했습니다. 당신의 '변경 세션'제안은 나를 위해 11g에서 일했습니다. 매우 도움이됩니다. 감사합니다. –
어. 내 문제를 해결하기 위해 XE (10.2)를 다시 설치했다 : p'DROP USER CASCADE'를 시도하는 동안이 문제로 끝났다. 내 목표가 단순히 전체 사용자/스키마를 삭제하는 것이라면이 작업을 수행하는 더 좋은 방법이 있습니까? –
@ 메린 - 내가 아는 것은 아닙니다. 다시 작성하기 위해이 명령을 사용하여 사용자를 정기적으로 삭제하려면 하나의 솔루션은 대기열을 별도의 스키마로 분리하고 삭제 및 재 작성 될 스키마에 적절한 대기열/대기열 제거 권한을 부여하는 것입니다. – dpbradley