现在的位置: 首页 > 综合 > 正文

使用 on prebuilt table 创建物化视图

2013年04月27日 ⁄ 综合 ⁄ 共 1259字 ⁄ 字号 评论关闭
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

创建物化视图
SQL> create materialized view emp as select * from scott.emp;

Materialized view created.

SQL> select object_name,object_type from user_objects where object_name='EMP';

OBJECT_NAME OBJECT_TYPE
------------------
EMP TABLE
EMP UNDEFINED

删除物化视图
SQL> drop materialized view emp;
Materialized view dropped.
以上2个对象都被删除了,包括UNDEFINED的EMP
SQL> select object_name,object_type from user_objects where object_name='EMP';
No row selected。
先手工创建表
SQL> create table emp as select * from scott.emp;
Table created.
使用on prebuilt table注册新的物化视图,注意view名称必须和表名称一样。
SQL> create materialized view emp on prebuilt table as select * from scott.emp;

Materialized view created.

SQL> select object_name,object_type from user_objects where object_name='EMP';

OBJECT_NAME OBJECT_TYPE
------------------
EMP TABLE
EMP UNDEFINED

表emp已经作为物化视图了。
SQL> delete from emp;
delete from emp
*
ERROR at line 1:
ORA-01732: data manipulation operation not legal on this view

删除物化视图后,原来的表未被删除。 使用on prebuilt table创建的物化视图被删除后,原来的表不被删除。
SQL> drop materialized view emp;
Materialized view dropped.

SQL> select object_name,object_type from user_objects where object_name='EMP';

OBJECT_NAME OBJECT_TYPE
------------------
EMP TABLE

因此使用 on prebuilt table 创建物化视图,更灵活,安全。
同样可以使用on prebuilt table 创建快照,这样减少了快照重新建立给数据增量同步带来的时间成本。
 

抱歉!评论已关闭.