Eliminacija Ulančanih redova u tabeli

 

Eliminacija Ulančanih redova (Migrated or Chained Rows) u tabeli 1

Pre pocetka rada …. 1

Obraditi prikupljene informacije. 1

Doneti odluku o potrebi eliminacije ovih redova. 2

Kreirati pomoćnu tabelu. 2

Obrisati ulančane redove ciljne tabele. 2

Vratiti obrisane redove ciljne tabele. 3

Obrisati pomoćnu tabelu. 3

Obrisati podatke o analizi 3

Proveriti ponovo ulačanost redova. 3

 

 

          Pre pocetka rada ….

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.

 

     Obraditi prikupljene informacije 

 

      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 02-MAR-07

     FILE_LOAD                      AAAIFlAALAAAADwAAJ 02-MAR-07

     FILE_LOAD                      AAAIFlAALAAAADwAAQ 02-MAR-07

     FILE_LOAD                      AAAIFlAALAAAADwAAX 02-MAR-07

        ****

 

      Prikazani redovi su ulančani.

 

    Doneti odluku o potrebi eliminacije ovih redova

 

      Ako postoji dosta ulančanih redova doneti odluku o potrebi eliminacije.

 

 

     Kreirati pomoćnu tabelu 

 

      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 ciljne tabele

 

    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');

 

 

    Vratiti obrisane redove ciljne tabele

 

      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;

 

 

   Obrisati pomoćnu tabelu

 

 

      DROP TABLE FILE_LOAD_TEMP;

 

 

   Obrisati podatke o analizi

 

      Obrisati zastarelu informaciju iz tabele CHAINED_ROWS o alalizi tabele FILE_LOAD:

 

      DELETE FROM CHAINED_ROWS

         WHERE TABLE_NAME = 'FILE_LOAD';

 

 

    Proveriti ponovo ulačanost redova

 

      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';