【问题标题】:Partitioning an Existing Table using DBMS_REDEFINITION使用 DBMS_REDEFINITION 对现有表进行分区
【发布时间】:2020-10-13 09:41:51
【问题描述】:

我有一张表,我想对它进行分区,所以我开始使用 DBMS_REDEFINITION 对它进行分区,我像这篇文章一样工作DBMS_REDEFINITION

当我开始使用此代码重新定义我的表时我的问题:

BEGIN
  DBMS_REDEFINITION.start_redef_table(
    uname      => USER,        
    orig_table => 'salary',
    int_table  => 'salary_2');
END;

我有这个问题:

我使用 DBMS_REDEFINITION.abort_redef_table 中止此重新定义,然后我使用重新定义 DBMS_REDEFINITION.start_redef_table 然后我得到这个错误:

但是,我删除了此表的快照,每次运行 start_redef_table 时仍然出现此错误。

注意: 我的表格列是 645。

【问题讨论】:

  • 请阅读错误文本maximum number of columns in a table or view is 1000,检查您的列号;可能在临时表中添加一些帮助列失败...
  • 为什么有 1000+ 列?看起来你的数据结构很糟糕
  • 感谢marmite,列数不足1000,为645列
  • @DervişKayımbaşıoğlu 这是一个旧系统,列数少于 1000,只有 645 列
  • 有报道称这是 Oracle 中未发布的错误。提供补丁和修复:databaseinternalmechanism.com/2019/01/10/…

标签: oracle plsql database-partitioning


【解决方案1】:

我已经解决了这个问题,现在我有了一个分区表。

我创建了另一个与基表结构相同的表。

然后我将旧表中的数据插入到新表中。

之后,我删除旧表并将新表重命名为旧表名。

但是,重新定义仍然不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多