Oracle11g新特性:在线操作功能增强-Oracle11g在线重定义功能对物化视图... (转载)
来源:互联网 发布:手机金属探测器软件 编辑:程序博客网 时间:2024/04/27 00:02
Oracle的在线重定义功能就是利用了物化视图的功能,通过物化视图日志的记录功能,来同步目标表和基表的数据。因此,在11g以前,建立了物化视图日志的表是无法进行在线重定义操作的:
SQL> CREATE TABLE T AS SELECT ROWNUM ID, A.* FROM DBA_OBJECTS A;表已创建。SQL> CREATE INDEX IND_T_NAME ON T (OBJECT_NAME);索引已创建。SQL> ALTER TABLE T ADD CONSTRAINTS PK_T PRIMARY KEY (ID);表已更改。SQL> BEGIN2 DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T');3 END;4 /PL/SQL 过程已成功完成。SQL> CREATE MATERIALIZED VIEW LOG ON T;实体化视图日志已创建。SQL> BEGIN2 DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T');3 END;4 /BEGIN*第 1 行出现错误:ORA-12091: 不能联机重新定义具有实体化视图的表 "YANGTK"."T"ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 137ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 1478ORA-06512: 在 line 2SQL> SELECT * FROM V$VERSION;BANNER---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - Production
在11g中,Oracle会利用现有的物化视图日志来完成在线重定义的功能。同时,物化视图日志也可以作为表的从属信息同步到目标上。不过在同步完成后,需要物化视图执行完全刷新。
SQL> CREATE TABLE T AS SELECT ROWNUM ID, A.* FROM USER_OBJECTS A;表已创建。SQL> CREATE INDEX IND_T_NAME ON T (OBJECT_NAME);索引已创建。SQL> ALTER TABLE T ADD CONSTRAINT PK_T PRIMARY KEY (ID);表已更改。SQL> CREATE MATERIALIZED VIEW LOG ON T;实体化视图日志已创建。SQL> BEGIN2 DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T');3 END;4 /PL/SQL 过程已成功完成。SQL> SELECT * FROM V$VERSION;BANNER------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production PL/SQL Release 11.1.0.6.0 - ProductionCORE 11.1.0.6.0 ProductionTNS for Linux: Version 11.1.0.6.0 - ProductionNLSRTL Version 11.1.0.6.0 - Production
最后简单给出11g中包含物化视图日志的在线重定义操作步骤:
SQL> CREATE MATERIALIZED VIEW MV_T REFRESH FAST AS SELECT * FROM T;实体化视图已创建。SQL> DELETE T WHERE ID = 1;已删除 1 行。SQL> COMMIT;提交完成。SQL> SELECT COUNT(*) FROM T;COUNT(*)---------- 23SQL> SELECT COUNT(*) FROM MV_T;COUNT(*)---------- 24SQL> CREATE TABLE T_INTER PARTITION BY HASH (ID)2 PARTITIONS 43 AS SELECT ROWNUM ID, A.* FROM USER_OBJECTS A WHERE 1 = 2;表已创建。SQL> BEGIN2 DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_INTER');3 END;4 /PL/SQL 过程已成功完成。SQL> VAR V_NUM NUMBERSQL> BEGIN2 DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(USER, 'T', 'T_INTER', COPY_MVLOG => TRUE, NUM_ERRORS => :V_NUM);3 END;4 /PL/SQL 过程已成功完成。SQL> PRINT :V_NUMV_NUM---------- 0SQL> SELECT COUNT(*) FROM T;COUNT(*)---------- 23SQL> SELECT COUNT(*) FROM T_INTER;COUNT(*)---------- 23SQL> DELETE T WHERE ID = 2;已删除 1 行。SQL> COMMIT;提交完成。SQL> BEGIN2 DBMS_REDEFINITION.SYNC_INTERIM_TABLE(USER, 'T', 'T_INTER');3 END;4 /PL/SQL 过程已成功完成。SQL> SELECT COUNT(*) FROM T_INTER;COUNT(*)---------- 22SQL> BEGIN2 DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'T', 'T_INTER');3 END;4 /PL/SQL 过程已成功完成。SQL> SELECT TABLE_NAME, PARTITION_NAME FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'T';TABLE_NAME PARTITION_NAME------------------------------ ------------------------------ T SYS_P45T SYS_P46T SYS_P47T SYS_P48SQL> EXEC DBMS_MVIEW.REFRESH('MV_T')BEGIN DBMS_MVIEW.REFRESH('MV_T'); END;*第 1 行出现错误:ORA-12034: "YANGTK"."T" 上的实体化视图日志比上次刷新后的内容新ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2537ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2743ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2712ORA-06512: 在 line 1SQL> EXEC DBMS_MVIEW.REFRESH('MV_T', 'C')PL/SQL 过程已成功完成。SQL> DELETE T WHERE ID = 3;已删除 1 行。SQL> COMMIT;提交完成。SQL> EXEC DBMS_MVIEW.REFRESH('MV_T')PL/SQL 过程已成功完成。SQL> SELECT * FROM MV_T WHERE ID = 3;未选定行
11g在线重定义对物化视图日志进行了支持,同时COPY_TABLE_DEPENDENTS过程也添加了对物化视图日志拷贝的功能。
- Oracle11g新特性:在线操作功能增强-Oracle11g在线重定义功能对物化视图... (转载)
- Oracle11g新特性:在线操作功能增强-Oracle11g在线重建索引功能增强 (转载)
- Oracle11g新特性:在线操作功能增强-Oracle11g新增的不可见索引 (转载)
- Oracle11g新特性:在线操作功能增强-Oracle对象依赖性判断增强 (转载)
- Oracle11g新特性:在线操作功能增强-表增加包含默认值的字段(转载)
- Oracle11g新特性:在线操作功能增强-Oracle11g的只读表功能
- Oracle11g新特性:在线操作功能增强-可等待DDL操作
- Oracle11G 在线重定义
- Oracle11新特性——支持对物化视图日志的在线重定义
- Oracle11新特性——在线操作功能增强
- Oracle11新特性——在线操作功能增强…
- 在线重定义功能
- Oracle11新特性——在线操作功能增强之对象依赖性判断增强
- Oracle11新特性——在线重建索引功能增强
- Oracle11新特性——在线操作功能增强之可等待DDL
- Oracle11新特性——在线操作功能增强之表增加包含默认值的字段
- Oracle11新特性——在线操作功能增强之新增的不可见索引
- Oracle11新特性——在线操作功能增强之新增只读表功能
- Oracle11g新特性:在线操作功能增强-Oracle对象依赖性判断增强 (转载)
- Oracle11g新特性:在线操作功能增强-Oracle11g新增的不可见索引 (转载)
- sffsfsf
- 未知的命运
- Oracle11g新特性:在线操作功能增强-Oracle11g的只读表功能
- Oracle11g新特性:在线操作功能增强-Oracle11g在线重定义功能对物化视图... (转载)
- Oracle11g新特性:在线操作功能增强-Oracle11g在线重建索引功能增强 (转载)
- bean:write之四输出的数据进行格式化
- 设计模式随笔(六):命令(Command)
- jdom
- 敢问路在何方?!
- Awake框架简介---分页
- 网管SNMP Agent的快速开发
- Java面试分享