한 서버에 다른 저장소와 SID 를 가진 두개의 데이터베이스가 있습니다.
만든 초반에는 아무런 문제가 없었습니다만 현재 materialized view 생성만 하려고 하면,
에러는 나지 않고, 계속 무한정 대기만 됩니다. mview 생성시 사용한 select 쿼리 결과도 아무런
이상없이 잘나오고, 두 데이터베이스 참조하는 select 쿼리도 이상이 없습니다만..
mview 생성이 계속 안되니 무슨 문제인지 도저히 모르겠습니다. 도움좀 주세요.
먼저, create materialized view 대신에, create table ... as select ...를 써서, 테이블이 생성되는가를 확인 해보셨는지 궁금합니다.
DB LINK에도 문제가 없고, 쿼리에도 문제가 없으면, 쿼리를 빼고난 mview script 나 mview 생성시 사용되는 모든 옵션들을 고수님들에게 보여 주시면, 문제 해결에 도움이 될 수 있읍니다.
create table 테이블이름 as select 쿼리 ~~ 를 써도 테이블이 생성이 되지
않습니다. select 쿼리 자체는 6초정도 걸리고, 결과값 개수는 약 6500개 정도
인데 10분이상 기다려봐도 만들어지지가 않네요 ..
그리고 mview 옵션의 경우 Oracle SQL Developer 툴의 구체화된 뷰 만들때
사용하는 기본 옵션을 주었습니다.
ORGANIZATION HEAP PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 109051904 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "NXTIS_ANS" BUILD IMMEDIATE USING INDEX REFRESH COMPLETE ON DEMAND USING DEFAULT LOCAL ROLLBACK SEGMENT USING ENFORCED CONSTRAINTS DISABLE QUERY REWRITE
옵션을 복사해보니 위와 같구요 ..
무슨문제인지 도저히 모르겠네요 .. 휴..
오라클 데이터베이스 버젼이 무엇인지 알려 주세요.
오라클은11g r2 enterprise 버젼입니다.
DB에 로그인 하여, "create table 테이블이름 as select 쿼리"가 돌아 갈때,
한번 더 DB에 로그인 하여,
SELECT * FROM V$SESSION;
위의 쿼리로 적당히 WHERE 조건 (예륻 들면, username, logon_time, osuser, 에 대한 조건) 을 주어 "create table ...." 를 실행 하고 있는 sid를 찾으세요.
그 다음에,
SELECT * FROM V$SESSION_WAIT = sid;
를 사용하여 무슨 event 에 대해 (무한정) 대기를 하는 지 알아보세요.
알려주신대로 CREATE TABLE ~~ AS SELECT ~~ 문을 실행하고
그것을 실행하는 SID 를 찾아서 EVENT 를 보니
latch: cache buffers chains 라고 나오더군요 .
대략 구글링을 해보니, 쿼리의 튜닝이 필요하다고 하는데..