【问题标题】:copying oracle table with calculated indexes使用计算索引复制 oracle 表
【发布时间】:2017-12-12 11:23:28
【问题描述】:

我想知道我是否可以从另一个具有完全相同结构的表中复制 oracle 表内容。我想复制所有数据(或有时是其中的一部分),包括计算的索引。也就是说,我不想重做索引的计算,或者重建它们。这可以做到吗?一个相关的问题:oracle在计算索引时将信息存储在哪里?

【问题讨论】:

    标签: oracle copying database-indexes


    【解决方案1】:

    不能将计算出的索引复制到另一个表,因为索引中包含的 ROWID 是表行的物理地址(对象标识符、文件标识符、块 ID、块中的偏移量)。 您必须为新表创建自己的索引。 新索引的行将包含新表的物理地址。 (新对象标识符、文件标识符、块标识符、块中的偏移量)

    为了提高索引创建速度,您可以使用并行索引创建。 并行索引构建/扫描仅适用于企业版。

    CREATE INDEX    my_idex    ON     my_table(p1, p2, p_id) PARALLEL 35;
    

    【讨论】:

    • 这似乎结束了我的希望,但这是非常有用的答案!
    【解决方案2】:

    我怀疑您是否可以将计算出的索引复制到另一个表中。但是您可以将整个内容复制到另一个表中,例如

    将表目标创建为 从源中选择 *;

    并且在 all_indexes 中可以看到索引信息。

    【讨论】:

    • 感谢您的回复。不幸的是,create table dest from source 没有将索引放入结果表中。我的目标是使用带有索引的目标表..我想避免重新创建它们并重新计算它们..(因为在巨大的表上它可能非常耗时,并且它们已经在源表中计算了..)
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多