A materialized view is a database object that contains the
results of a query. They are local copies of data located remotely, or are used
to create summary tables based on aggregations of a table’s data. Materialized
views, which store data based on remote tables are also, know as snapshots.
A
materialized view can query tables, views, and other materialized views. Collectively
these are called master tables (a replication term) or detail tables (a data
warehouse term).
For
replication purposes, materialized views allow you to maintain copies of remote
data on your local node. These copies are read-only. If you want to update the
local copies, you have to use the Advanced Replication feature. You can select
data from a materialized view as you would from a table or view.
For
data warehousing purposes, the materialized views commonly created are
aggregate views, single-table aggregate views, and join views.
In
this article, we shall see how to create a Materialized View and discuss
Refresh Option of the view.
In
replication environments, the materialized views commonly created are primary
key, rowid, and subquery materialized views.
Primary
Key Materialized Views
The
following statement creates the primary-key materialized view on the table emp located on a remote
database.
SQL7gt; CREATE MATERIALIZED VIEW mv_emp_pk
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1/48
WITH PRIMARY KEY
AS SELECT * FROM emp@remote_db;
Materialized view created.
Note: When you create a materialized view
using the FAST option you will need to create a view log on the master
tables(s) as shown below:
SQL> CREATE MATERIALIZED VIEW LOG ON emp;
Materialized view log created.
Rowid
Materialized Views
The
following statement creates the rowid materialized view on table emp located on a remote
database:
SQL> CREATE MATERIALIZED VIEW mv_emp_rowid
REFRESH WITH ROWID
AS SELECT * FROM emp@remote_db;
Materialized view log created.
Subquery
Materialized Views
The
following statement creates a subquery materialized view based on the emp and
dept tables located on the remote
database:
SQL> CREATE MATERIALIZED VIEW mv_empdept
AS SELECT * FROM emp@remote_db e
WHERE EXISTS
(SELECT * FROM dept@remote_db d
WHERE e.dept_no = d.dept_no)
Next
Back to DBAsupport.com