ok, o primeiro requisito vc já tem... A geração de código , se vc optar pelo 
sqlplus, seria conectar como o OWNER em questão e fazer  algo + ou - tipo, se 
não errei nos plics :

set term off feedback off verify off pages 0 lines 500 trimspool on head off
spool delete_tables.sql
select 'DELETE FROM '  || table_name 
  || ' WHERE nomedacoluna < to_date(''01/01/2009'', ''dd/mm/yyyy'')'
  from USER_TABLES
/
spool off
exit

 O cursor PL/SQL seria semelhante, retirando-se os comandos sqlplus e 
encaixando o SQL no loop, e dentro do loop executando-se via EXECUTE IMMEDIATE 
a string montada...

[]s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Carlos Pinto" <carlos.pintoo@...> escreveu
>
> Valeu….tenho um campo data em todas as tabelas.
> 
>  
> 
> Com os melhores cumprimentos, 
> 
> Carlos Pinto
> 
>  
> 
> De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
> nome de José Laurindo
> Enviada: sexta-feira, 20 de Janeiro de 2012 12:25
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Re: Limpeza de registos
> 
>  
> 
>   
> 
> Bem, o primeiro passo é ter como LOCALIZAR a data em que os registros foram
> inseridos : o RDBMS Oracle absolutamente *** NÃO *** armazena por default
> essa informação, assim OU vc tem que ter uma coluna em cada tabela que traga
> essa informação, OU vc tem algum tipo de Auditoria ativado (seja via AUDIT,
> FGA, logminer, trigger de DML, o que for) que traga essa informação
> (obviamente essa Auditoria deveria estar ativa ANTES da inserção) .... Se
> NENHUMA das duas opções é verdadeira, vc Não Tem Como saber quando o
> registro foi inserido, é isso ...
> Uma vez vc tendo onde buscar a informação, é um simples DELETE o que vc vai
> fazer (ou um DROP PARTITION num caso ideal aonde a tabela é particionada e a
> informação de inserção é citada na chave de particionamento) : claro, para
> que vc não tenha que escrever um comando para cada tabela vc VAI usar alguma
> técnica de geração de código : pode ser simplesmente um cursor aonde cada
> string de comando para cada tabela é montada e executada via EXECUTE
> IMMEDIATE, ou (a minha favorita) vc gera um script .SQL via spool no
> sql*plus via SELECT que retorne a informação ...
> 
> []s
> 
> Chiappa
> --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
> , "Carlos Pinto" <carlos.pintoo@> escreveu
> >
> > Bom dia,
> > 
> > 
> > 
> > Amigos como posso Eliminar todos os registos anterior ao ano 2009 de todas
> > as tabelas de um determinado SCHEMA?
> > 
> > 
> > 
> > Obrigado.
> > 
> > Carlos Pinto
> > 
> > 
> > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a