Si queremos ir equilibrando la ocupacion de los dbspaces que componen nuestra base de datos, es interesante tener una herramienta que nos permita conocer qué tablas son las que mas espacio ocupan en un determinado dbspace para ver si nos conviene pasarlas a otro.
Desde sql ejecutamos la instrucción:
DATABASE sysmaster;
SELECT
t2.name dbspace,
t1.tabname table,
t1.owner owner,
TRUNC(t3.nrows,0) rows,
TRUNC(t3.rowsize,0) row_size,
TRUNC(t3.nrows*t3.rowsize/1024/1024,2) MB
FROM systabnames t1,sysdbspaces t2, segeua:systables t3
WHERE t2.dbsnum=trunc(t1.partnum/1048576)
AND t2.name='dbspace_01'
AND t1.tabname = t3.tabname
ORDER BY 6 DESC
Obtendremos una lista como esta:
DBSPACE DE UNA TABLA
Con una pequeña modificación de la query anterior podemos conocer el dbspace en el que se encuentra una determinada tabla:
DATABASE sysmaster;
SELECT
t2.name dbspace,
t1.tabname table,
t1.owner owner,
TRUNC(t3.nrows,0) rows,
TRUNC(t3.rowsize,0) rowsize,
TRUNC(t3.nrows*t3.rowsize/1024/1024,2) MB
FROM systabnames t1,sysdbspaces t2, segeua:systables t3
WHERE t2.dbsnum=trunc(t1.partnum/1048576)
AND t1.tabname='tabla_01'
AND t1.tabname = t3.tabname
A mi me han sido de utilidad y continuan siendolo.
Hasta la próxima.
Hola Arturo, excelente dml.
ResponderEliminarTendras algun dml o script que valide cuando las tablas de informix 4gl se danan?