사실 저는 DBA가 아닙니다. 시작부터 지금까지 쭉 ORACLE DB 엔지니어로 지내고 있습니다. 물론 엔지니어라고해서 Objects에 대해서 몰라도 되는 것은 절대적으로 아닙니다. 하지만 엔지니어에게 Object는 사실 처음부터 접하기는 힘든 것이 사실이긴합니다. 이번 경우에도 as-is 서버와 to-be 서버로 특정 Table의 동기화를 특정 Product 없이, 예를 들면 OGG(Oracle Golden Gate)나 쉐어플렉스를 사용하지 않고 동기화할 필요가 생겼습니다.
그래서 사용하려는 방법이 Materialized View를 통해 Table 실시간 동기화를 하려고합니다. 앞으로 몇일간은 Materialized View와 Scheduler Job을 통한 동기화에 대한 내용을 다루도록 하겠습니다.
Intro |
- Create materialized view 구문을 사용해 Mview를 만듭니다. Master Table이나 Master Database의 Table을 한 Table로 저장하며, 만들어진 그 Table을 조회하도록 합니다.
- 하나의 데이터베이스에서 또 다른 데이터베이스로의 데이터 복제를 위함입니다.
- DW 환경에 사용되는 빈도가 높고 비용이 많이 드는 Query의 수행속도를 향상 시키기 위함입니다.
Materialized View의 특징 |
- MView를 만들어두면 QUERY의 수행속도 증가
- SQL 응용프로그램에서 MView 사용시 DBA는 프로그램에 영향을 끼치지 않고 언제든지 생성 및 제거 가능
- MView는 실행의 결과 행과 뷰 정의 모두 저장이 되고, 실행 결과 행으로 만들어진 테이블은 일정 공간을 차지
- MView관련 기초 테이블을 변경하면, MView로 생성된 Summary 테이블도 변경
Materialized View와 일반 View의 차이점 |
- 가장 큰 차이점은 MView의 결과값은 물리적으로 존재한다는 것이며, 일반 View의 결과값은 물리적으로 존재하지 않습니다. 즉, dba_segments dictionary view에서 조회 시 MView는 나오지만 일반 View는 나오지 않습니다.
- MView는 MView를 생성할때의 Query로 물리적으로 이미 데이타가 생성되어 있기 때문에 조회 속도가 빠릅니다. 하지만 View는 단지 쿼리정보가 딕셔너리에 저장되어 있고 사용될 때 그 SQL이 다시 실행되는 것이기 때문에 MView보다 상대적으로 느립니다. MView로 생성된 결과값이 일반 View로 조회하는 Data의 결과값 보다 훨씬 적은 Row를 조회하게 된다는 것이죠.
Additional Topics |
Prerequisites |
create materialized view, create table or create any table 권한이 부여되야 함. 또한 소유가 아닌 다른 Master table에 access할 경우 그 object에 대한 select나 select any table 권한이 필요.
create any materialized view 권한 필요. create table 권한, select, select any table 권한 필요.
create_materialized_view::=
Create materialized view Syntax ⓒ docs.oracle.com
· BUILD clause immediate : 기본값으로 생성과 함께 소스테이블의 데이터도 생성 deferred : mview는 생성이되지만 데이터는 추후 refresh 시에 생성 · REFRESH clause : + 시기 + 방식 · 시기 on commit : 소스테이블에 commit이 생길때마다 refresh on demand : dbms_mview 패키지를 사용할 때 refresh · 방식 complet : 전체 refresh fast : 변경분에 대한 refresh force : fast 가능 여부 판단 후 만족하지 않을 경우 complet 적용(Default) never : refresh하지 않음 |
'Run? Learn! > Oracle - Objects' 카테고리의 다른 글
Oracle]MView / DB link를 사용한 테이블 동기화 (0) | 2017.09.28 |
---|