Uncategorized | Dia a Dia Oracle
Copiar tabela no Oracle – Backup de tabela
Uma coisa bastante útil e bastante simples que podemos precisar no nosso dia a dia é fazer uma cópia de uma determinada tabela do nosso banco de dados.
1 – Um update nas colunas;
2 – Deleção de alguns registros;
Entre outros que envolvam os dados contidos nesta tabela.
Portanto, em casos como esses, queremos garantir que caso dê alguma "caca" tenhamos de onde recuperar as informações rapidamente, nada mais rápido que um select em uma tabela que encontra-se no mesmo banco, sem precisar voltar backup, sem precisar acionar DBA, sem nada.
Vamos supor que temos em nosso banco de dados uma tabela de módulos do nosso sistema, chamada TB_MODULOS, e precisaremos fazer umas alterações nesta tabela… Para garantir, vamos fazer uma cópia dela.
Primeiro vamos contar quantos registros temos na nossa tabela de origem, pra ter certeza que a cópia levou tudo, não adianta termos uma cópia inconsistente!
SQL> select count(*) from tb_modulos;
Beleza, nossa tabela tem 264.960 linhas! Portanto, nossa cópia tem que estar exatamente igual!!
Vamos agora fazer a cópia da tabela:
SQL> create table tb_modulos_22012010 as select * from tb_modulos;
Depois da tabela criada, vamos contar a nova tabela, pra garantir que tem a mesma quantidade de registros!!
SQL> select count(*) from tb_modulos_22012010;
Pronto, nossa cópia funcionou perfeitamente, todos os 264.960 registros que tinhamos em TB_MODULOS agora estão em TB_MODULOS_22012010, podemos agora proceder com as alterações na tabela de módulos sem maiores problemas no caso de ocorrer um erro! Garantia é o melhor remédio!!! Rsrs.
Portanto, vimos que temos como fazer uma cópia de forma rápida de uma tabela do nosso banco de dados. O comando padrão para isso é: create table "TABELA_NOVA" as select * from "TABELA_ANTIGA", lembrando que desta forma você faz uma cópia da tabela inteira, mas você pode muito bem selecionar apenas algumas colunas, fazer um filtro usando uma cláusula where e etc… a "moral da história" é que: será criada uma tabela nova com o resultado do select que você fizer!!