El documento describe las diferentes consultas que se pueden realizar en la base de datos sysmaster de Informix para obtener información sobre el estado del sistema, como el tiempo de conexión de los usuarios, las tablas más activas, la versión del motor de base de datos, los bloqueos activos y el espacio utilizado en los dbspaces. Sysmaster permite monitorear y administrar una instancia de Informix de forma no intrusiva mediante consultas SQL.
1. IFMX:Sysmaster
Contenido
[ocultar]
1 Bases de datos de sistema
2 Qué es sysmaster
o 2.1 Cuanto tiempo hace que un usuario se ha conectado
o 2.2 Cuanto tiempo está un usuario inactivo
o 2.3 Determinar el level isolation de mi sesión
o 2.4 Como vincular una sesión a una transacción
o 2.5 Cómo encontrar las tablas más activas
o 2.6 Cuanto tiempo hace que el motor se está ejecutando
o 2.7 Cómo encontrar la sentencia SQL actual
o 2.8 Dónde están los logs
o 2.9 Cual es la versión actual del motor
o 2.10 Cómo listar los usuarios
o 2.11 Estadísticas de uso de CPU para cada sesión
o 2.12 Estadísticas de IO de disco para cada sesión
o 2.13 Cómo convertir un PID en un ID de sesión
o 2.14 Cómo encontrar los "sequential scans" de una tabla
o 2.15 Cómo listar el estado de "logging" de una base de datos
o 2.16 Cómo listar los bloqueos
o 2.17 Cómo listar los bloqueos de tipo base de datos
o 2.18 Cómo mostrar el espacio libre de los logs
o 2.19 Cual es el tamaño de página por defecto
o 2.20 Cuantas filas tiene una tabla
o 2.21 Cómo obtener el nombre de usuario
o 2.22 Cómo listar todas las bases de datos
o 2.23 What is the database to dbspace mapping
o 2.24 Cual es el tamaño de página de un blobspace
o 2.25 En qué dbspaces tiene almacenados datos cada tabla
o 2.26 Cual es el tamaño total de los dbspaces
o 2.27 Que sentencias utilizan índices poco balanceados
o 2.28 Estadísticas de IO de disco por tabla
o 2.29 Lista de todas las tablas residentes en dbspaces temporales
o 2.30 Cual es el tamaño de una tabla
o 2.31 Lista de los extents de una tabla
2. o 2.32 Configuración actual del motor
o 2.33 onstat -p: Información del "profile" del motor
o 2.34 Información acerca de los logs
o 2.35 Cómo resumir las estadísticas de los procesadores virtuales
o 2.36 Cuanto espacio queda libre en los DBSpaces
o 2.37 Porcentaje de ocupación de los DBSpaces
o 2.38 Cual es la situación actual de los chunks
o 2.39 Cuanto espacio queda libre en un chunk
o 2.40 Estadísticas de IO de disco por chunk
o 2.41 Cual es el porcentaje de IO para los chunks
o 2.42 En qué dbspace están las tablas
o 2.43 Estadisticas de IO por tabla
o 2.44 Espacio ocupado por tabla
o 2.45 Cuales son las tablas más ocupadas
o 2.46 Tamaño total ocupado por las bases de datos
o 2.47 Cuando se ejecutó el último UPDATE STATISTICS
o 2.48 Cuando se ejecutó el último onstat -z
o 2.49 When was Update Stats last run
o 2.50 Opciones del comando DBINFO
o 2.51 Espacio ocupado por el "physical log"
o 2.52 A qué base de datos está conectada la sesión actual
o 2.53 En qué dbspaces están los índices
o 2.54 Qué tablas están en el rootdbs
o 2.55 En qué modo se está ejecutando el motor
o 2.56 Qué tipo de instancia se está ejecutando
o 2.57 Qué dbspaces se están utilizando por una base de datos
o 2.58 Cuales son los índices no utilizados
o 2.59 Estadísticas utilizadas para la verificación del licenciamiento
o 2.60 Estadísticas de los recursos usados
3 Qué es sysadmin
4 Qué es sysusers
[editar]1 Bases de datos de sistema
[editar]2 Qué es sysmaster
Sysmaster es una base de datos del sistema que permite el acceso a la información interna del motor mediante un
interface SQL.
[editar]2.1 Cuanto tiempo hace que un usuario se ha conectado
select sid, username,
3. dbinfo('UTC_TO_DATETIME',connected) conection_time,
current - dbinfo('UTC_TO_DATETIME',connected) connected_since
from syssessions
order by 2,3
[editar]2.2 Cuanto tiempo está un usuario inactivo
SELECT s.sid, s.username, q.odb_dbname database,
dbinfo('UTC_TO_DATETIME',s.connected) conection_time,
dbinfo('UTC_TO_DATETIME',t.run_time) last_run_time,
current - dbinfo('UTC_TO_DATETIME',t.run_time) idle_time
FROM syssessions s, systcblst t, sysrstcb r, sysopendb q
WHERE t.tid = r.tid AND s.sid = r.sid AND s.sid = q.odb_sessionid
ORDER BY 6 DESC
[editar]2.3 Determinar el level isolation de mi sesión
SELECT isolevel
FROM sysmaster:sysrstcb R, sysmaster:systxptab T
WHERE R.sid = DBINFO("sessionid")
AND T.address = R.txp;
0 no transactions
1 dirty read (read only)
2 read committed data only
3 cursor record locked
5 repeatable reads
6 dirty read warning
7 dirty read (read only) retain U-locks
8 read committed data only retain U-locks
9 cursor record locked retain U-locks
10 dirty read warning retain U-locks
11 Last committed
[editar]2.4 Como vincular una sesión a una transacción
select tx_id
from systrans
where tx_addr = (select us_txp
from sysuserthreads
where us_sid = SESSIONID)
Históricamente, esta la tabla systrans no indica si el usuario está realmente en una transacción, por ejemplo
**BEGIN WORK** a no ser que se hayan realizado operaciones dentro de la transacción, ya que los indicadores de
la tabal no cambian cuando la transacción empieza.
[editar]2.5 Cómo encontrar las tablas más activas
select systabnames.tabname,
sysptntab.pf_isread,
sysptntab.pf_iswrite,
sysptntab.pf_isrwrite,
sysptntab.pf_isdelete,
sysptntab.pf_seqscans
from systabnames, sysptntab
4. where systabnames.partnum = sysptntab.partnum
[editar]2.6 Cuanto tiempo hace que el motor se está ejecutando
select dbinfo('UTC_TO_DATETIME', sh_curtime) - dbinfo('UTC_TO_DATETIME', sh_boottime)
from sysshmvals
[editar]2.7 Cómo encontrar la sentencia SQL actual
select sqs_statement
from syssqlstat
where sqs_statement;
o
select sqx_sessionid,
sqx_conbno,
sqx_sqlstatement
from syssqexplain, sysscblst
where sqx_sessionid = sid
order by 1,2
[editar]2.8 Dónde están los logs
select number, name
from syslogfil, syschunks, sysdbspaces
where syslogfil.chunk = syschunks.chknum
and syschunks.dbsnum = sysdbspaces.dbsnum
[editar]2.9 Cual es la versión actual del motor
select owner
from sysmaster:systables
where tabid = 99
Esta sentencia funciona bien en versiones antiguas. Sin embargo, en versiones modernas a partir de la 10.00 no
reporta la versión real. Por ejemplo, 11.50.FC6 reporta una versión 9.53C1 y la 11.70.FC5 reporta 9.55.C1, etc.
sin embargo, puede usarse DBINFO para obtener la versión real del motor,
select DBINFO('version','server-type'), DBINFO('version','major'),
DBINFO('version','minor'), DBINFO('version','os'),
DBINFO('version','full')
from sysmaster:systables
where tabid = 99
[editar]2.10 Cómo listar los usuarios
select unique username
from syssessions
[editar]2.11 Estadísticas de uso de CPU para cada sesión
5. select s.sid, s.username, s.uid, s.pid, s.hostname, t.tid,t.name, t.statedesc, t.statedetail,
q.sqs_statement, t.cpu_time
from syssessions s, systcblst t, sysrstcb r, syssqlstat q
where t.tid = r.tid AND s.sid = r.sid AND s.sid = q.sqs_sessionid
order by t.cpu_time desc;
[editar]2.12 Estadísticas de IO de disco para cada sesión
select syssesprof.sid,
isreads,
iswrites,
isrewrites,
isdeletes
from syssesprof, syssessions
where syssesprof.sid = syssessions.sid
[editar]2.13 Cómo convertir un PID en un ID de sesión
select sid
from syssessions
where pid = 'pid'
[editar]2.14 Cómo encontrar los "sequential scans" de una tabla
select dbsname, tabname, seqscans
from sysptprof
select dbsname, tabname, seqscans
from sysptprof
order by abs(seqscans) desc
[editar]2.15 Cómo listar el estado de "logging" de una base de datos
select name,
is_logging,
is_buff_log,
is_ansi,
is_nls
from sysdatabases
Los indicadores son:
0: Not logged
1: Buffered Logging
2: Unbuffered Logging
4: Ansi
8: NLS
[editar]2.16 Cómo listar los bloqueos
select dbsname,
tabname,
rowidlk,
keynum,
type
from syslocks,
6. syssessions
where owner = "sid"
B Byte lock
IS Intent shared lock
S Shared lock
XS Repeatable read shared lock
U Update lock
IX Intent exclusive lock
SIX Shared intent exclusive
X Exclusive lock
XR Repeatble read exclusive
[editar]2.17 Cómo listar los bloqueos de tipo base de datos
SELECT "database lock" table_name, l.type lock_type, l.keynum index_num,
HEX(l.rowidlk) rowid, s.sid session_id, s.username, s.pid, s.hostname,
q.sqs_statement statement
FROM syslocks l, sysdatabases d, syssessions s, syssqlstat q
WHERE d.name = ' database_name '
AND l.rowidlk = d.rowid
AND l.owner = s.sid
AND dbsname = 'sysmaster'
AND tabname = 'sysdatabases'
AND s.sid = q.sqs_sessionid
UNION ALL
SELECT l.tabname, l.type, l.keynum, HEX(l.rowidlk), s.sid, s.username,
s.pid, s.hostname, q.sqs_statement
FROM syslocks l, syssessions s, syssqlstat q
WHERE l.dbsname = ' database_name '
AND l.owner = s.sid
AND s.sid = q.sqs_sessionid
AND dbsname = 'sysmaster'
AND tabname = 'sysdatabases'
ORDER BY 5;
Reemplace database_name con el nombre de la base de datos que quiera consultar
Debe ejecutarse como usuario informix
[editar]2.18 Cómo mostrar el espacio libre de los logs
select number,
uniqid,
size,
used,
(used/size*100)
from syslogs
where uniqid >= (select min(tx_loguniq)
from systrans
where tx_loguniq > 0)
union
7. select number,
uniqid,
size,
0,
0.00
from syslogs
where uniqid < (select min(tx_loguniq)
from systrans
where tx_loguniq > 0)
[editar]2.19 Cual es el tamaño de página por defecto
select sh_pagesize
from sysshmvals
[editar]2.20 Cuantas filas tiene una tabla
La columna nrows de la tabla systables en la propia base de datos solamente se actualiza como resultado de la
ejecución de un "update statistics". Sin embargo, en sysmaster se mantiene de forma actualizada el número de
registros de cada tabla.
select ti_nrows
from systabnames, systabinfo
where systabn.tabname = TABLENAME
and dbsname = DATABASE
and systabinfo.ti_partnum = systabnmes.partnum
[editar]2.21 Cómo obtener el nombre de usuario
select username, uid
from sysmaster:syssessions
where sid = 'session id'
[editar]2.22 Cómo listar todas las bases de datos
select name from sysdatabases
[editar]2.23 What is the database to dbspace mapping
select name
from sysdbspaces
where dbsnum in (select trunc(partnum / 1048576)
from sysdatabases
where name = "DATABASE")
En las últimas versiones de motor:
select sysdatabases.name,
sysdatabases.owner,
sysdbspaces.name
from sysdbspaces,sysdatabases
where partdbsnum(sysdatabases.partnum) = sysdbspaces.dbsnum
O
8. select DBINFO("DBSPACE",partnum) dbspace, name, owner
from sysdatabases
[editar]2.24 Cual es el tamaño de página de un blobspace
select prtpage/PAGESIZE
from sysdbstab
where bitval(flags,'0x10') = 1
[editar]2.25 En qué dbspaces tiene almacenados datos cada tabla
select systabnames.dbsname, tabname,
trunc(systabnames.partnum/1048576) dbspace, sysdbspaces.name
from systabnames, sysdbspaces
where sysdbspaces.dbsnum = trunc(systabnames.partnum/1048576)
[editar]2.26 Cual es el tamaño total de los dbspaces
select name, count(*) chunks, sum(chksize), sum(nfree)
from syschunks, sysdbspaces
where syschunks.dbsnum = sysdbspaces.dbsnum
group by 1
[editar]2.27 Que sentencias utilizan índices poco balanceados
La siguiente sentencia SQL identifica SQLs utilizando índices poco balanceados
select sqx_sessionid,
sqx_executions,
round(sqx_bufreads/sqx_executions),
round(sqx_pagereads/sqx_executions),
sqx_estcost,
sqx_estrows,
sqx_index,
sqx_sqlstatement
from syssqexplain
where sqx_executions > 3000
and (sqx_bufreads / sqx_executions > 50
or sqx_executions > 100)
and (sqx_bufreads / sqx_executions > 1000
or sqx_executions > 1)
and sqx_bufreads / sqx_executions > 50000
La siguiente sentencia SQL identifica los índices no utilizados
SELECT x1.dbsname,
x3.tabname,
x1.tabname AS idxname,
(x4.npused * x4.pagesize / 1024) :: INT AS size_kb
FROM systabnames AS x1, sysptntab AS x2,
systabnames AS x3, sysptnhdr AS x4
WHERE x2.partnum = x1.partnum
AND x2.partnum != x2.tablock
AND x3.partnum = x2.tablock
AND x4.partnum = x1.partnum
9. AND x1.dbsname MATCHES '[a-z]*'
AND x3.tabname MATCHES '[a-z]*'
AND x2.pf_isread = 0
AND x2.pf_iswrite > 0
ORDER BY 4 DESC
A partir de 11.50, o en bases de datos con índices desacoplados de las tablas, esta información también está
disponible a través de las estadísticas de IO de tablas, pero usando el nombre del índice como filtro de nombre de
tabla.
[editar]2.28 Estadísticas de IO de disco por tabla
select dbname,
tabname,
sum(pagreads),
sum(pagwrites)
from sysptprof
group by dbsname, tabname
[editar]2.29 Lista de todas las tablas residentes en dbspaces temporales
select dbsname,tabname
from sysptprof, sysdbspaces
where dbsnum = trunc(partnum/1048576)
and name = TEMPDBS
order by 1
[editar]2.30 Cual es el tamaño de una tabla
A diferencia de oncheck, la ejecución de esta sentencia no necesita ningún bloqueo, por lo tanto los resultados
pueden no ser exactos en un sistema vivo.
select dbsname,
tabname,
ti_nextns,
ti_nptotal,
ti_npused,
ti_npdata,
ti_nrows,
ti_rowsize
from systabnames, systabinfo
where partnum = ti_partnum
[editar]2.31 Lista de los extents de una tabla
select tabname, count(*)
from sysextents
where dbsname = 'DATABASE'
group by 1
O agrupado por dbspaces
select substr(DBINFO("DBSPACE",partnum),1,10) DBSpace,
10. dbsname[1,10] Database,
tabname[1,15] Table,
sum(pe_size) tot_space,
count(*) no_of_exts
from sysptnext, systabnames
where pe_partnum = partnum
and tabname != "TBLSpace"
group by 1,2,3
order by 1,4 desc
[editar]2.32 Configuración actual del motor
select * from sysconfig
Por ejemplo, para obtener el nombre del servidor:
select *
from sysconfig
where cf_name = "DBSERVERNAME"
[editar]2.33 onstat -p: Información del "profile" del motor
select * from sysprofile
[editar]2.34 Información acerca de los logs
select * from syslogs
Esto es simplemente una vista de syslogfil, pero con el campo de indicadores interpretado. La misma información
puede obtenerse consultando la tabla syslogfil, interpretando los indicadores:
select number ,uniqid ,size ,used ,
bitval(syslogfil.flags ,'0x1' ) is_used,
bitval(syslogfil.flags ,'0x2' ) is_current,
bitval(syslogfil.flags ,'0x4' ) is_backed_up,
bitval(syslogfil.flags ,'0x8' ) is_new,
bitval(syslogfil.flags ,'0x10' ) is_archived,
bitval(syslogfil.flags ,'0x20' ) is_temp,
syslogfil.flags,name
from syslogfil, syschunks, sysdbstab
where (syslogfil.number > 0)
and trunc((hex(physloc)/1048576))=chknum
and syschunks.dbsnum = sysdbstab.dbsnum
[editar]2.35 Cómo resumir las estadísticas de los procesadores virtuales
select vpid,
txt,
usecs_user,
usecs_sys,
num_ready
from sysvplst, flags_text
where sysvplst.flags != 6
and sysvplst.class = flags_text.flags
11. and flags_text.tabname = "sysvplst"
[editar]2.36 Cuanto espacio queda libre en los DBSpaces
select name, sum(chksize) pages, sum(nfree) free
from sysdbspaces, syschunks
where sysdbspaces.dbsnum = syschunks.dbsnum
group by 1
[editar]2.37 Porcentaje de ocupación de los DBSpaces
SELECT
sysdbspaces.name,
nchunks,
format_units(sum(syschunks.chksize*syschunks.pagesize)) total,
format_units(sum(syschunks.chksize*syschunks.pagesize) -
sum(syschunks.nfree*syschunks.pagesize)) used,
round (100 - ((sum(syschunks.nfree)) / (sum(syschunks.chksize)) * 100), 2) percent_used
FROM sysdbspaces
,syschunks
WHERE
sysdbspaces.dbsnum = syschunks.dbsnum
AND
sysdbspaces.is_sbspace = 0
GROUP BY 1,2
UNION
SELECT
sysdbspaces.name,
nchunks,
format_units(sum(syschunks.chksize*syschunks.pagesize)) total,
format_units(sum(syschunks.chksize*syschunks.pagesize) -
sum(syschunks.udfree*syschunks.pagesize)) used,
round (100 - ((sum(syschunks.udfree)) / (sum(syschunks.chksize)) * 100), 2) percent_used
FROM sysdbspaces
,syschunks
WHERE
sysdbspaces.dbsnum = syschunks.dbsnum
AND
sysdbspaces.is_sbspace = 1
GROUP BY 1,2
ORDER BY percent_used desc
[editar]2.38 Cual es la situación actual de los chunks
select name,
is_mirrored,
is_blobspace,
is_temp,
chknum,
fname,
offset,
is_offline,
is_recovering,
12. is_blobchunk,
is_inconsistent,
chksize,
nfree,
mfname,
moffset,
mis_offline,
mis_recovering
from sysdbspaces, syschunks
where sysdbspaces.dbsnum = syschunks.dbsnum
order by 1, 5
[editar]2.39 Cuanto espacio queda libre en un chunk
select name,
syschfree.chknum,
syschfree.extnum,
syschfree.start,
syschfree.leng
from sysdbspaces, syschunks, syschfree
where sysdbspaces.dbsnum = syschunks.dbsnum
and syschunks.chknum = syschfree.chknum
order by 1,2
[editar]2.40 Estadísticas de IO de disco por chunk
select name,
chknum,
"Primary",
reads,
writes,
pagesread,
pageswritten
from syschktab, sysdbstab
where syschktab.dbsnum = sysdbstab.dbsnum
union all
select name,
chknum,
"Mirror",
reads,
writes,
pagesread,
pageswritten
from sysmchktab, sysdbstab
where sysmchktab.dbsnum = sysdbstab.dbsnum
order by 1,2
[editar]2.41 Cual es el porcentaje de IO para los chunks
select name,
chktype,
"Primary" chktype,
reads,
writes,
pagesread,
pageswritten
from syschktab, sysdbstab
13. where syschktab.dbsnum = sysdbstab.dbsnum
union all
select name,
chktype,
"Mirror" chktype,
reads,
writes,
pagesread,
pageswritten
from sysmchktab, sysdbstab
where sysmchktab.dbsnum = sysdbstab.dbsnum
into temp t_io with no log;
select sum(reads) t_reads,
sum(writes) t_writes,
sum(pagesread) t_pagesread,
sum(pageswritten) t_pageswritten
from t_io
into temp t_sum with no log;
select name,
chknum,
chktype,
reads,
writes,
pagesread,
pageswritten,
round((reads/t_reads)*100,2) p_reads,
round((writes/t_writes)*100,2) p_writes,
round((pagesread/t_pagesread)*100,2) p_pagesread,
round((pageswritten/t_pageswritten)*100,2) p_pageswritten
from t_io, t_sum
[editar]2.42 En qué dbspace están las tablas
select DBINFO("DBSPACE",partnum),
dbsname,
tabname,
pe_phys,
pe_size
from sysptnext, systabnames
where pe_partnum = partnum
order by 1
[editar]2.43 Estadisticas de IO por tabla
select dbsname,
tabname,
isreads,
bufreads,
pagreads,
iswrites,
bufwrites,
pagwrites,
lockreqs,
lockwts,
deadlks
14. from sysptprof
order by 3
Si las columnas muestran valores 0, deberá activar el parámetro TBLSPACE_STATS en el fichero **ONCONFIG**
[editar]2.44 Espacio ocupado por tabla
select dbsname,
tabname,
count(*) num_of_extents,
sum( pe_size ) total_size
from systabnames, sysptnext
where partnum = pe_partnum
and tabname not matches "sys*"
group by 1, 2
order by 3 desc, 4 desc;
[editar]2.45 Cuales son las tablas más ocupadas
La siguiente sentencia SQL identificará las tablas más utilizadas
select fname, name, dbsname, tabname,
pagreads+pagwrites pagtots
from sysptprof, syschunks, sysdbspaces, sysptnhdr
where trunc(hex(sysptprof.partnum)/1048576) = chknum
and syschunks.dbsnum = sysdbspaces.dbsnum
and sysptprof.partnum = sysptnhdr.partnum
and (pagreads+pagwrites) != 0
order by 5 desc
[editar]2.46 Tamaño total ocupado por las bases de datos
select sum(ti_nptotal), sum(ti_npused)
from systabnames, systabinfo
where partnum = ti_partnum
order by 1
[editar]2.47 Cuando se ejecutó el último UPDATE STATISTICS
select systables.tabname, syscolumns.colname, sysdistrib.constructed,mode
from sysdistrib, systables, syscolumns
where systables.tabid > 99
and systables.tabid = syscolumns.tabid
and sysdistrib.tabid = systables.tabid
and sysdistrib.colno = syscolumns.colno
group by 1,2,3,4
order by tabname,colname;
[editar]2.48 Cuando se ejecutó el último onstat -z
Está sentencia devuelve la fecha en que se ejecutó por última vez la reinicialización de las estadísticas mediante
onstat -z:
SELECT dbinfo('UTC_TO_DATETIME',sh_pfclrtime) FROM sysshmvals;
[editar]2.49 When was Update Stats last run
15. select distinct tabname, b.constructed, b.mode
from systables a, sysdistrib b
where a.tabid = b.tabid
order by 1
[editar]2.50 Opciones del comando DBINFO
DBINFO('dbspace', partn)
DBINFO('sqlca.sqlerrd1')
DBINFO('sqlca.sqlerrd2')
DBINFO('utc_to_datetime', <column>)
DBINFO('utc_current')
DBINFO('get_tz')
DBINFO('serial8')
DBINFO('sessionid')
DBINFO('dbhostname')
DBINFO('version','server-type')
DBINFO('version','major')
DBINFO('version','minor')
DBINFO('version','os')
DBINFO('version','full')
Dependiendo de la versión de IDS algunos de estos comandos pueden no estar disponibles
[editar]2.51 Espacio ocupado por el "physical log"
select pl_physize, pl_phyused, round ((pl_phyused * 100.0)/pl_physize,2)
from sysplog
[editar]2.52 A qué base de datos está conectada la sesión actual
select sqc_currdb
from syssqlcurall
where sqc_sessionid = dbinfo('sessionid');
[editar]2.53 En qué dbspaces están los índices
-- Find detached indexes
select sysmaster:sysdbspaces.name dbs_name,
sysmaster:systabnames.tabname,
app_db:sysindexes.idxname
from sysmaster:systabnames, sysmaster:sysdbspaces, app_db:sysindexes
where sysmaster:sysdbspaces.dbsnum = trunc(sysmaster:systabnames.partnum/1048576)
and sysmaster:sysdbspaces.name != "rootdbs"
and sysmaster:sysdbspaces.name != "database_dbs"
and app_db:sysindexes.idxname = sysmaster:systabnames.tabname
union
-- Find other indexes
select sysmaster:sysdbspaces.name dbs_name,
sysmaster:systabnames.tabname,
app_db:sysindexes.idxname
from sysmaster:systabnames, sysmaster:sysdbspaces, app_db:systables, app_db:sysindexes
where sysmaster:sysdbspaces.dbsnum = trunc(sysmaster:systabnames.partnum/1048576)
and sysmaster:sysdbspaces.name != "rootdbs"
16. and sysmaster:sysdbspaces.name != "database_dbs"
and app_db:systables.tabname = sysmaster:systabnames.tabname
and app_db:sysindexes.tabid = app_db:systables.tabid
-- Exclude detached indexes
and app_db:sysindexes.idxname not in (select tabname from sysmaster:systabnames )
order by 1, 2, 3
[editar]2.54 Qué tablas están en el rootdbs
SELECT UNIQUE e.dbsname, e.tabname
FROM sysdbspaces d, syschunks c, sysextents e
WHERE d.name = 'rootdbs'
AND c.dbsnum = d.dbsnum
AND e.chunk = c.chknum
AND e.dbsname NOT IN ('rootdbs', 'sysmaster', 'sysadmin', 'sysuser', 'sysutils')
ORDER BY 1, 2
[editar]2.55 En qué modo se está ejecutando el motor
select sh_mode
from sysmaster:sysshmvals;
IDS 7,9,10,11
-1 Offline (-1 = 255)
0 Initialisation
1 Quiescent
2 Recovery
3 Backup
4 Shutdown
5 Online
6 Abort
[editar]2.56 Qué tipo de instancia se está ejecutando
select ha_type from sysmaster:sysha_type
0 Not part of a high-availability environment
1 Primary server
2 HDR secondary server
3 SD secondary server
4 RS secondary server
[editar]2.57 Qué dbspaces se están utilizando por una base de datos
select distinct dbinfo("dbspace",b.partnum)
from <database>:sysfragments a, sysmaster:systabnames b
where a.partn = b.partnum
and tabid > 99
17. union
select distinct dbinfo("dbspace",b.partnum)
from <database>:systables a, sysmaster:systabnames b
where a.partnum = b.partnum
and a.partnum != 0
and tabid > 99
union
select b.name dbs_name
from sysmaster:systabnames a, sysmaster:sysdbspaces b, <database>:sysindexes c
where b.dbsnum = trunc(a.partnum/1048576)
and c.idxname = a.tabname
and a.dbsname = '<database>'
and tabid > 99
order by 1
[editar]2.58 Cuales son los índices no utilizados
select sysindexes.idxname index, sysindexes.idxtype as type, sysptprof.isreads reads
from sysindexes, sysmaster:sysptprof sysptprof
where sysindexes.idxname = sysptprof.tabname
and sysptprof.isreads = 0
order by reads desc, idxname ;
[editar]2.59 Estadísticas utilizadas para la verificación del licenciamiento
select count(*) concurrentsessions
from sysmaster:sysrstcb
where sysmaster:bitval(flags,1)>0 { only count busy threads }
and sysmaster:bitval(flags,'0x80000')!=0 { only count primary threads }
and sysmaster:bitval(flags,'0x200')==0 { remove daemon threads}
and sysmaster:bitval(flags,'0x40')==0 { remove log backup users }
and sysmaster:bitval(flags,'0x80')==0 { remove onmonitor users }
and sysmaster:bitval(flags,'0x2000')==0 { remove page cleaners}
and sysmaster:bitval(flags,'0x00000400')==0 { remove archive threads}
and sysmaster:bitval(flags,'0x00004000')==0 { remove recovery threads}
and sysmaster:bitval(flags,'0x00100000')==0 { remove idx blder }
and sysmaster:bitval(flags,'0x00200000')==0 { remove btree scanner }
and sysmaster:bitval(flags,'0x04000000')==0 { remove main loop}
and flags < '0x20000000';
La tabla sysfeatures contiene estadísticas por semanas de la versión de IDS instalada, la memoria y procesadores
virtuales asignados y las conexiones activas. Esta tabla es de solo lectura, y la única forma de inicializarla es
mediante la inicialización del motor.
SELECT * FROM sysmaster:sysfeatures;
La vista syslicenseinfo, es una vista que obtiene la mayoria de datos de la tabla sysfeatures
SELECT * FROM sysmaster:syslicenseinfo;
El siguiente SELECT devuelve el número máximo de sesiones concurrentes por semana del año.
18. select week, year, max_conns from syslicenseinfo
week year max_conns
47 2015 192
46 2015 276
45 2015 294
44 2015 266
43 2015 242
42 2015 252
41 2015 223
40 2015 223
...
[editar]2.60 Estadísticas de los recursos usados
Máximo, minino y la media de los recursos usados:
SELECT
'Maximum' as max_min_avg, MAX(max_conns) as max_conns, MAX(max_cpu_vps) as max_cpu_vps,
MAX(max_vps)as max_vps,
format_units(MAX(total_size),'M') as total_size, format_units(MAX(total_size_used),'M')
as total_size_used,
format_units(MAX(max_memory),'M') as max_memory, format_units(MAX(max_memory_used),'M')
as max_memory_used
FROM syslicenseinfo
UNION ALL
SELECT
'Minimum' as max_min_avg, MIN(max_conns) as max_conns,MIN(max_cpu_vps) as
max_cpu_vps,MIN(max_vps)as max_vps,
format_units(MIN(total_size),'M') as total_size, format_units(MIN(total_size_used),'M')
as total_size_used,
format_units(MIN(max_memory),'M') as max_memory, format_units(MIN(max_memory_used),'M')
as max_memory_used
FROM syslicenseinfo
UNION ALL
SELECT
'Average' as max_min_avg, ROUND(AVG(max_conns),0) as max_conns,ROUND(AVG(max_cpu_vps),0)
as max_cpu_vps,ROUND(AVG(max_vps),0)as max_vps,
format_units(TRUNC( AVG(total_size),4),'M') as total_size, format_units(TRUNC
(AVG(total_size_used),4),'M') as total_size_used,
format_units(TRUNC (AVG(max_memory),4),'M') as max_memory, format_units(TRUNC
(AVG(max_memory_used),4),'M') as max_memory_used
FROM syslicenseinfo
ORDER BY 1
Los recursos usados las tres ultimas semanas:
SELECT FIRST 3
19. (MDY(1,1,year) + (week*7) UNITS DAY)::DATE as edate,
max_conns,max_cpu_vps,max_vps,
format_units(total_size,'M') as total_size, format_units(total_size_used,'M') as
total_size_used,
format_units(max_memory,'M') as max_memory, format_units(max_memory_used,'M') as
max_memory_used
FROM syslicenseinfo
ORDER BY 1 DESC
[editar]3 Qué es sysadmin
Sysadmin es una base de datos generada por el propio motor Informix, para gestionar la herramienta de
programación de tareas que permite ejecutar a la base de datos funciones y procedimientos a horas predefinidas o
según determine el propio servidor. El programador permite definir y ejecutar tareas, y la base de datos sysadmin
contiene las seis tablas que almacenan la información necesaria para que funcione.
Debido a que algunos componentes muy importantes de la base de datos utilizan el programador de tareas para
ejecutar operaciones administrativas, nunca debe borrar o alterar esta base de datos.
[editar]4 Qué es sysusers