lunes, 30 de noviembre de 2009

Purgar la Papelera de Reciclaje de Oracle 10g

Posiblemente a las personas que administran Oracle 10g vieron que al eliminar objetos tales como tablas, vistas, triggers y otros se generan otros nuevos objetos con una nomenclatura como la de la imagen:









Eso quiere decir que todos los objetos que eliminamos se van a la papelera de Oracle, de donde podemos recuperarlos o sino eliminarlos definitivamente, tal y como me paso en los servidores de Oracle, hay varias formas de borrar esos objetos y pasare a explicarlos:

1. Primero hay que verificar si tenemos objetos en nuestra papelera, para esto hay que conectarnos con el usuario owner del esquema al sqlplus y el siguiente comando SQL:

SQL>select * from recyclebin;

2. Si encontramos que si tenemos objetos en la papelera hay varias formas de eliminarlas y son:

SQL> PURGE TABLE tab1; elimina la tabla tab1 de la papelera
SQL> PURGE INDEX ind1; elimina el indice ind 1 de la papelera
SQL> PURGE recyclebin; (elimina todos los objetos de la papelera del usuario)
SQL> PURGE dba_recyclebin; (elimina todos los objetos de la papelera a nivel de base de datos, se debe conectar con usuario SYSDBA)
SQL> PURGE TABLESPACE users; (elimina todos los objetos de la papelera que pertenecen al tablespace users)

Y con esto tenemos nuestros tablespaces limpios de esos objetos que habian sido eliminados.

Saludos

jueves, 19 de noviembre de 2009

Reducir tamaño de tablespace TEMP en Oracle 10g

El día de Hoy se presento este problema justo en el ambiente de produccion de Oracle 10g, el tablespace TEMP crecio intempestivamente a un tamaño de 23GB llenando casi a la unidad donde estaba alojada, como es en un ambiente de produccion que tiene que estar activa las 24 horas no hay forma casi de bajar la DB, asi es que tenia que hacerlo de otra forma online. Lo que al final hice fue lo siguiente:

1. Desde el sqlplus agregue un archivo temporal al tablespace TEMP de la siguiente manera:

Alter Tablespace TEMP ADD TEMPFILE '/d01/oradata/orabn/temp03.dbf' SIZE 4096M;

ven que le di un tamaño de 4GB, bueno le di ese tamaño para que tampoco en el ambiente de produccion no se quede muy chico, en mi caso yo ya tenia 2 archivos temporales asi es que cree el numero 3.

2. Ahora puse en OFFLINE los 2 tempfiles anteriores dejando solo como online al que agregue recien. Esto lo pueden hacer directamente desde el Enterprise Manager o tambien por comandos pero yo lo hice desde el EM.

3. Ahora le hice un DROP a los anteriores que habia puesto como OFFLINE con el sigueinte comando:

ALTER TABLESPACE TEMP DROP TEMPFILE '/d08/oradata/temp02.dbf';

y con eso libere el espacio que estaban utilizando en disco y ademas deje con un nuevo archivo Temp limpio y mas pequeño.

Hay que tener en cuenta que la informacion que se almacena en el TEMP no es relevante y se puede borrar con toda confianza.
Espero que les sirva.
Saludos