分享
 
 
 

9i新特性之——在线表格重定义研究5

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

9、所有的工作都预备完成,我们执行重构完成的过程,这个过程将执行表的交换。

SQL> execute DBMS_REDEFINITION.FINISH_REDEF_TABLE('MYTEST','TEST', 'INT_TEST');

PL/SQL procedure sUCcessfully completed

我们还是往test表中插入数据,将有什么结果呢?

SQL> insert into test values(103,1);

1 row inserted

SQL> select count(*) from test;

103

SQL> select count(*) from int_test;

102

SQL> select * from mlog$_test;

select * from mlog$_test

ORA-00942: table or view does not exist

SQL> select * from rupd$_test;

select * from rupd$_test

ORA-00942: table or view does not exist

SQL> select c from audit_test;

104

可以看到,这里的触发器执行的是以前在ini_test(中间表)上的触发器。上一次是102,这次是104。

这里发生了一个很有趣的转换,其实整个核心就是这里,Oracle这里完成了表test到int_test的表换名的工作,只是所有的约束、索引或触发器名称还是保持了原来的名称

SQL> select t.index_name,t.table_name from user_indexes t;

INT_TEST_PK TEST

PK_TEST_ID INT_TEST

SQL> select t.trigger_name,t.table_name from user_triggers t;

TR_INT_TEST TEST

TR_TEST INT_TEST

我们检查对象权限

SQL> select * from USER_TAB_PRIVS_MADE;

SYSTEM INT_TEST MYTEST SELECT NO NO

SYSTEM INT_TEST MYTEST DELETE

SYSTEM TEST MYTEST SELECT NO NO

SYSTEM TEST MYTEST UPDATE

这里可以看到,对于所有数据字典中的这两个名称,其实是完成了一个表的名字对换的过程,所以对于原表的特性,我们必须在新表中给予相同的特性,这样才能真正的转换到新的表。

10、大功告成,我们可以删除中间表,并且有可能的话,修改约束,索引,触发器的名称与原来一致,假如你认为不重要,可以不予修改。

SQL> drop table int_test;

Table dropped

假如是92以上版本,我们可以对索引,约束换名,但是以下版本,最好就是删除重新建立了

假如运行了START_REDEF_TABLE 过程开始,我们就必须运行

dbms_redefinition.abort_redef_table('MYTEST','TEST','INT_TEST');来终止整个重构过程,到这里,就算是完了。

SQL> select object_name, object_type, status, object_id, data_object_id from user_objects order by 4;

OBJECT_NAME OBJECT_TYPE STATUS OBJECT_ID DATA_OBJECT_ID

-------------------------------------------------------------------------------- ------------------ ------- --------- --------------

AUDIT_TEST TABLE VALID 33579 33579

TEST TABLE VALID 33582

TEST TABLE PARTITION VALID 33583 33589

TEST TABLE PARTITION VALID 33584 33590

TEST TABLE PARTITION VALID 33585 33591

TEST TABLE PARTITION VALID 33586 33592

6 rows selected

看到这里,你也应该相信转换已经完成了吧,现在是分区表了。

总结:

本文不想从大的框架上来说明问题,而是用一些例子来说明问题

这样可能会更让大家明白其中发生的一切。

这里尽量的模拟了实际可能会碰到的情况。

如约束,索引,触发器,对象权限,这个在重新定义的时候需要注重什么,需要我们手工完成什么

外键约束这里没有举例说明,其实与普通约束一样,只是在中间表上建立外键约束的时候,最好先禁止掉(DISABLE),等完成之后再打开。

其实主要过程就是完成了一个表的记录的拷贝(通过快照),最后在数据字典中换名的工作。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有