Dbms_Redefinition是什么?Oracle docs说,它是一个为对象重新定义提供接口的包。
我想知道这个“重新定义”究竟是什么意思?这种重新定义与DDL和DML命令有何不同?“在线”是什么意思?
发布于 2015-07-18 16:41:22
此包的典型用法是将“普通”表更改为分区表或索引组织表。“联机”是指在不中断您的应用程序的情况下(在某些情况下)进行此更改。
通常,当您想要进行这样的更改时,您必须创建新表并将数据从旧表复制到新表。然后,您必须删除旧表(让应用程序停止)并重命名新表。在此过程中,如果应用程序继续向旧表中插入数据,则可能会丢失数据。
发布于 2015-07-19 07:40:35
定义,如在数据定义语言(DDL)中,意味着定义数据库对象。
在此上下文中,重新定义意味着重新定义数据库对象。
在DBMS_REDEFINITION可用之前,可以而且仍然可以使用DDL脚本使用许多不同的策略来重新定义数据库对象。使用DDL脚本,您通常会发现重新定义的数据库对象在一段时间内对用户不可用,也称为脱机。数据库对象离线时间越长,用户社区的“快乐”就越少。
解决方案是使用DBMS_REDEFINITION,它可以在没有停机时间的情况下执行数据库对象的重新定义。
发布于 2017-01-25 05:50:42
数据库中的关键问题是,有时您希望更改它的结构或定义,同时将其维护为用户可以在线访问的内容:
任何人都可以在修改表结构时插入/删除/更新表。
Oracle为此提供了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 tablehttps://stackoverflow.com/questions/31491768
复制相似问题