2016-09-16 5 views
0

oracle에서 (SQL 개발자와 함께) Materialized View를 작성하려고합니다.구체화 된보기를 생성 할 때 교착 상태가 발생합니다.

작은 테이블에서 테스트 한 결과 모든 것이 정상적으로 처리되었습니다.

지금 나는 매우 큰 테이블에 그 일을하고, 나는 다음과 같은 오류가 정교의 일부 시간 후 오전 : :

피할 수있는 방법이 있나요 "ORA-04020 감지 교착 고정하는 동안" 그것? 아니면 테이블이 너무 커서 많은 일을 할 수 없습니까?

+0

쿼리가 쿼리 실행 로그의 일부 통계와 함께 도움이 될 수 있습니다. – aviad

+0

미안하지만 경험이별로 없습니다 ... 쿼리 실행 로그 란 무엇입니까? 내가 어디에서 찾을 수 있니? – Maik

+0

http://www.toadworld.com/platforms/oracle/w/wiki/376.tracing-sql-statement-execution 또한 excution plan (https://docs.oracle.com/database/121/TGSQL/tgsql_genplan)을 사용하십시오. htm # TGSQL95114 – aviad

답변

1

데이터베이스의 다른 부분에는 쿼리를 작성하는 데 필요한 개체가 잠겨 있습니다.

어떤 개체를 시도해보십시오;

SELECT vo.object_id, obj.object_name, vo.oracle_username, vo.os_user_name, vo.session_id 
    FROM v$locked_object vo 
     INNER JOIN all_objects obj 
     ON vo.object_id = obj.object_id 

Materialized View에서 사용할 객체를 찾고 어떤 객체가 잠겨 있는지 확인해야합니다.

사용자에게 가서 무엇을 하든지 커밋하거나 롤백하도록 요청하십시오.

+0

힌트를 가져 주셔서 감사합니다. 오라클이 MV를 만들려고하는 모든 시간 동안 아무도 소스 테이블에서 작업 할 수 없다는 뜻입니까? 그것은 큰 문제 일 수 있습니다 ... – Maik

+0

그것은 테이블에 무슨 짓을하고 있는지에 달려 있습니다. – BriteSponge

+0

글쎄, 만약 내가 누군가가 내 테이블에 선택을하지 않으면, 그것을 잠그지 않는다고 가정하지만, 그는 테이블의 일부 행을 대신 업데이트한다. MV 생성에는 몇 시간이 걸릴 것이므로 큰 문제가 있습니다. 그 시간에는 누군가가 잠시 테이블을 잠글 것입니다. 내가 할 수 있는게 있습니까? – Maik