sales table to the times and customers tables. The advantage of creating this type of materialized view is that expensive joins will be precalculated.
To see if you've set OPEN_CURSORS high enough, monitor v$sesstat for the maximum opened cursors current. If your sessions are running close to the limit, up the value of OPEN_CURSORS.
SQL> select max(a.value) as highest_open_cur, p.value as max_open_cur 2> from v$sesstat a, v$statname b, v$parameter p 3> where a.statistic# = b.statistic# 4> and b.name = 'opened cursors current' 5> and p.name= 'open_cursors' 6> group by p.value; HIGHEST_OPEN_CUR MAX_OPEN_CUR ---------------- ------------ 1953 2500
A materialized view log must be present for each detail table and the ROWID column must be present in each materialized view log.
The rowids of all the detail tables must appear in the SELECT list of the materialized view query definition.
If there are no outer joins, you may have arbitrary selections and joins in the WHERE clause. However, if there are outer joins, the WHERE clause cannot have any selections. Further, if there are outer joins, all the joins must be connected by ANDs and must use the equality (=) operator.
If there are outer joins, unique constraints must exist on the join columns of the inner table. For example, if you are joining the fact table and a dimension table and the join is an outer join with the fact table being the outer table, there must exist unique constraints on the join columns of the dimension table.