Pessoal,
Quero identicar algumas tabelas com blocos corrompidos.
Sei que posso usar o RMAN, com o commando backup validate e checar a view
apropriada para ver os blocos corrompidos e depois através do RMAN mesmo
corrigi-los.
Mas a dúvida aqui é outra.
Estou tentando utilizar a DBMS_REPAIR. Dei grant para o usuário, criei as
tabelas REPAIR_TABLE e ORPHAN_KEY_TABLE e criei uma procedure para ler todas as
tabelas. A procedure coloco abaixo:
Porém ao executá-la, ela me retorna uma exceção -600 , pude perceber que o
problema é na instrução "OBJECT_NAME => i.table_name ", se coloco
"OBJECT_NAME => 'nome_tabela' " ai funciona sem problemas, mas quero passar
dinamicamente o nome das tabelas, para checar todas.
Alguém teria alguma idéia?
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
SUSE Linux Enterprise Server 11 SP1 (x86_64)
Obrigado
Fernando
CREATE OR REPLACE PROCEDURE proc030
as
num_corrupt INT;
begin
delete from cerv.log10 ;
for i in ( select table_name from user_tables where 1=1 and table_name
not in ( select view_name from user_views)
) LOOP
num_corrupt := 0;
sys.DBMS_REPAIR.CHECK_OBJECT ( SCHEMA_NAME => 'CERV' , OBJECT_NAME =>
i.table_name , REPAIR_TABLE_NAME => 'REPAIR_TABLE', CORRUPT_COUNT =>
num_corrupt);
insert into cerv.log10(log) values ( i.table_name) ;
end loop;
EXCEPTION when others then
dbms_output.put_line('procd004 '|| sqlcode );
end;
/