暂无图片
请问各位大神 在线重定义DBMS_REDEFINITION.CAN_REDEF_TABLE 什么情况下不能在线重定义?好像看有物化视图不能支持 还有那些情况不能支持的?
我来答
分享
QIU飞
2021-08-30
请问各位大神 在线重定义DBMS_REDEFINITION.CAN_REDEF_TABLE 什么情况下不能在线重定义?好像看有物化视图不能支持 还有那些情况不能支持的?

请问各位大神 在线重定义DBMS_REDEFINITION.CAN_REDEF_TABLE 什么情况下不能在线重定义?好像看有物化视图不能支持 还有那些情况不能支持的?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Lucifer三思而后行
暂无图片

以下限制适用于表的在线重新定义:

  • 如果要使用主键或伪主键(唯一键或所有组件列都没有空约束的约束)重新定义表,则重新定义后的表必须具有相同的主键或伪主键列。如果要使用 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
打赏 0
暂无图片
你好我是李白

在每个官方文档的Administrator Guide有一个章节Redefining Tables Online,里面有详细限制。例如19c的https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-tables.html#GUID-A63096F3-DD43-4E0F-803E-BACC0D0EFD2D

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
11g RAC 第二个节点运行root.sh时报错
回答 3
已采纳
感谢各位的回复可能是vmware的vmdk共享问题,换成iscsi共享磁盘就正常了。
Rman 备份到 NFS失败
回答 11
已采纳
挂载还有原来的命令,原来的方法,把客户端所在的两台数据库服务器reboot后,很神奇的备份到NFS就成功了。超出了我的认知范围。。。
Oracle导入数据报错LRM-00118 UDI-00013 ,怎么解决?
回答 2
已采纳
提示很明显吧,语法问题呀,是不是最后一行或几行用“–”注释了,而你又用的交互式的,不支持“–”注释语法,去掉就行。但是看你截图应该数据都导入进去了,检查下索引看看导入了没有,在后面就是统计信息,不影响
Duplicat 搭建DG与rman恢复搭建DG相比,其优势在哪里?
回答 2
我喜欢用duplicate,duplicate是在线的,一条命令梭过去,不用管了。rman备份你还得备份到本地,本地也得有额外的空间,还得进行restore和recover。duplicate相当于把
万里开源数据库符合国产化要求吗?
回答 1
有没有可以指点一下我的大神啊
dg备库日志都接受过来了,但是部分没有应用,需要查看哪个参数?
回答 1
Oracle日常运维之DG库日志应用慢参数调整实战
Oracle 数据库中的表名最长能设置多长?
回答 1
已采纳
Oracle表名长度最大为30个字符,具体测试结果如下图所示
Oracle unplug 的 pdb 插入到主库,备库怎么操作才能继续同步
回答 1
参考参考https://gavinsoorma.com.au/knowledgebase/plugginganoracle12cpluggabledatabaseintoadataguardconta
请对重做日志和闪回数据库的闪回日志进行一个比较说明。
回答 3
已采纳
闪回日志和重做日志的区别有:—说明闪回数据库—使用闪回表将表内容还原到过去的特定时间点—从删除表中进行恢复—使用闪回查询查看截止到任一时间点的数据库内容—使用闪回版本查询查看某一行在一段时间内的各个版
12C rac 节点2 报错ORA-00600: internal error code, arguments: [kjctr_pbmsg:badbmsg2] 并重启
回答 3
看下两个节点的netstats结果,另外操作系统是否有错误日志?