Oracle Materialized View on prebuilt table

Jika membuat materialized dari sebuah table CTAS dengan menggunakan prebuilt table, jika kita melakukan select dari table master, maka query rewrite terkadang tidak berjalan.

Misalnya kita menggunakan table master employees dari schema sample Oracle. Kemudian kita membuat sebuah CTAS
create table emp_sum as select department_id, min (salary) minimal, max (salary) maximal from employees group by department_id;

Kemudian kita membuat sebuah materialized view seperti berikut
create materialized view emp_sum
on prebuilt table
refresh force on demand
enable query rewrite as
select department_id, min (salary) minimal, max (salary) maximal from employees group by department_id;

Setelah itu kita menjalankan perintah select sebagai berikut
select department_id, min (salary) minimal, max (salary) maximal from employees group by department_id;

Jika kita cek di sqltrace terlihat bahwa tidak terjadi query rewrite dan query tetap berjalan di table employee

Kita bisa melakukan pengecekan kenapa query rewrite tidak berjalan dengan menggunakan explain rewrite sebagai berikut
@$ORACLE_HOME/rdbms/admin/utlxrw.sql
exec DBMS_MVIEW.EXPLAIN_REWRITE (‘
select department_id, min (salary) minimal, max (salary) maximal from employees group by department_id;’)

SELECT message FROM rewrite_table ORDER BY sequence;

ternyata di komputer saya muncul error
QSM-01150: query did not rewrite
QSM-01029: materialized view, emp_sum, is stale in ENFORCED integrity mode

Untuk menyelesaikan masalah ini bisa dilakukan dengan melakukan refresh di materialized view atau mengubah parameter query_rewrite_integrity sebagai berikut
ALTER SESSION QUERY_REWRITE_INTEGRITY = STALE TOLERATED´╗┐

Semoga bermanfaat

This entry was posted in Oracle Database, Software, Tips n trick and tagged , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>