Archivos mensuales: marzo 2013

Saber cuando se reinició por última vez una base de datos Oracle

Para saber cuando rebotó una BBDD por última vez:

- desde Sistema Operativo (Unix/Linux):

# ps -ef | grep pmon
oracle   10541     1  0 Jan29 ?        00:03:27 ora_pmon_ORCL
oracle   13606 23880  0 12:25 pts/2    00:00:00 grep pmon

Sale la hora en el proceso. Esa hora corresponde a la última vez que se reinició la instancia de BD.

- desde SQLPLUS

select status, startup_time, instance_name from v$instance;

O lo que es lo mismo pero adornado:

select status Estado, to_char(startup_time, 'HH24:MI DD-MON-YY') "Hora y Fecha de Arranque", instance_name Instancia
from v$instance
/

Cómo cambiar de Tablespace los índices de un usuario

A veces es necesario cambiar todos los índices de un usuario a un tablespace espécífico de índices. Esto era muy importante en versiones 7, 8 y 9 de Oracle.  Una manera sencilla de hacerlo es desde sqlplus.

La idea es hacer un script que genere otro script con la sentencia sql que permita hacer el cambio. Sería como sigue …

Creamos un fichero llamado alter_ind_ts.sql y dentro copiamos el siguiente contenido:

$ vi alter_ind_ts.sql

Copiamos lo siguiente dentro …

spool alter_ind_ts_usuario.sql
set heading off
set linesize 180
select 'alter index '||owner||'.'||index_name||' rebuild tablespace <Poner_tablespace_destino>;'
from dba_indexes
where owner = '<nombre_usuario_propietario_indices>'
/
spool off

Posteriormente ejecutamos desde sqlplus conectados como system por ejemplo el script alter_ind_ts.sql :

SQL> start alter_ind_ts.sql;

Esto nos generará el script alter_ind_ts_usuario.sql que después de “recrearlo”, es decir, quitar la línea del final donde nos indica las filas devueltasy ponerle un “spool” al inicio del fichero y al final para que nos guarde el resultado de la ejecución del script. Podremos ejecutarlo posteriormente desde el mismo sqlplus y nos realizará el cambio de tablespace de los índices del usuario especificado.

SQL> start alter_ind_ts_usuario.sql ;