Materialized Views in Oracle
Materialized Views in OracleA 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 ViewsThe following statement creates the primary-key materialized view on the table emp located on a remote database.SQL> CREATE MATERIALIZED VIEW mv_emp_pkREFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48WITH 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 ViewsThe 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 ViewsThe following statement creates a subquery materialized view based on the emp and dept tables located on the remote database:SQL> CREATE MATERIALIZED VIEW mv_empdeptAS SELECT * FROM emp@remote_db eWHERE EXISTS(SELECT * FROM dept@remote_db dWHERE e.dept_no = d.dept_no)
No comments:
Post a Comment