online table redefinition

online table redefinition

online table redefinitionoracle9i引入的新特性,在10g加强了这个特性,该特性通过DBMS_REDEFINITON包实现的。online table redefinitio保证了表的可用性,(alter table ...move create index会在整个执行过程中锁表)online table redefinition只有在完成online table redefinition阶段时锁表,且锁表时间不长。

DBMS_REDEFINITION

DBMS_REDEFINITION由下的8procedure组成

ABORT_REDEF_TABLE:取消或错误后取消redefinition

CAN_REDEF_TABLE:检查是否可以online redefinition

COPY_TABLE_DEPENDENTS:interim表上创建dependents

START_REDEF_TABLE:开始online redefinition

FINISH_REDEF_TABLE:完成online redefinition

SYNC_INTERIM_TABLE:同步在online redefinition过程中的更新

REGISTER_DEPENDENT_OBJECT:注册手动创建的dependent

UNREGISTER_DEPENDENT_OBJECT:取消dependent的注册

为了执行online table redefinition你需要下的权限:

execute dbms_redefinition package

create any table

alter any table

drop any table

lock any table

select any table

create any index

create any trigger

online table redefinition步骤:

1.调用dbms_redefinition.can_redef_table procedure 确认是否可以online redefinition

example:  EXECUTE dbms_redefinition.can_redef_table ('FINANCE', 'ACCTS_PAYABLE');

2.redefinition schema下创建interim table

3. 如果你redefinition一个大表,你可以用下面的Statement来改善性能:

alter session force parallel dml parallel degree-of-parallelism;

alter session force parallel query parallel degree-of-parallelism;

4.调用dbms_redefinition.start_redef_table procedure开如redefinition

example:dbms_redefinition.start_redef_table ('FINANCE', 'ACCTS_PAYABLE','ACCTS_PAYABLE_STAGE');

5.创建dependent objects on interim table

有两种方法:

调用dbms_redefinition.copy_table_dependents自动创建dependent objects

使用create statement手动创建dependent objects﹐手动创建的dependents需要调用register_dependent_object注册

6.更新在redefinition过程中的更新到interim

7.调用dbms_redefinition.finish_redef_table完成redefinition

8.删除收回空间如interim table使用的表

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7419833/viewspace-503857/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7419833/viewspace-503857/

你可能感兴趣的:(数据库)