ITPub博客

首页 > IT基础架构 > 网络安全 > about materialized view and long(turn)

about materialized view and long(turn)

原创 网络安全 作者:xlfsy 时间:2010-10-22 15:09:32 0 删除 编辑

对于LONG类型的限制很多,不过对于高级复制来说,很多的LONG类型相关的问题都是可以解决的。

对于多主复制,包含LONG类型相对比较麻烦,需要首先修改表结构,将LONG类型转变为LOB类型。对于物化视图,就相对简单很多,不需要修改基表的数据类型。

首先,如果不需要同步LONG类型的字段,那么不需要进行任何的修改,只有在物化视图的创建过程中不包括LONG字段就可以了。

如果需要包含LONG字段,那么只需要在创建物化视图的时候对LONG类型执行TO_LOB操作,这样就可以顺利创建物化视图。

当然,建立的物化视图包含的是LOB字段。

具体例子如下:

SQL> CREATE TABLE TEST_LONG (ID NUMBER PRIMARY KEY, LONG_COL LONG);

表已创建。

SQL> CREATE MATERIALIZED VIEW LOG ON TEST_LONG;

实体化视图日志已创建。

SQL> CREATE MATERIALIZED VIEW MV_TEST_LONG REFRESH FAST AS SELECT * FROM TEST_LONG;
CREATE MATERIALIZED VIEW MV_TEST_LONG REFRESH FAST AS SELECT * FROM TEST_LONG
*
第 1 行出现错误:
ORA-00997:
非法使用 LONG 数据类型


SQL> CREATE MATERIALIZED VIEW MV_TEST_LONG REFRESH FAST AS SELECT ID FROM TEST_LONG;

实体化视图已创建。

SQL> DROP MATERIALIZED VIEW MV_TEST_LONG;

实体化视图已删除。

SQL> CREATE MATERIALIZED VIEW MV_TEST_LONG REFRESH FAST AS SELECT ID, TO_LOB(LONG_COL) LONG_COL
2 FROM TEST_LONG;

实体化视图已创建。

SQL> INSERT INTO TEST_LONG VALUES (1, 'ABCDEFG');

已创建 1 行。

SQL> SELECT * FROM TEST_LONG;

ID LONG_COL
---------- ------------------------------------------------------------
1 ABCDEFG

SQL> COMMIT;

提交完成。

SQL> EXEC DBMS_MVIEW.REFRESH('MV_TEST_LONG')

PL/SQL 过程已成功完成。

SQL> SELECT * FROM MV_TEST_LONG;

ID LONG_COL
---------- ------------------------------------------------------------
1 ABCDEFG

SQL> UPDATE TEST_LONG SET LONG_COL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' WHERE ID = 1;

已更新 1 行。

SQL> COMMIT;

提交完成。

SQL> EXEC DBMS_MVIEW.REFRESH('MV_TEST_LONG');

PL/SQL 过程已成功完成。

SQL> SELECT * FROM MV_TEST_LONG;

ID LONG_COL
---------- ------------------------------------------------------------
1 ABCDEFGHIJKLMNOPQRSTUVWXYZ

turn from http://yangtingkun.itpub.net/post/468/139790

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14844492/viewspace-1040226/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-02-05

  • 博文量
    31
  • 访问量
    341066