jueves, 21 de mayo de 2009

A que tablespace pertenece una tabla ???

Algo muy util cuando queremos achicar o reducir el espacio de nuetros datafiles o tablespaces es saber en que tablespace estan creados nuestros objetos,
es decir:
Las tablas (x ejemplo) se crean en un tablespace, el cual si no se especifica al momento de la creación se crearan en el tablespace que tiene por defecto el usuario, como es no pasa muchas veces, es bueno poder ubicar nuestros objetos.

para ello esta SQL es fundamental.


select tablespace_name,
owner ,
segment_name objeto,
file_id,
block_id,
CEIL(blocks*4/1024) MBytes
from dba_extents where owner='DOSNEW'

PD: cambiar DOSNEW por el nombre del usuario/esquema

ORA-00054: recurso ocupado y obtenido con NOWAIT especificado

Oracle nos devulve "ORA-00054: recurso ocupado y obtenido con NOWAIT especificado" cuando por ejemplo queremos modificar la estrucutra de una tabla y alguien esta modificandola y no ha realizado commit.

Solucion, matar la session que tiene loqueada la tabla!!! ojo! el usuario perdera todas sus modificaciones!!

La consulta que hay que ejecutar para saber quien esta loqueando tablas para luego hacerle un kill es:


select object_name, o.object_id, sid, serial#, username, machine,osuser, program from user_objects o, v$locked_object l, v$session s
where o.object_id = l.object_id and l.session_id=s.sid