Oracle
我可以在具有相同名稱的分區的兩個表之間交換分區嗎?
我正在嘗試從備份表中恢復一個分區。兩個表都有同名的分區。我的目標是從備份表分區 x 中獲取數據並將其放入原始表分區 x 中。x 是分區的名稱。
我試圖通過使用輔助表來做到這一點。有沒有辦法直接交換它們或任何其他性能更好的解決方案?
你見過這個嗎? https://community.oracle.com/thread/889338?start=0&tstart=0
它指出您只能將分區從分區表交換到非分區表,反之亦然。
您需要將分區臨時交換為臨時的非分區表,然後再轉換為目標分區表。
上面廣泛陳述的規則有一些有趣的皺紋;請參閱 Oracle 文件的以下摘錄:
交換分區子部分
使用 EXCHANGE PARTITION 或 EXCHANGE SUBPARTITION 子句交換以下數據和索引段:
- 一張未分區的表:
1. 一個範圍、列表或雜湊分區 2. 一個範圍、列表或雜湊子分區
- 一個範圍分區表,其中包含範圍範圍或列表範圍複合分區表分區的範圍子分區
- 一個散列分區表,其中包含範圍散列或列表散列複合分區表分區的散列子分區
- 一個列表分區表,其中包含範圍列表或雜湊列表複合分區表分區的列表子分區
在所有情況下,表的結構和正在交換的分區或子分區,包括它們的分區鍵,都必須相同。在列表分區和子分區的情況下,對應的值列表也必須匹配。