2011-08-12 30 views
0

查看存檔策略 - 我們必須存檔特定數據集。針對特定子分區的分區交換加載

而不是插入/刪除例程 - 我正在考慮使用分區交換。

待歸檔表格是按日期分區的區間範圍,並在國家/地區列出子分區。

對於特定的國家我想分割交換。

create table 
test_table 
(tbl_id number, 
country varchar2(2), 
sales_dt date, 
volume number) 
partition by range (sales_dt) interval (NUMTOYMINTERVAL(1,'Month')) 
subpartition by list (country) 
Subpartition template 
(subpartition p_ireland values ('IR'), 
subpartition p_france values ('FR'), 
subpartition p_other values (DEFAULT)) 
(partition before_2008 values less than (to_date('01-JAN-2008','DD-MON-YYYY'))); 

加載的數據落入正確的分區和子分區。所有的分區名稱都是系統生成的。

當我對所有'FR'子分區進行分區交換時,我無法確定邏輯。

使用

Alter table test_table 
exchange subpartition system_generated_name 
with table TEST_TABLE_ARCH; 

我可以換出一個特定的 '已知' 子分區。

我知道你可以在Oracle 11g中使用'for'邏輯,但是不能使語法工作。

任何想法?

回答

0

我們在過去測試過,並認爲我們必須提出一個正確的做法。目標是做兩次分區交換:一次在源表和空的交換表之間,另一次在你現在填充的交換表和歸檔表之間交換。

先決條件:創建一個空的交換表以與源表進行分區交換。另外,創建一個將被分區的歸檔表。

高級工藝:

  • 創建存檔表中新的空白分區。
  • 做交換表,並要存檔 源分區之間的分區交換(結果:歸檔分區交換表中源表中的空分區)
  • 不要在存檔表調劑表和新的空白分區之間的分配交流; (結果:原源表的分區現在就在你的存檔表分區和交換表是回爲空)
  • 刪除空白分區在源表(假設你不想重複使用)

我們從來沒有編碼過,所以這個過程可能需要調整,但我們認爲這是我們如果追求這樣的策略必須做的。

+0

感謝您的反饋意見。我能夠進行基本的部分交換 - 沿着您的出色步驟,但無法針對特定的子分區。我沿着兩個映射的路線,一個插入一個存檔表和一個映射刪除。 – Nitibob