Listado de comandos de administración de Informix

Introducción

La idea de este post es listar algunos comandos útiles para el servidor de base de datos Informix, con el que algunos tenemos que sufrir trabajar día a día. Muchos de ellos se pueden ejecutar desde ambientes gráficos, pero generalmente no disponemos de dichos ambientes en servidores de testing o producción.

Intenteré ir actualizando la lista a medida que me vaya encontrando con otros comandos que considere que valgan la pena.

Los comandos

Bajar el motor

Desde la línea de comandos, ejecutar:

onmode -ky

Podemos hacerlo de forma más “delicada”, siguiendo los siguientes pasos:

Ejecutar

onmode -sy

para dejar no permitir nuevas conexiones, pero permitir que las conexiones que ya estaban abiertas se cierren de forma normal. luego de cerrar todas las conexiones, el servidor queda en quiescent mode, algo
así como inactivo, pero no apagado.

El siguiente paso es movernos al siguiente log lógico, ejecutando:

onmode -l

Luego forzamos un checkpoint, de forma de estar seguros de escribir todos los buffers a disco:

onmode -c

Finalmente, ejecutamos el comando para dejar el servidor de Informix offline:

onmode -ky

Subir el motor

Para subir el motor de Informix, ejecutamos sin parámetros el comando:

oninit

En Linux/UNIX, debemos estar logueados como root o como informix para poder ejecutar oninit. En Windows, se debe ejecutar siendo miembro del grupo Informix-Admin.

Ver la descripción de un error

Dado un código de error, podemos obtener una descripción y posibles acciones correctivas ejecutando:

finderr numero#

El resultado es similar al siguiente (cambiando para cada error, claro está):

infordb:~ # finderr 167
-167    ISAM error: Storage-space size is not multiple of PAGESIZE.

The database server administrator sees this error. When you define a
storage space, you must specify a page size that is an integral multiple of
the system page size. The system page size is set in the Parameters
screen when the database server is first initialized.

Pasar una base de transaccional a no transaccional y viceversa

Al restaurar un respaldo de una base de datos, si no decimos explícitamente, la base restaurada no soportará transacciones, sino que quedará en modo no transaccional. Al intentar utilizarla desde nuestras aplicaciones, las sentencias de BEGIN WORK, COMMIT, ROLLBACK, etc. fallarán por estar trabajando la base en este modo.

En estos casos, podemos pasar la base de datos a transactional unbuffered ejecutando el siguiente comando en una terminal:

ontape -s -L 0 -U [database] 

nO el siguiente, para pasarla a transactional buffered:

ontape -s -L 0 -B [database]

Si por el contrario, queremos pasar una base de modo transaccional a no transaccional, ejecutamos:

ontape -s -L 0 -N [database]

Por información acerca de la diferencia los logging modes transactional unbuffered y transactional buffered, ver este otro post del blog.

Exportar una base de datos

El comando dbexport descarga todos los datos de cada tabla de una base de datos y genera un esquema de la base de datos. Para exportar una base de dato a archivos, debemos ejecutar el siguiente comando en una terminal:

dbexport [database] 

Esto generará un directorio [database].exp con los datos de cada tabla, y desplegará por salida estandar (pantalla,
al menos que se rediriga a un archivo) un script con la creación de los objetos de la base.

Importar una base de datos

Para importar una base de datos podemos ejecutar el comando dbimport. dbimport lee el archivo de esquema generado por el comando dbexport y crea una base de datos cargando los datos de los archivos. Se puede especificar un dbspace determinado, y el logging mode de la base importada:

dbimport [database] [-i directory] [-d dbspace] [-l [buffered]]  

En donde:

  • en [database].exp están ubicados los archivos de datos a importar
  • -d dbspace: especifica el nombre del dbspace en donde la base será creada. Por defecto, será rootdbs.
  • -l: Establece que la base importada funcionará en modo unbuffered transaction logging
  • -l buffered: Establece que la base importada funcionará en modo buffered transaction logging

El parámetro [database] es la ubicación
en de los archivos a importar; el comando buscará un directorio llamado [database].exp para leer los datos de las tablas. Si se especifica, se buscará ese directorio dentro de [directory]. Se asume que existirá un archivo [database].exp/[database].sql conteniendo la estructura de la base de datos (tablas, índices, contraints, etc.).

Mostrar información de uso de espacio físico

Ejecutando el siguiente comando desde una terminal, obtenemos un reporte de los diferentes dbspaces y el espacio utilizado en cada uno:

onstat -d

La salida es similar a la siguiente:

infordb:~ # onstat -d

IBM Informix Dynamic Server Version 10.00.FC7     -- On-Line -- Up 1 days 13:15:39 -- 38720 Kbytes

Dbspaces
address          number   flags      fchunk   nchunks  pgsize   flags    owner    name
450c8e78         1        0x60001    1        1        2048     N  B     Informix rootdbs
45253450         2        0x60001    2        1        2048     N 
 B     Informix datadbs
 2 active, 2047 maximum

Chunks
address          chunk/dbs     offset     size       free       bpages     flags pathname
450c9028         1      1      0          250000     58385                 PO-B  /opt/IBM/Informix/CHUNKS/rootdbs.000
45269db8         2      2      0          1048576    516245                PO-B  /opt/IBM/Informix/CHUNKS/datadbs.000
 2 active, 32766 maximum

NOTE: The values in the "size" and "free" columns for DBspace chunks are
      displayed in terms of "pgsize" of the DBspace to which they belong.

Expanded chunk capacity mode: always

El tamaño y el espacio libre de cada chunk (columnas size y free) están expresadas en páginas. El tamaño de cada página está expresada en bytes en la columna pgsize, por lo que el tamaño de cada chunk está determinado por size x pgsize. Cada chunk está asociado a un dbspace, y esta asociación se detalla en la columna chunk/dbs em> (el primer número es el id del chunk, el segundo es el id del dbspace).

Este reporte también muestra información de replicación, rutas en dispositivos físicos, etc. Por una descripción completa, ver la página de onstat -d en la Administrator’s Reference de Informix.

Actualizar las estadísticas

Desde dbaccess u otro cliente de Informix, podemos ejecutar los siguientes comandos para actualizar las estadísticas de la base de datos:

Actualizar estadísticas de todas las tablas la base de datos:

update statistics

Para actualizar además las estadísticas de distribución de cada tabla (es más lento):

update statistics high	

Para actualizar las estadísticas para una tabla:

UPDATE STATISTICS [HIGH] FOR TABLE [tabla]

Lock mode de las tablas

En este post escribí acerca de los lock modes de Informix. Para obtener la información acerca del tipo de bloqueo que tienen las tablas de una base podemos ejecutar la sigiuente consulta:

SELECT tabname,locklevel FROM systables WHERE tabid>99

La columna tabname contiene el nombre de la tabla, la columna locklevel contiene ‘P’ si el lock mode es por página, o ‘R’ si es por tupla.

Para crear una tabla con un lock mode determinado lo especificamos al ejecutar el comando CREATE TABLE:

CREATE TABLE customer(customer_num serial, lname char(20)...)
LOCK MODE ROW|PAGE|TABLE;

Para cambiar el lock mode de una tabla utilizamos el comando ALTER TABLE:

ALTER TABLE [tabla] MODIFY
LOCK MODE (PAGE|ROW|TABLE)

Referencias

Etiquetado . Bookmark the permalink.

35 respuestas a Listado de comandos de administración de Informix

  1. Marco says:

    Buena la información, me ha servido.

  2. Vilma says:

    Gracias por compartir tus conocimientos con quienes debemos trabajar con Informix, si puedes indicarme por qué falla el comando dbexport; es decir el respaldo se hace incompleto, qué hacer en estos casos y qué herramientas utilizar para verificar el estado de la base de datos. Gracias

    • jarrarte says:

      Hola, gracias por tu comentario. Con los datos que me das del error no hay mucho que te pueda comentar; ¿te retorna algún mensaje de error o aviso? Quizá una búsqueda de ese mensaje en Google te pueda ayudar.

      Suerte y gracias por visitar el blog.
      Saludos,
      José

  3. Henry Torres Moreno says:

    Buen trabajo, me ha sacado de varias dudas.
    Gracias

    HTM

  4. René G says:

    Excelente información, me ayudo mucho , gracias n_n

  5. Ignacio says:

    Hola, tengo problemas al importar una base de datos, no es la primera vez que me pasa.
    cuando la creo comienza a importarla y antes de terminar queda como esperando (esto en la consola). Y luego, que seria el 2do inconveniente que tengo, es que cuando quiero importarla de nuevo ya esta creada, como se hace para importar con la base ya creada?
    gracias por tu ayuda

    • Es posible que el respaldo sea grande, y ese tiempo que queda como esperando, el motor de base de datos esté trabajando importando la base? Si lo dejas mucho tiempo termina? El disco duro está trabajando? Y el CPU? (esto se puede ver con un top en otra consola)

      Saludos y suerte!

  6. Jose Lujan says:

    Buenas Tardes. Una consulta el dia de hoy voy a bajar a texto toda mi BD utilizando en comando dbexport -ss, luego la voy a volver a subir para que se cree nuevamente las tablas, indices, etc.

    La pregunta es: Cuando subo la data corro el riesgo de que se trabe en alguna parte?, ya me sucedio antes y lo tuve que solucionar poniendo la BD en otro modo, creo que fue unbuferred, no lo recuerdo bien y luego de cargar toda la data tuve que volver al modo incial como estaba la BD. Actualmente mi BD la veo con el flag B.

    Alguien me puede ayudar.

    Muchas Gracias.

  7. carlos says:

    gracias por el aporte sirve muchisimo y podrias poner otros comandos del informix tab

  8. paul says:

    un favor no sabras donde hay referencias de como sacar informacion hacerca de la base de datos que corre en informix y para realizar consultaa las misma

  9. Grandez says:

    Al guien de Uds me puede ayudar con que comando puedo 1ero ver el espacio de buffer de memoria utilizado y 2do como liberarlo. porque he tenido casos que que se llena el buffer de memoria de la BD y termina por caerser la base de datos.

  10. Emiliano says:

    Gracias por la informacion, queria saber si sabes como realizar consultas a una BD sin entrar a dbaccess, osea tirar consultas desde la consola, es que debo corroborar el funcionamiento de las auditorias.

  11. Super says:

    Requiero de su ayuda, por accidente elimine algunos archivos d la carpeta c:\informix\ el programa que utliza el informix funciona bien, pero no puedo hacer respaldo con dbexport -ss, aparece el error -25596 – The INFORMIXSERVER value is not listed in the sqlhosts file or the registry. Como puedo respaldar la base de datos y poder instalar desde cero.

  12. Gaticaz says:

    Muy bueno, gracias.

  13. Sandra says:

    Hola..gracias por la información que brindas, me puedes decir como verifico el estado del servicio de bd ? y que cliente windows puedo usar para conectarme a el servidor linux donde tengo informix??

    • Hola Sandra, gracias por tu comentario.

      Sobre el estado del servicio, dependerá en qué sistema operativo esté funcionando el motor. Si ya estás conectada al motor y quieres conocer el estado de los dbspaces puedes utilizar ‘onstat -d -h’.

      Para acceder a las bases yo utilizo el Aqua Studio (http://www.aquafold.com/aquadatastudio.html), me resulta muy completo porque funciona con varios motores. Puedes descargar una versión de prueba por 30 días.

      Espero que esta información te sea útil. Saludos,
      José

      • Sandra says:

        Hola José, ya me está corriendo bien el informix y me he conectado desde PHP. Descargué el Aqua Studio, pero no sé que configuración le tengo que hacer a mi equipo para que este funcione. Le debo configurar el ODBC?? tengo windows xp y estoy configurandole el IBM ODBC DRIVER pero me sale un error en la conexión que dice “Test connection was NOT sucessful.[informix][Informix ODBC Driver][Informix]Cannot locate Infdrv1 service/tcp service in /etc/services.”

  14. Guido Pineda says:

    Hola, es posible sacar un respaldo de la base de datos en caliente, sin desconectar a los usuarios?

  15. misaeljuvenal says:

    buen post….;) me ha servido de mucho. soy nuevo en informix me gustaría saber como cambiar la contraseña y usuario.
    ver el listado de los programas fuentes.

    saludos……

    • Hola misaeljuvenal, gracias por tu comentario. El usuario de Informix es un usuario del sistema operativo (usuario Linux), por lo que cambiar el password con passwd debería hacer lo que necesitas.
      Saludos!

  16. Carlos Martinez says:

    Hola, Muchas gracias, muy bueno el aporte. Un comentario también para contestarle a Guido Pineda, y que si buscan más información puede ayudar a otros. En mi empresa trabajamos con informix, y nosotros hacemos el respaldo de la base en caliente con “ontape -s -l 0″ y para restaurarla con “ontape -r” ( en este caso sí debemos bajar el servicio informix, obviamente). Saludos.

  17. Rafael says:

    Gracias por el blog, me ha ayudado a entender un poco más de que va esto del Informix….

  18. Nicolás says:

    Gente.. como se hace un back up en informix??

  19. VictorG says:

    Excelente blog, felicito a su propietario por los aportes.
    Trabajo con informix desde el 1995, actualmente tengo experiencia en todas las versiones de informix para linux.

    Conosco la instalacion y configuracion del producto.
    Si en algo puedo ayudar, les dejo mi correo.

    Victor Gomez

    • jarrarte says:

      ¡Gracias por tu comentario Víctor!
      Hoy en día no estoy trabajando tanto con Informix (más bien MySQL y Oracle), pero voy a tener en cuenta en caso de ser necesario.

      Un saludo cordial,
      José

  20. leonel ledezma says:

    No puedo respaldar informix me marca el siguiente mensaje,alguien me puede apoya por favor
    Please mount tape 1 on /dev/rmt/0m and press return to continue…
    Archive failed -Dbspace dbms2 is disabled.

  21. Diego Giacoia says:

    José, buscando solucionar un tema de informix me encontre con el blog… muy completo
    Gracias
    Abrazo
    Diego

  22. Jugo says:

    Buen aporte…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>