Oracle

我可以在具有相同名稱的分區的兩個表之間交換分區嗎?

  • August 5, 2015

我正在嘗試從備份表中恢復一個分區。兩個表都有同名的分區。我的目標是從備份表分區 x 中獲取數據並將其放入原始表分區 x 中。x 是分區的名稱。

我試圖通過使用輔助表來做到這一點。有沒有辦法直接交換它們或任何其他性能更好的解決方案?

你見過這個嗎? https://community.oracle.com/thread/889338?start=0&tstart=0

它指出您只能將分區從分區表交換到非分區表,反之亦然。

您需要將分區臨時交換為臨時的非分區表,然後再轉換為目標分區表。

上面廣泛陳述的規則有一些有趣的皺紋;請參閱 Oracle 文件的以下摘錄:

交換分區子部分

使用 EXCHANGE PARTITION 或 EXCHANGE SUBPARTITION 子句交換以下數據和索引段:

  • 一張未分區的表:

1. 一個範圍、列表或雜湊分區 2. 一個範圍、列表或雜湊子分區

  • 一個範圍分區表,其中包含範圍範圍或列表範圍複合分區表分區的範圍子分區
  • 一個散列分區表,其中包含範圍散列或列表散列複合分區表分區的散列子分區
  • 一個列表分區表,其中包含範圍列表或雜湊列表複合分區表分區的列表子分區

在所有情況下,表的結構和正在交換的分區或子分區,包括它們的分區鍵,都必須相同。在列表分區和子分區的情況下,對應的值列表也必須匹配。

引用自:https://dba.stackexchange.com/questions/109005