Esempio di migrazione di dati partizionati

Questo esempio mostra come migrare manualmente i dati partizionati.

Attenzione: A partire da Optim™ High Performance Unload V5.1 è possibile eseguire la migrazione automatica dei dati, che completa automaticamente l'intero processo descritto in questo esempio.

La tabella TB_EMPLOYEE è memorizzata nel table space TS_DATA1e TS_DATA1 si trova su quattro partizioni del database DB_PROD: 10, 20, 30 e 40. Per migrare la tabella TB_EMPLOYEE nella tabella TB_EMPLOYEE_NEW nello spazio tabelle TS_DATA2, che si trova su due partizioni del database DB_TARGET: 20 e 200, è possibile utilizzare Optim High Performance Unload per calcolare la distribuzione delle righe in base alla nuova tabella.

Per ripartizionare i dati dal database DB_PROD, è possibile utilizzare il seguente comando. I commenti sono preceduti da trattini (- -):
--control file to unload TB_EMPLOYEE table
GLOBAL CONNECT TO DB_PROD ;
UNLOAD TABLESPACE DB2 NO
SELECT * FROM TB_EMPLOYEE ;
TARGET TABLE (TB_EMPLOYEE_NEW IN DB_TARGET) HEADER FIRST
--unload to file employee
OUTFILE("/home/db2inst1/data/employee")
--specify DEL format
FORMAT DEL;
L'elaborazione di questo comando determina i seguenti due file:
/home/db2inst1/data/employee.020 (containing the data for the new partition 20)
/home/db2inst1/data/employee.200 (containing the data for the new partition 200)
Entrambi i file contengono la mappa delle partizioni del database utilizzata quando è stato immesso il comando LOAD Db2® ; ad esempio:
LOAD FROM /home/db2inst1/data/employee OF DEL
INSERT INTO TB_EMPLOYEE_NEW
PARTITIONED DB CONFIG MODE LOAD_ONLY ;
Quando Optim High Performance Unload ripartizione dei dati (in questo esempio da quattro partizioni del database a due) in una tabella con una chiave di ripartizione diversa, la distribuzione delle righe viene ricalcolata in base alla nuova chiave. Ad esempio, per la tabella:
TB_EMPLOYEE_NEW
(COL1 CHAR(6), COL2 VARCHAR(12), COL3 SMALLINT, COL4 DATE)
con la chiave COL3 e supponendo che le tabelle esistenti e di destinazione si trovino nello stesso database, il file di controllo che consente il ricalcolo della distribuzione righe sarà simile al seguente:
GLOBAL CONNECT TO DB_PROD ;
UNLOAD TABLESPACE DB2 NO
SELECT * FROM TB_EMPLOYEE ;
TARGET KEYS ((COL3) PARTS(20,200)) HEADER FIRST
OUTFILE("/home/db2inst1/data/employee")
FORMAT DEL;
Il risultato è due file che è possibile caricare nella tabella TB_EMPLOYEE_NEW. È questa forma, piuttosto che TARGET TABLE, che verrebbe utilizzata se si desidera ripartizionare una tabella esistente piuttosto che spostarla su un sistema diverso. Utilizzare il parametro PARTS per specificare le partizioni del database che verranno utilizzate dalla tabella, ossia due numeri di partizione del database che si trovano nel gruppo di nodi con cui si intende creare il tablespace prima di eliminare e ricreare questa tabella.