Oracle在9i提供了在线重定义功能,利用这个功能可以在线修改表的逻辑结构或物理结构。不过在10g以前的版本,原表上的所有的索引、触发器、约束、统计信息和权限都需要在目标表上手工创建,不过从10g开始,Oracle提供了新的过程COPY_TABLE_DEPENDENTS,大大简化了在线重定义的步骤。
9i中使用在线重定义的例子:http://yangtingkun.itpub.net/post/468/12962
通过10g的COPY_TABLE_DEPENDENTS过程,极大的简化了在线重定义所需要的手工处理部分,一个包含索引、约束、触发器、统计信息和授权的表的在线重定义过程,只需要下面的步骤就可以完成:
SQL> CREATE TABLE T AS SELECT ROWNUM ID, A.* FROM USER_OBJECTS A;
表已创建。
SQL> ALTER TABLE T ADD PRIMARY KEY (ID);
表已更改。
SQL> ALTER TABLE T ADD CHECK (ID > 0);
表已更改。
SQL> GRANT INSERT ON T TO SYSTEM;
授权成功。
SQL> CREATE INDEX IND_T_NAME ON T (OBJECT_NAME);
索引已创建。
SQL> CREATE OR REPLACE TRIGGER TRI_T BEFORE INSERT ON T FOR EACH ROW
2 BEGIN
3 NULL;
4 END;
5 /
触发器已创建
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'T')
PL/SQL 过程已成功完成。
SQL> CREATE TABLE T_INTER PARTITION BY HASH (ID)
2 PARTITIONS 4
3 AS SELECT ROWNUM ID, A.* FROM USER_OBJECTS A WHERE 1 = 2;
表已创建。
初始表已经准备好了,准备改成的分区表也已经建立成功,下面开始在线重定义过程:
SQL> SET SERVEROUT ON SIZE 1000000
SQL> BEGIN
2 DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T');
3 END;
4 /
PL/SQL 过程已成功完成。
SQL> BEGIN
2 DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_INTER');
3 END;
4 /
PL/SQL 过程已成功完成。
SQL> VAR V_NUM NUMBER
SQL> BEGIN
2 DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(USER, 'T', 'T_INTER',
3 DBMS_REDEFINITION.CONS_ORIG_PARAMS, TRUE, TRUE, TRUE, TRUE, :V_NUM, TRUE);
4 END;
5 /
PL/SQL 过程已成功完成。
SQL> PRINT V_NUM
V_NUM
----------
0
SQL> BEGIN
2 DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'T', 'T_INTER');
3 END;
4 /
PL/SQL 过程已成功完成。
在线重定义操作已经完成,下面可以检查索引、约束、权限、触发器和统计信息是否已经被成功克隆:
SQL> SELECT TABLE_NAME, INDEX_NAME FROM USER_INDEXES WHERE TABLE_NAME IN ('T', 'T_INTER');
TABLE_NAME INDEX_NAME
------------------------------ ------------------------------
T SYS_C006293
T IND_T_NAME
T_INTER TMP$$_SYS_C0062930
T_INTER TMP$$_IND_T_NAME0
SQL> SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE
2 FROM USER_CONSTRAINTS WHERE TABLE_NAME IN ('T', 'T_INTER');
TABLE_NAME CONSTRAINT_NAME C
------------------------------ ------------------------------ -
T SYS_C006294 C
T SYS_C006293 P
T_INTER TMP$$_SYS_C0062930 P
T_INTER TMP$$_SYS_C0062940 C
SQL> SELECT TABLE_NAME, TRIGGER_NAME FROM USER_TRIGGERS WHERE TABLE_NAME IN ('T', 'T_INTER');
TABLE_NAME TRIGGER_NAME
------------------------------ ------------------------------
T TRI_T
T_INTER TMP$$_TRI_T0
SQL> SELECT TABLE_NAME, PRIVILEGE FROM USER_TAB_PRIVS WHERE TABLE_NAME IN ('T', 'T_INTER');
TABLE_NAME PRIVILEGE
------------------------------ ----------------------------------------
T_INTER INSERT
T INSERT
SQL> SELECT TABLE_NAME, NUM_ROWS FROM USER_TABLES WHERE TABLE_NAME IN ('T', 'T_INTER');
TABLE_NAME NUM_ROWS
------------------------------ ----------
T 34
T_INTER 34
SQL> SELECT TABLE_NAME, PARTITION_NAME FROM USER_TAB_PARTITIONS
2 WHERE TABLE_NAME IN ('T', 'T_INTER');
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
T SYS_P41
T SYS_P42
T SYS_P43
T SYS_P44
SQL> DROP TABLE T_INTER PURGE;
表已删除。
所有的表相关对象已经创建成功,且在线重定义操作也顺利完成,最后删除中间表即可。
分享到:
相关推荐
在线表重定义——Oracle 10g系列专栏(二).pdf
数据库-oracle12C新特性——之RMAN恢复表--嘉为科技[定义].pdf
【考研或自学数据结构2.2】——顺序表(顺序表的定义,顺序表的基本操作)笔记
上机实验二——数据表定义和管理实验.doc
论文研究-一种决策知识表示和进行模糊决策的新方法——模糊决策表.pdf, 集中于决策表方法的几个方面,以(确定的)决策表形式为基础对其进行模糊扩展,以便于处理不精确...
在线重定义 DBMS_REDEFINITION =================== 通过DBMS_REDEFINITION,可以完成在线重组织表。完成在线重组织、增加本地物化视图的可维持性。快照日志需要被定义在主表上,支持增加物化视图的可维持性。这些...
EMC下一代软件定义存储架构——孙宇熙,EMC中国研究院技术总监 EMC下一代软件定义存储架构——孙宇熙,EMC中国研究院技术总监
智联天地——无线扫描枪新定义!.pdf智联天地——无线扫描枪新定义!.pdf智联天地——无线扫描枪新定义!.pdf智联天地——无线扫描枪新定义!.pdf智联天地——无线扫描枪新定义!.pdf智联天地——无线扫描枪新定义!.pdf...
私募基金业务类型的定义及说明——基金业协会(2021.9.08)分享.pdf
光子神经网络——重新定义AI芯片.pdf
精品报告系列-重新定义移动办公——2018年中国企业移动办公平台发展洞察.pdf
利用java代码实现对农历的表达import java.util.Scanner;
四奥第3讲——定义新运算教案.doc
麦肯锡:2017中国数字消费者研究——重新定义新零售时代的客户体验.pdf
《信息新技术——计算机的硬件与软件》教学设计全文共5页,当前为第1页。《信息新技术——计算机的硬件与软件》教学设计全文共5页,当前为第1页。《信息新技术——计算机的硬件与软件》教学设计 《信息新技术——...
(3) 使用继承的方法构造3个类,(即雇员类——虚基类,教师类和工人类——派生类)使用相应的对象放置10个职工信息。 (4) 编写同名display()成员函数,用来输出数组的内容。 (5) 要求对“”和“>>”运算符...
7.7.2 表格的表主体标记——tbody 154 7.7.3 表格的表尾标记——tfoot 156 7.8 表格的嵌套 157 7.9 小结 159 7.10 习题 159 第8章 层标记——div 161 教学录像:33分钟 8.1 层 162 8.1.1 层的...
奢侈品门店培训文档——新员工培训定义.pdf
德勤:软件定义汽车——箭在弦上的产业变革
公共云服务——新公共服务的未来图景定义.pdf