/*
SCRIPT DE LIMPEZA DE PROCESSOS E DOCUMENTOS DA BASE DE DADOS DO SEI 2.6.0 (ORACLE)
Antes de executar o script:
1) Retirar o sistema do "AR" (derrubar todas sessõµes).
2) Fazer uma cópia da base imediatamente antes de executar o script.
3) Executar o script de limpeza. Se der erro, restaurar a base com a cópia feita no passo 2.
Depois de executar o script com sucesso, sendo aconselhável conferir algumas tabelas abaixo e sequenciais de protocolo de processo na tabela "infra_sequencia":
1) Apagar todos os arquivos e estrutura de pastas no Filesystem do sei_esquema.
2) Excluir os Índices do Solr, conforme orientado no final do capítulo do Solr no Manual de Instalação do SEI:
18 - Caso, no futuro, seja preciso reindexar todos os dados é aconselhável limpar antes os Índices usando os comandos abaixo:
http://[servidor_solr]:8080/solr/sei-protocolos/update?stream.body=*:*&commit=true
http://[servidor_solr]:8080/solr/sei-bases-conhecimento/update?stream.body=*:*&commit=true
http://[servidor_solr]:8080/solr/sei-publicacoes/update?stream.body=*:*&commit=true
4) Colocar o sistema de volta ao "AR".
*/
connect sei_esquema/sei_esquema@teste
/* Limpeza de tabelas afetas a Protocolo de Processos, de Documentos Gerados e Externos */
--Procedure para reiniciar sequence de acordo com o valor máximo da tabela correspondente
create or replace procedure reset_seq( p_seq_name in varchar2 )
is
l_val number;
begin
execute immediate 'select ' || p_seq_name || '.nextval from dual' INTO l_val;
execute immediate 'alter sequence ' || p_seq_name || ' increment by -' || l_val || ' minvalue 0';
execute immediate 'select ' || p_seq_name || '.nextval from dual' INTO l_val;
execute immediate 'alter sequence ' || p_seq_name || ' increment by 1 minvalue 0';
end;
/
--Início - Desabilitando as FKs
set echo off
set feedback off
set verify off
set heading off
set termout off
set pagesize 1000
set colwidth 500
set linesize 500
spool disable_fk.sql
select 'ALTER TABLE '||cons.table_name||' DISABLE CONSTRAINT '||constraint_name||' CASCADE;'
from user_tables tabs
INNER JOIN user_constraints cons on (cons.table_name = tabs.table_name)
where cons.CONSTRAINT_TYPE = 'R';
spool off
@disable_fk.sql;
/
--Fim - Desabilitando as FKs
truncate table anexo;
exec reset_seq('sei_esquema.seq_anexo');
truncate table numeracao;
exec reset_seq('sei_esquema.seq_numeracao');
truncate table acesso;
exec reset_seq('sei_esquema.seq_acesso');
truncate table acesso_externo;
exec reset_seq('sei_esquema.seq_acesso_externo');
truncate table acompanhamento;
exec reset_seq('sei_esquema.seq_acompanhamento');
truncate table grupo_acompanhamento;
exec reset_seq('sei_esquema.seq_grupo_acompanhamento');
truncate table andamento_situacao;
exec reset_seq('sei_esquema.seq_andamento_situacao');
truncate table rel_proced_situacao_unidade;
truncate table anotacao;
exec reset_seq('sei_esquema.seq_anotacao');
truncate table assinatura;
exec reset_seq('sei_esquema.seq_assinatura');
truncate table estatisticas;
exec reset_seq('sei_esquema.seq_estatisticas');
truncate table indexacao_base_conhecimento;
truncate table base_conhecimento;
exec reset_seq('seq_base_conhecimento');
truncate table rel_base_conhec_tipo_proced;
truncate table indexacao_protocolo;
truncate table indexacao_publicacao;
truncate table versao_secao_documento;
exec reset_seq('sei_esquema.seq_versao_secao_documento');
truncate table secao_documento;
exec reset_seq('sei_esquema.seq_secao_documento');
truncate table atributo_andamento;
exec reset_seq('sei_esquema.seq_atributo_andamento');
truncate table retorno_programado;
exec reset_seq('sei_esquema.seq_retorno_programado');
truncate table participante;
exec reset_seq('sei_esquema.seq_participante');
truncate table observacao;
exec reset_seq('sei_esquema.seq_observacao');
truncate table rel_protocolo_assunto;
truncate table rel_protocolo_protocolo;
exec reset_seq('sei_esquema.seq_rel_protocolo_protocolo');
truncate table publicacao;
exec reset_seq('sei_esquema.seq_publicacao');
truncate table rel_bloco_protocolo;
truncate table rel_bloco_unidade;
truncate table protocolo_modelo;
exec reset_seq('sei_esquema.seq_protocolo_modelo');
truncate table grupo_protocolo_modelo;
exec reset_seq('seq_grupo_protocolo_modelo');
truncate table unidade_publicacao;
exec reset_seq('sei_esquema.seq_unidade_publicacao');
truncate table serie_escolha;
truncate table serie_publicacao;
exec reset_seq('sei_esquema.seq_serie_publicacao');
truncate table texto_padrao_interno;
exec reset_seq('sei_esquema.seq_texto_padrao_interno');
truncate table rel_protocolo_atributo;
truncate table feed;
exec reset_seq('sei_esquema.seq_feed');
truncate table velocidade_tr
ansferencia;
truncate table atributo_andamento_situacao;
exec reset_seq('sei_esquema.seq_atributo_andamento_situaca');
truncate table auditoria_protocolo;
exec reset_seq('sei_esquema.seq_auditoria_protocolo');
truncate table rel_notificacao_documento;
truncate table estatisticas;
exec reset_seq('sei_esquema.seq_estatisticas');
truncate table atributo_andamento;
exec reset_seq('sei_esquema.seq_atributo_andamento');
truncate table notificacao;
exec reset_seq('sei_esquema.seq_notificacao');
truncate table bloco;
exec reset_seq('sei_esquema.seq_bloco');
truncate table atividade;
exec reset_seq('sei_esquema.seq_atividade');
truncate table documento;
exec reset_seq('sei_esquema.seq_documento');
truncate table procedimento;
truncate table tipo_procedimento_escolha;
truncate table protocolo;
exec reset_seq('sei_esquema.seq_protocolo');
truncate table grupo_email;
exec reset_seq('sei_esquema.seq_grupo_email');
/* Se no banco a ser limpo tenha Grupos de E-mail Institucionais configurados na Administraçã£o do SEI, verifique a possibilidade de reconfigurá-los manualmente pela aplicação. Caso tenha necessidade de mantê-los no banco, em vez de executar os dois comandos acima, deve executar o comando abaixo para deletar apenas os Grupos de E-mail dos Usuários, não sendo possível o realinhamento dos IDs:
delete from grupo_email where sta_tipo='U';
*/
truncate table grupo_unidade;
exec reset_seq('sei_esquema.seq_grupo_unidade');
/* Se no banco a ser limpo tenha Grupos de Envio Institucionais configurados na Administração do SEI, verifique a possibilidade de reconfigurá-los manualmente pela aplicação. Caso tenha necessidade de mantê-los no banco, em vez de executar os dois comandos acima, deve executar o comando abaixo para deletar apenas os Grupos de Envio dos Usuários, não sendo possível o realinhamento dos IDs:
delete from grupo_unidade where sta_tipo='U';
*/
/* Reconstrui as tabelas de log e auditoria e tabelas sequenciais correspondentes */
truncate table infra_auditoria;
exec reset_seq('sei_esquema.seq_infra_auditoria');
truncate table infra_log;
exec reset_seq('sei_esquema.seq_infra_log');
truncate table infra_navegador;
exec reset_seq('sei_esquema.seq_infra_navegador');
truncate table infra_dado_usuario;
--Início - Habilitando as FKs
set echo off
set feedback off
set verify off
set heading off
set termout off
set pagesize 1000
set colwidth 500
set linesize 500
spool enable_fk.sql
select 'ALTER TABLE '||cons.table_name||' ENABLE CONSTRAINT '||constraint_name||';'
from user_tables tabs
INNER JOIN user_constraints cons on (cons.table_name = tabs.table_name)
where cons.CONSTRAINT_TYPE = 'R';
spool off
@enable_fk.sql;
/
--Fim - Habilitando as FKs
/*
Sobre a última linha abaixo, a tabela de sequência anual de protocolo de processos pode ser qualquer um dos formatos abaixo (de acordo com a configuração da numeração de protocolo):
seq_[ano]_org_sip_[id sip]
seq_[ano]_org_sei_[cod sei]
seq_[ano]_uni_sip_[id sip]
seq_[ano]_uni_sei_[cod sei]
*/
delete from infra_sequencia where nome_tabela like 'seq_%_uni_sei_%';
delete from infra_sequencia where nome_tabela like 'seq_%_uni_sip_%';
delete from infra_sequencia where nome_tabela like 'seq_%_org_sei_%';
delete from infra_sequencia where nome_tabela like 'seq_%_org_sip_%';
update infra_sequencia set num_atual=0 where nome_tabela='infra_log';
update infra_sequencia set num_atual=0 where nome_tabela='infra_navegador';
/********************************************************************************************************************************************************/