Eliminacija
Ulančanih redova (Migrated or Chained Rows) u tabeli
Obraditi
prikupljene informacije
Doneti
odluku o potrebi eliminacije ovih redova
Obrisati
ulančane redove ciljne tabele
Vratiti
obrisane redove ciljne tabele
Proveriti
ponovo ulačanost redova
krieira se tabela za analizu podataka
SQL>
@D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlchain.sql
SQL> desc chained_rows
Name
Null? Type
-----------------------------------------
-------- ----------------------------
OWNER_NAME VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
CLUSTER_NAME VARCHAR2(30)
PARTITION_NAME VARCHAR2(30)
SUBPARTITION_NAME VARCHAR2(30)
HEAD_ROWID
ROWID
ANALYZE_TIMESTAMP DATE
Ukolike je tabela CHAINED_ROWS korišćena obrisati stare podatke, npr.
DELETE FROM CHAINED_ROWS WHERE TABLE_NAME = 'FILE_LOAD'
. Prikupiti informaciju o
migriranim i ulančanim redovima
Koristeći ANALYZE komandu prikupiti
informaciju o migriranim i ulančanim redovima.
SQL> ANALYZE TABLE file_load LIST CHAINED ROWS;
Table analyzed.
Pregledati prikupljene informacije:
SQL> select TABLE_NAME,HEAD_ROWID,ANALYZE_TIMESTAMP from CHAINED_ROWS WHERE TABLE_NAME ='FILE_LOAD'
/
TABLE_NAME HEAD_ROWID ANALYZE_T
------------------------------
------------------ ---------
FILE_LOAD AAAIFlAALAAAADwAAI
FILE_LOAD AAAIFlAALAAAADwAAJ
FILE_LOAD AAAIFlAALAAAADwAAQ
FILE_LOAD AAAIFlAALAAAADwAAX
****
Prikazani redovi su ulančani.
Ako postoji dosta ulančanih redova doneti
odluku o potrebi eliminacije.
Krirati pomoćnu tabelu npr. FILE_LOAD_TEMP sa
istom strukturom kao što je npr. tabela file_load i u nju smestiti ulančane
redove:
CREATE TABLE FILE_LOAD_TEMP
AS SELECT *
FROM FILE_LOAD
WHERE ROWID IN
(SELECT HEAD_ROWID
FROM CHAINED_ROWS
WHERE TABLE_NAME = 'FILE_LOAD');
Obrisati ulančane redove iz tabele npr. file_load:
DELETE FROM FILE_LOAD
WHERE ROWID IN
(SELECT HEAD_ROWID
FROM CHAINED_ROWS
WHERE TABLE_NAME = 'FILE_LOAD');
Prepisati redove iz pomoćne tabele u ciljnu tabelu (npr. iz tabele Insert the rows of the intermediate table into the existing table:
INSERT INTO FILE_LOAD
SELECT * FROM FILE_LOAD_TEMP;
DROP TABLE FILE_LOAD_TEMP;
Obrisati zastarelu informaciju iz tabele
CHAINED_ROWS o alalizi tabele FILE_LOAD:
DELETE FROM CHAINED_ROWS
WHERE TABLE_NAME = 'FILE_LOAD';
Po potrebi proveriti ponovo ulačanost redova.
ANALYZE TABLE file_load LIST CHAINED ROWS;
select TABLE_NAME,HEAD_ROWID,ANALYZE_TIMESTAMP from CHAINED_ROWS WHERE TABLE_NAME ='FILE_LOAD';