Oracle:Dbms_Redefinition是什么意思?

时间:2015-07-18 13:42:25

标签: oracle dbms-redefinition

什么是Dbms_Redefinition? Oracle文档说它是一个为重新定义对象提供接口的包。

我想了解这种“重新定义”究竟意味着什么?这种重新定义与DDL和DML命令有何不同? “在线”意味着什么?

3 个答案:

答案 0 :(得分:3)

这个软件包的典型用例是更改"正常"表到分区表或索引组织表。 "在线"意味着,这种变化可以在不中断您的申请的情况下完成(在某些情况下)

通常,当您想要进行此类更改时,您必须创建新表并将数据从旧表复制到新表。然后你必须删除旧表(让你的应用程序停止)并重命名新表。在此过程中,如果应用程序继续将数据插入旧表,则可能会丢失数据。

答案 1 :(得分:3)

定义,如数据定义语言(DDL),意味着定义数据库对象。

在此上下文中,重新定义意味着重新定义数据库对象。

在DBMS_REDEFINITION可用之前,可以并且仍然可以使用DDL脚本的许多不同策略来重新定义数据库对象。使用DDL脚本通常会发现,在一段时间内,重新定义的数据库对象对用户不可用,也称为脱机。数据库对象离线的时间越长,用户社区就越不“满意”。

解决方案是使用DBMS_REDEFINITION,它可以在没有停机时间的情况下重新定义数据库对象。

答案 2 :(得分:0)

数据库中的关键问题有时候您需要更改它的结构或定义,同时将其维护为在线可供用户访问:

当你修改它的结构时,任何人仍然可以插入/删除/更新表。

Oracle为此提供了DBMS_REDEFINITION包:

引用自:

http://www.dba-oracle.com/t_dbms_redefinition_example.htm

Now with all that said, Oracle provides a robust and reliable package for performing many common online table level reorganizations - dbms_redefinition. 

DBMS_REDEFINITION中的不同存储过程必须遵循一个过程,该过程在上面的链接中有详细描述。

此处列出了该程序的摘要,详情请参阅上面的链接:

 1.      Verify that the table is a candidate for online redefinition

2.      Create an interim table

3.      Enable parallel DML operations

4.      Start the redefinition process (and do not stop until step 9 is done)

5.      Copy dependent objects

6.      Check for any errors

7.      Synchronize the interim table (optional)

8.      Complete the redefinition

9.      Drop the interim table