暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 交换分区有时工作有时不工作

askTom 2017-03-31
345

问题描述

嗨,

我确实有2个表来交换分区。
1) temp_tbl: 临时表,用于保存使用插入追加更新的数据。
2) final_tbl: 带有一个分区 “abc”

但是,当我运行该命令时,它第一次起作用,但是我再次运行,来自temp_tbl的数据不会交换到final_tbl。我试图在运行exchange分区命令之前截断表final_tbl,它仍然不会从temp_tbl交换到final_tbl的内容。经过多次运行,我意识到源表temp_tbl的数据消失了!

更改表final_tbl
交换分区abc
使用表temp_tbl
未经验证;

对此有什么想法吗?
感谢您的建议。

谢谢。

专家解答

你需要给我们一个可复制的测试用例,因为我从未见过。

SQL> create table final_table
  2   ( x int, y int )
  3  partition by list (x)
  4  (
  5    partition p1 values (0),
  6    partition p2 values (1)
  7  );

Table created.

SQL>
SQL> insert into final_table select 0,rownum from dual connect by level <= 10;

10 rows created.

SQL> insert into final_table select 1,rownum from dual connect by level <= 20;

20 rows created.

SQL>
SQL> create table temp_tbl ( x int, y int) ;

Table created.

SQL> insert into temp_tbl select 0 x, rownum y from dual connect by level <= 5;

5 rows created.

SQL>
SQL> select * from final_table partition ( p1 );

         X          Y
---------- ----------
         0          1
         0          2
         0          3
         0          4
         0          5
         0          6
         0          7
         0          8
         0          9
         0         10

10 rows selected.

SQL> select * from temp_tbl;

         X          Y
---------- ----------
         0          1
         0          2
         0          3
         0          4
         0          5

5 rows selected.

SQL>
SQL> alter table final_table
  2   exchange partition p1 with table temp_tbl;

Table altered.

SQL>
SQL> select * from final_table partition ( p1 );

         X          Y
---------- ----------
         0          1
         0          2
         0          3
         0          4
         0          5

5 rows selected.

SQL> select * from temp_tbl;

         X          Y
---------- ----------
         0          1
         0          2
         0          3
         0          4
         0          5
         0          6
         0          7
         0          8
         0          9
         0         10

10 rows selected.

SQL>
SQL> alter table final_table
  2   exchange partition p1 with table temp_tbl;

Table altered.

SQL>
SQL>  select * from final_table partition ( p1 );

         X          Y
---------- ----------
         0          1
         0          2
         0          3
         0          4
         0          5
         0          6
         0          7
         0          8
         0          9
         0         10

10 rows selected.

SQL>  select * from temp_tbl;

         X          Y
---------- ----------
         0          1
         0          2
         0          3
         0          4
         0          5

5 rows selected.

SQL>






「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论