Juntamente com o Oracle 10g foi introduzido um comando que é o sonho de todo DBA, o comando “DROP DATABASE”, ele serve para quando você está de saco cheio daquele banco que sempre toma mais do que 90% do seu tempo e está sempre com queries ruins, consumindo bastante CPU e você, mesmo sem ter culpa (pelo menos diretamente), acaba tomando uma chamada da equipe de S.O, pois a CPU da máquina está colada no teto.
Se você já passou por problemas semelhantes, seus dias de stress acabaram!!! Com esse comando, você resolve em poucos minutos o que levaria meses para resolver pelas vias normais. “Rsrsrsrs”. Brincadeiras à parte, o comando DROP DATABASE é muito útil quando você quer remover todos os arquivos pertencentes a um banco de dados, e se temos mais de um database rodando no mesmo servidor, ele ainda é uma das maneiras mais seguras, pois evita erros humanos (Podemos remover facilmente arquivos de outro banco de dados usando o utilitário “rm” do Unix, no caso do Windows é mais difícil, pois ele trava os arquivos ao serviço do Windows). Veremos abaixo como usar este comando e os requisitos para que o mesmo seja executado com sucesso:
Na tela mostrada acima, temos todos os passos que envolvem a eliminação do banco de dados.
1) Exporte a variável corretamente para evitar matar o banco errada, é tudo isso que não queremos, erros na carreira de DBA são quase inadmissíveis.
No Unix
$ export ORACLE_SID=<>
No Windows
Set Oracle_sid=<>
2) Logue-se no banco de dados como SYS, no meu caso como estou logado no host estou usando autenticação de S.O.
$ sqlplus “/as sysdba”
Um dos requisitos é que iniciemos o banco de dados em modo restrito exclusivo, então primeiro ele deve ser baixado. Como eu irei eliminar todos os seus arquivos, posso baixar com o comando “shutdown abort”.
SQL> shutdown abort;
Quando vir a mensagem, quase que instantaneamente, “ORACLE instance shut down” pois sabemos que o comando shutdown em modo abort faz. Não sabe? Então é bom saber:
O comando shutdown em modo abort, elimina todas as sessões deixa todos os DML’s precisando de rollback, libera da memória o espaço usado pela SGA e termina os background processes. Muitos DBA’s morrem de medo desse método de shutdown com o “mito” de o banco de dados não voltar, quando não deveriam. Esse comando simplesmente diz ao Oracle para terminar o trabalho atual “agora, já”, com isso, vai implicar em um “instance recover” no momento que o banco de dados iniciar que é bem diferente de um “media recover” (onde temos de aplicar archives).
3) Depois de uma breve explicação sobre o shutdown abort, vamos iniciar o banco em modo mount exclusive restrict.
SQL> startup mount exclusive restrict;
Total System Global Area 8.5899E+10 bytes
Fixed Size 2245728 bytes
Variable Size 1308625824 bytes
Database Buffers 8.4574E+10 bytes
Redo Buffers 14528512 bytes
Database mounted.
4) Depois de verificar a mensagem “Database mounted”, podemos eliminar o banco de dados por inteiro com o comando “DROP DATABASE”. Este comando vai apagar todos os datafiles, controlfiles, redolog files e spfiles (O banco de dados inteiro). Então emitimos o commando drop database para que ele faça o trabalho para nós:
SQL> drop database;
Database dropped.
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>
Com esse retorno, não existe mais o banco de dados que você foi incumbido de eliminar.
Forte abraço,
rodrigo at mufalani dot com dot br