Pular para o conteúdo

Fóruns Banco de dados Oracle Linhas Migradas ou Encadeadas Linhas Migradas ou Encadeadas

#89782
vieri
Participante

    tente esse mini how-to Paulo:

    LINHAS-ENCADEADAS=>>CHAINED_ROWS

    select table_name,
    num_rows,
    chain_cnt,
    avg_row_len,
    pct_free,
    pct_used
    from dba_tables
    where chain_cnt > 0
    order by chain_cnt desc;

    ELIMINANDO AS LINHAS ENCADEADAS

    Antes de começar o processo, verifique se em seu Banco existe a tabela CHAINED_ROWS,
    caso ela não tenha sido criada em outro momento,
    faça isso agora através do script “ORACLE_HOME/rdbms/admin/UTLCHAIN.SQL”

    **Atenção: este processo deve ser preferencialmente executado sem que outras sessões
    estejam sendo executadas no momento,
    para que com isso possamos garantir a integridade dos dados,
    isso é facil de obter colocando o
    banco em RESTRICT MODE ou simplesmente bloqueando o
    objeto em questão ( LOCK TABLE ).

    Iniciando o processo:
    analyze table xx list chained rows into CHAINED_ROWS;
    create table temp_xx as select * from xx
    where rowid in (select head_rowid from chained_rows
    where table_name = ‘xx’
    and owner= ‘OWNER’);

    Obs.: Neste passo transferimos os dados para uma tabela auxiliar para nos ajudar com o processo de eliminação das linhas encadeadas.

    delete from xx
    where rowid in (select head_rowid from chained_rows
    where table_name = ‘xx’
    and owner= ‘OWNER’);

    insert into xx select * from temp_xx;

    drop table xx_temp;