oracle 대기열을 중지 및 삭제할 수 없습니다. 코드Oracle 대기열을 중지 할 수 없습니다. 호출중인 프로그램 장치를 찾을 수 없습니다 : "SYS.DBMS_ASSERT"
BEGIN
DBMS_AQADM.STOP_QUEUE (
queue_name => 'TEST_QUEUE');
DBMS_AQADM.DROP_QUEUE(
queue_name => 'TEST_QUEUE');
END;
/
다음
는 다음과 같은 오류를 생성합니다
ERROR at line 1:
ORA-04068: existing state of packages has been discarded
ORA-04065: not executed, altered or dropped stored procedure "SYS.DBMS_ASSERT"
ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_ASSERT"
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 3365
ORA-06512: at "SYS.DBMS_AQADM", line 167
ORA-06512: at line 5
이것이 문제의 근본 원인이 될 수 있습니까?
는 업데이트 : 몇 우리의 스키마에 테이블 USER_TAB_PRIVS을 확인했고 나는 테이블 이름 'DBMS_ASSERT'에 그 기록을 볼 수 있습니다
SQL> SELECT * FROM USER_TAB_PRIVS where table_name='DBMS_ASSERT' and GRANTEE='TEST_USER'
...
GRANTEE=TEST_USER
OWNER=SYS
TABLE_NAME=DBMS_ASSERT
GRANTOR=SYS
PRIVILEGE=EXECUTE
GRANTABLE=NO
HIERARCHY=NO
SQL> SELECT * FROM USER_TAB_PRIVS where table_name='DBMS_AQADM' and GRANTEE='TEST_USER'
...
GRANTEE=TEST_USER
OWNER=SYS
TABLE_NAME=DBMS_AQADM
GRANTOR=SYSTEM
PRIVILEGE=EXECUTE
GRANTABLE=NO
HIERARCHY=NO
은 TEST_USER에와 스키마에 존재합니다.
사용자에게는 EXECUTE 권한이 있습니다.
그러나 우리는 코드에서 DBMS_ASSERT를 사용하지 않습니다. –
@Vladimir : 원본 메시지에 표시된 오류에 따라 DBMS_ASSERT가 DBMS_AQADM에 의해 호출됩니다. –
@Bob Jarvis : 위 업데이트를 참조하십시오. –