您的位置:首页 > 数据库 > Oracle

MOVE和CTAS比较

2015-11-23 13:06 519 查看
发表于 2012
年 01 月 10 日 由 惜分飞

联系:手机(13429648788) QQ(107644445)



标题:MOVE和CAST比较

作者:惜分飞©版权所有[未经本人同意,请不得以任何形式转载,否则有进一步追究法律责任的权利.]

1.创建模拟表

2.测试move

2.1)执行move操作,记录时间

从这里可以看出,move操作执行了00:02:11.77

2.2)查看trace内容

从这里可以看出执行move,其实本质是全表扫描表,然后append方式插入数据,而不是真的数据块拷贝

3.测试CAST

3.1).CAST插入数据过程

SQL> alter system flush buffer_cache;

System altered.

SQL> SET TIMING ON;

SQL> alter session set events

2 ’10046 trace name context forever,level 1′;

Session altered.

Elapsed: 00:00:00.01

SQL> create table chf.t_xifenfei_move_new tablespace test_ocp

2 as

3 select * from chf.t_xifenfei_move;

Table created.

Elapsed: 00:01:59.22

SQL> alter session set events

2 ’10046 trace name context off’;

Session altered.

Elapsed: 00:00:00.00

SQL> select d.value||’/'||lower(rtrim(i.instance,chr(0)))||’_ora_’||p.spid||’.trc’ trace_file_name from

2 (select p.spid from v$mystat m, v$session s,v$process p where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr ) p,

3 (select t.instance from v$thread t,v$parameter v where v.name = ‘thread’ and(v.value = 0 or t.thread# = to_number(v.value))) i,

4 (select value from v$parameter where name = ‘user_dump_dest’) d;

TRACE_FILE_NAME

——————————————————————————–

/opt/oracle/diag/rdbms/chf/chf/trace/chf_ora_5121.trc

从这里看出cast操作用时:00:01:59.22,比move稍微少,但是cast要实现move完全的功能,还需要表重命名,表授权,编译无效对象等。

3.2)查看trace内容

通过这个可以看出,CAST其实本质也是全表扫描,然后append方式插入数据

4.比较move和cast

4.1)通过比较执行时间,cast稍微少,但是还有后续操作需要时间

4.2)通过比较执行计划,两者是一样的

4.3)move操作在整个过程中都会锁表,而cast不会锁住原表(select+where可以减少停业务时间)

4.4)move操作会一次性处理好权限,plsql/view等有效,而cast在rename之后,相关对象可能需要重新编译,重新授权等操作

4.5)cast操作index需要新建(create),而move操作index需要重建(rebuild)

4.6)cast完成后,需要对表重命名,删除原表操作操作,而这个操作move不用

5.选择使用谁

5.1)如果停业务时间够长,建议使用move操作

5.2)如果停业务时间不能太长,可以使用cast+where实现

5.3)如果数据库版本>=10g,且表空间使用local管理,那么可以考虑在不停业务的情况下使用shrink实现类此功能

至于MOVE和CAST在执行过程中,关于产生的redo和undo的比较,请见下篇:MOVE和CAST比较(续)

原文地址:http://www.xifenfei.com/2012/01/move%E5%92%8Ccast%E6%AF%94%E8%BE%83.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oracle CTAS MOVE