在包含LONG类型的表上建立物化视图

对于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 过程已成功完成。 www.ixdba.net 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值