请问各位大神 在线重定义DBMS_REDEFINITION.CAN_REDEF_TABLE 什么情况下不能在线重定义?好像看有物化视图不能支持 还有那些情况不能支持的?
请问各位大神 在线重定义DBMS_REDEFINITION.CAN_REDEF_TABLE 什么情况下不能在线重定义?好像看有物化视图不能支持 还有那些情况不能支持的?
我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
2条回答
默认
最新
以下限制适用于表的在线重新定义:
- 如果要使用主键或伪主键(唯一键或所有组件列都没有空约束的约束)重新定义表,则重新定义后的表必须具有相同的主键或伪主键列。如果要使用 rowids 重新定义表,则该表不能是索引组织的表。
- 重新定义一个有物化视图日志的表后,任何依赖物化视图的后续刷新都必须是完全刷新。
- 此限制有一个例外。当在线表重定义使用 REDEF_TABLE 或 START_REDEF_TABLE 过程,并且在过程中将 refresh_dep_mviews 参数设置为 Y 时,任何为增量刷新配置的依赖物化视图都会在在线表重定义操作期间刷新。
- 可以重新定义在 n 路主配置中复制的表,但不允许水平子集(表中行的子集)、垂直子集(表中列的子集)和列转换。
- 索引组织表的溢出表不能独立在线重新定义。
- 无法在线重新定义启用了闪回数据存档的表。您不能为临时表启用闪回数据存档。
- 可以在线重新定义具有 LONG 列的表,但必须将这些列转换为 CLOBS。此外,LONG RAW 列必须转换为 BLOBS。带有 LOB 列的表是可以接受的。
- 在具有足够并行执行资源的系统上,并且在临时表未分区的情况下,可以并行执行将 LONG 列重新定义为 LOB 列,前提是:
- 用于在临时表中存储 LOB 列的段属于启用了自动段空间管理 (ASSM) 的本地管理表空间。
- 从一个 LONG 列到一个 LOB 列有一个简单的映射,临时表只有一个 LOB 列。
- 在临时表被分区的情况下,用于分区的并行执行的正常方法适用。
- SYS 和 SYSTEM 架构中的表不能在线重新定义。
- 临时表不能重新定义。
- 无法重新定义表中的行子集。
- 将临时表中的列映射到原始表的列时,只能使用简单的确定性表达式、序列和 SYSDATE。例如,不允许子查询。
- 如果将新列作为重定义的一部分添加,并且这些列没有列映射,则在重新定义完成之前,不得将它们声明为 NOT NULL。
- 被重新定义的表和临时表之间不能有任何引用约束。
- 表重定义不能做 NOLOGGING。
- 对于物化视图日志和队列表,在线重新定义仅限于物理属性的变化。不允许水平或垂直子集,也不允许任何列转换。列映射字符串的唯一有效值是 NULL。
- 您不能对包含一个或多个嵌套表的分区执行联机重新定义。
- 您可以使用列映射中的 CAST 运算符将 VARRAY 转换为嵌套表。但是,您不能将嵌套表转换为 VARRAY。
- 当 DBMS_REDEFINITION.START_REDEF_TABLE 过程的 col_mapping 参数中的列包含序列时,orderby_cols 参数必须为 NULL。
- 对于具有虚拟专用数据库 (VPD) 安全策略的表,当 copy_vpd_opt 参数指定为 DBMS_REDEFINITION.CONS_VPD_AUTO 时,以下限制适用:
- 原始表和临时表之间的列映射字符串必须为 NULL 或 ‘*’。
- 临时表上不能存在 VPD 策略。
- 如果表通过引用分区相关联,则联机重定义不能在单独的 DBMS_REDEFINITION 会话中同时在多个表上运行。
- 有关参考分区的更多信息,请参阅 Oracle 数据库 VLDB 和分区指南。
- 如果其他表具有引用重新定义表的 REF 列,则对象表或 XMLType 表的联机重新定义可能会导致其他表中出现悬空 REF。
- 无法在线重新定义使用 Oracle Label Security (OLS) 的表。
- 不能在线重新定义具有细粒度访问控制的表。
- 无法在线重新定义使用 Oracle Real Application Security 的表。
希望能帮助到你!望采纳~
评论
有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


