› Fóruns › Banco de dados Oracle › Linhas Migradas ou Encadeadas › Linhas Migradas ou Encadeadas
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;