Es realmente rara la vez que se solicita eliminar una BD, sin embargo, nosotros como DBA debemos saber cómo realizar esta actividad.
Debemos tener presente que hay varias formas de eliminar una base de datos:
- SQL*PLUS
- RMAN
- dbca
Hoy veremos la manera de eliminar una base de datos a través de SQL*PLUS, con la sentencia drop database
SQL*PLUS
Al principio, validamos las instancias que tenemos arriba
[oracle@soyundba ~]$ ps -efl | grep smon
0 S oracle 2878 1 0 80 0 - 649978 SYSC_s 21:14 ? 00:00:00 ora_smon_soyundba
0 S oracle 2962 2816 0 80 0 - 25848 pipe_w 21:24 pts/1 00:00:00 grep smon
Como podemos observar, tenemos la instancia llamada soyundba, teniendo en cuenta que ya debemos tener configuradas nuestras variables de entorno desde el .bash_profile
SQL> SET LINES 200
COL NAME FOR A24
COL VALUE FOR A55
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME LIKE '%dump%dest%' OR NAME LIKE '%audit%dest%';
NAME VALUE
------------------------ -------------------------------------------------------
background_dump_dest /oracle/app/oracle/diag/rdbms/soyundba/soyundba/trace
user_dump_dest /oracle/app/oracle/diag/rdbms/soyundba/soyundba/trace
core_dump_dest /oracle/app/oracle/diag/rdbms/soyundba/soyundba/cdump
audit_file_dest /oracle/app/oracle/admin/soyundba/adump
Mientras tanto con esto podremos obtener los directorios importantes y los cuales deberemos eliminar manualmente:
- /oracle/app/oracle/diag/rdbms/soyundba/
- /oracle/app/oracle/admin/soyundba/
A partir de este momento comienza lo divertido, procedemos a bajar la base de datos
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
Realizaremos el levantado de la base de datos en modo exclusive restrict
SQL> startup mount exclusive restrict
ORACLE instance started.
Total System Global Area 2405122048 bytes
Fixed Size 2255592 bytes
Variable Size 603981080 bytes
Database Buffers 1778384896 bytes
Redo Buffers 20500480 bytes
Database mounted.
SQL> select instance_name,status,logins from v$Instance;
INSTANCE_NAME STATUS LOGINS
---------------- ------------ ----------
soyundba MOUNTED RESTRICTED
Finalmente, con la sentencia drop database realizaremos la eliminación de nuestra base de datos, este tardará un tiempo dependiendo del tamaño
SQL> drop database;
Database dropped.
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Sin embargo, aquí no hemos terminado, pues con la consulta anterior de los archivos, debemos ir a eliminar aquellos archivos físicos de nuestra base de datos (control file, redo logs, spfile, etc.). También como los backups y archive logs
[oracle@soyundba ~]$ rm -rf /oracle/app/oracle/diag/rdbms/soyundba/
[oracle@soyundba ~]$ rm -rf /oracle/app/oracle/admin/soyundba/
[oracle@soyundba ~]$ rm -rf /oracle/app/oracle/product/11.2.0/db/dbs/*soyundba*
[oracle@soyundba ~]$ rm -rf /backup/soyundba/
[oracle@soyundba ~]$ rm -rf /arclog/soyundba/
Así mismo, debemos realizar la eliminación del archivo /etc/oratab
[oracle@soyundba ~]$ grep soyundba /etc/oratab
soyundba:/oracle/app/oracle/product/11.2.0/db:Y
[oracle@soyundba ~]$ grep -v soyundba /etc/oratab > /tmp/oratab
[oracle@soyundba ~]$ cat /tmp/oratab > /etc/oratab
[oracle@soyundba ~]$ grep soyundba /etc/oratab
Ahora si, finalmente hemos realizado la eliminación de nuestra base de datos.
Adicional, dado el caso que sea necesario, de esta manera se puede eliminar una pluggable database
Te invito a seguir consultando más articulos relacionados a Oracle dando clic aquí.