Oracle 11gR2에서 구체화 된 뷰를 생성 한 동일한 사용자로 삭제할 수없는 이유는 무엇입니까?


11

DI_TEST_AL사용자 와 함께 구체화 된 뷰를 만들었 습니다 MY_MVIEW. 이름을 지정하겠습니다 . USER_OBJECTS테이블에로 표시되고 MATERIALIZED VIEW삭제하려고하면 성공 메시지가 표시되지만 개체가 여전히 있습니다. 실제로 다시 만들려고하면 "object already exist"와 같은 오류가 발생합니다.

다른 스키마에 속하는 동일한 이름의 테이블이 있음을 알았습니다. 나는 그것이 문제를 일으키지 않아야한다고 생각하지만, 언급하는 것처럼 느꼈다.

다음은 SQL * Plus 출력입니다.

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011

SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';  
OBJECT_NAME OBJECT_TYPE       OWNER
----------- ----------------- ----------
MY_MVIEW    MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW    TABLE             DIDEV11

SQL> DROP MATERIALIZED VIEW MY_MVIEW;
Materialized view dropped.

SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW';
OBJECT_NAME OBJECT_TYPE       OWNER
----------- ----------------- ----------
MY_MVIEW    MATERIALIZED VIEW DI_TEST_AL
MY_MVIEW    TABLE             DIDEV11

SQL> 

내 권한을 두 번 확인 DROP ALL MATERIALIZED VIEWS했으며 DI_TEST_AL사용자 에게 부여되었습니다 .


무엇 DO_OPP_SEARCH_MVIEW입니까?
잭 topanswers.xyz 시도라고

MY_MVIEW 구체화 된 뷰를 삭제하려면 다음과 같이 드롭하십시오. DROP MATERIALIZED VIEW MY_MVIEW. ATM, 당신은 다른 무언가를 떨어 뜨리고 있으며, 그것은 중요 할 수 있습니다 ...
Kerri Shotts

1
MY_MVIEW를 삭제하려고하는데, 간결성을 위해 예제에서 이름을 변경했지만 그 비트를 잊어 버렸습니다 ... 어떻게 디버깅합니까? 오라클은 왜 떨어졌지만 그렇지 않다고 말합니까? 건배
basilikode

지원 계약이 있습니까? 당신이보고있는 것을 일으키는 10g의 버그가 있습니다. 11gR2에 대해 복제하려고 시도했지만 실패했습니다. 아마도 초기 테이블과 MV에서 다른 사람들이 복제하려고 시도 할 수있는 완전한 스크립트를 제공 할 것입니다.
Matthew Watson

STATUS에 선택 을 포함 시키십시오 ALL_OBJECTS. 또한이 문제가 있으며 구체화 된보기의 상태는 INVALID입니다.
awe

답변:


10

sysdba로 연결하고 MV에 대한 dba_summaries에 전체가 있는지 확인하십시오. 달리면

drop summary <OWNER>.<MV_NAME>;`

덕분에 ... 구체화 된 뷰를 방지 한 것을, 짝을 완전히 제거 할 수
basilikode

이 정확한 문제가 있으며 MV가에 나열되어 dba_summaries있습니다. 문제는 실행하려고 할 때 ORA-00950 ... 잘못된 DROP 옵션DROP SUMMARY MY_OWNER.MY_MATERIALIZED_VIEW; 오류가 발생 한다는 것 입니다.
awe

@awe는 데이터베이스를 / sysdba로 연결하려고합니다. 그런 다음 DROP SUMMARY 명령을 사용할 수 있습니다.
Atilla Ozgur

0

구체화 된 뷰를 삭제하려고 할 때 비슷한 문제가 발생했습니다. 그것을 만들려고하면 이름이 이미 존재합니다. 이것은 Oracle의 버그입니다.

보기를 삭제하기 전에 all_objects 테이블에서 조회하십시오.

SQL : SELECT * FROM ALL_OBJECTS WHERE OBJECT_NAME = 'MY_MVIEW'; ojbect_type = TABLE 및 Object_type = MATERIALIZED VIEW라는 두 개의 레코드를 반환해야합니다.

그러나 Object_type = Table 인 레코드가 하나만 표시되면 데이터베이스에서 해당 테이블을 삭제하십시오.

드롭 테이블 MY_MVIEW;

구체화 된 뷰를 다시 만들어보십시오. 작동해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.