Apagando Tabelas "Futuras" (acidentais) do módulo Contábil

   Nestes dias ao configurar um dump de dados de determinado cliente percebi que o processo estava demorando demais. Sendo assim abri o arquivo de log do dump e percebi que estavam sendo exportadas diversas tabelas CCMC (Movimentos Contábeis) que, por padrão, são sufixadas pelo ANO corrente e são criadas já algumas para alguns anos a frente. Como por exemplo CCMC2010, CCMC2011, CCMC2012, etc...

   O porém disso tudo é que, nesta base especificamente, foi realizada uma criação de diversas tabelas com vários anos a frente. Chegando até o ano de 9999. Além de vários anos que antecediam até a própria idade da empresa. Apesar destas tabelas estarem vazias elas ocupam espaço no banco de dados, além de tornarem o processo de exportação/importação de dados muito mais demorado. 

   Como remover uma a uma daria bastante trabalho montei o script abaixo para gerar como saída o comando de exclusão de cada uma destas tabelas com anos tão altos. O script ficou assim:

select 'DROP TABLE ' || TABLE_NAME || ';'
from dba_tables
where owner = 'CIGAM'
and table_name like 'CCMC%'
and table_name not like 'CCMC20%'
and num_rows = 0 --Traz somente tabelas sem registros
order by table_name

A saída do script foi como esta:
DROP TABLE CCMC1940;
DROP TABLE CCMC1944;
DROP TABLE CCMC1945;
DROP TABLE CCMC1946;
DROP TABLE CCMC1947;
DROP TABLE CCMC1948;
DROP TABLE CCMC1949;
DROP TABLE CCMC1950;
DROP TABLE CCMC1951;
DROP TABLE CCMC1952;
DROP TABLE CCMC1953;
DROP TABLE CCMC1954;
DROP TABLE CCMC1955;
DROP TABLE CCMC1956;
DROP TABLE CCMC1957;
DROP TABLE CCMC1958;
DROP TABLE CCMC1959;
DROP TABLE CCMC1960;
DROP TABLE CCMC1961;
DROP TABLE CCMC1962;
DROP TABLE CCMC1963;
DROP TABLE CCMC1964;
DROP TABLE CCMC1965;
DROP TABLE CCMC1966;
DROP TABLE CCMC1967;
DROP TABLE CCMC1968;
DROP TABLE CCMC1969;
DROP TABLE CCMC1970;
DROP TABLE CCMC1971;
DROP TABLE CCMC1972;
DROP TABLE CCMC1973;
DROP TABLE CCMC1974;
DROP TABLE CCMC1975;
DROP TABLE CCMC1976;
DROP TABLE CCMC1977;
DROP TABLE CCMC1978;
DROP TABLE CCMC1979;
DROP TABLE CCMC1980;
DROP TABLE CCMC1981;
DROP TABLE CCMC1982;
DROP TABLE CCMC1983;
DROP TABLE CCMC1984;
DROP TABLE CCMC1985;
DROP TABLE CCMC1986;
DROP TABLE CCMC1987;
DROP TABLE CCMC1988;
DROP TABLE CCMC1989;
DROP TABLE CCMC1990;
DROP TABLE CCMC1991;
DROP TABLE CCMC1992;
DROP TABLE CCMC1993;
DROP TABLE CCMC1994;
DROP TABLE CCMC1995;
DROP TABLE CCMC1996;
DROP TABLE CCMC1997;
DROP TABLE CCMC1998;
DROP TABLE CCMC1999;
DROP TABLE CCMC2100;
DROP TABLE CCMC2101;
DROP TABLE CCMC2102;
DROP TABLE CCMC2103;
DROP TABLE CCMC2104;
DROP TABLE CCMC2105;
DROP TABLE CCMC2106;
DROP TABLE CCMC2107;
DROP TABLE CCMC2108;
DROP TABLE CCMC2109;
DROP TABLE CCMC2110;
DROP TABLE CCMC2111;
DROP TABLE CCMC2112;
DROP TABLE CCMC2113;

   Pelo SqlDeveloper copiei o resultado da saída do script e executei novamente, fazendo um drop sequencial de todas as tabelas que não deviam estar criadas ainda na base. Após isso o processo de backup e as exportações/importações de dados ficaram muito mais rápidas.


Postar um comentário

Postagens mais visitadas deste blog

[eXo] - Remover janela de solicitação de Registro

[Kettle] - Ajuste de problema com horário de verão

Pegando informações de Sessão no Oracle e equivalente no MSSQL