COMANDOS INFORMIX

COMANDOS INFORMIX La idea de este post es listar algunos comandos útiles para el servidor de base de datos Informix, con

Views 355 Downloads 112 File size 115KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

COMANDOS INFORMIX 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: Ejecutaronmode -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

1

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]

O 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

2

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 (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

3

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)

4