administracion ids 9.30

Download Administracion ids 9.30

If you can't read please download the document

Upload: viktor-gomez

Post on 06-Aug-2015

183 views

Category:

Documents


25 download

DESCRIPTION

Manual de ayuda para la administracion de la base de datos de informix v9.30 bajo Linux

TRANSCRIPT

Instalacin de IBM IDS database Indice de contenido IBM IDS Database Necesidades hardwareDefinicin de las variables de entorno para el usuario informixDefinicin de las variables de entorno para todos los usuarios Instalacin Configuracin del fichero etc/sqlhosts Configuracin del fichero etc/onconfig- SHMTOTAL - Versin IDS 10Parmetros del sistema operativo Pruebas de inicializacinScripts de arranque y parada automticosPrueba de arranque y parada automticaEstructura de discos recomendadaEjemplo de configuracin de discosCreacin de volmenes lgicos Consideraciones LVM y cabina de discos Gua de uso del comando onspacesScript de creacin de dbspacesUso de KAIO en HP-UXUso de KAIO (Kernel Asynchronous I/O) en AIXConfiguracin de los logical logs Tabla de compatibilidad de IDS con Linux Problemas comunes al iniciar el agente de base de datos Desactivar tareas del planificador IDS 11.50Variables nuevas en IDS 11.50FC8IBM IDS Database Este capitulo intenta explicar los pasos a seguir para la instalacin y puesta en funcionamiento del agente de base de datos IBM-IDS 9.40 o superior teniendo en consideracin detalles especficos de los diferentes sistemas operativos. Para ms informacin sobre la base de datos consulte DEISTER IBM IDS Knowlege Base. Aunque WebStudio dispone de la capacidad de gestionar mltiples conectores de base de datos simultneos, requiere como soporte principal un agente IBM-IDS 9.x con soporteJava en el ncleo. Este sistema almacena los repositorios de datos del sistema de aplicaciones, los mdulos de clases de aplicaciones, los transformadores XML y los diccionarios de soporte para los modelos de datos. Se asumen las siguientes consideraciones. Ha seguido la gua de instalacin de IBM IDS. Usted tiene conocimientos sobre sistemas operativos Unix. Usted tiene conocimientos sobre el agente de base de datos. Ha ledo las notas tcnicas para su versin de agente de base de datos y sistema operativo. Estas notas se encuentran en la distribucin del producto y generalmente se hallan situadas en el directorio $INFORMIXDIR/release/en_us/0333. Un documento importante a considerar entre otros es ids_machine_notes_9.40.txt que indica generalmente detalles a tener en cuenta para la plataforma hardware seleccionada.Este documento trata ser una gua de apoyo y no pretende sustituir los manuales del fabricante.Necesidades hardwareDisco Del ejemplo anterior vemos que se requiere un mnimo de 4 unidades de 36GB (sin contar la necesidad de disponer de un RAID 0+1. sistema operativo rootdbs, blobspaces y smartblobspaces los datos de aplicaciones espacios temporales y disponer de un rea de reserva Idealmente, los espacios de datos del rea financiera y sus ndices deberan separarse de los del sistema comercial. Cuanto mayor separacin mejor rendimiento. Para sistemas de mayor envergadura, es muy importante disponer de hardware RAID y en su defecto disponer de software mirror en el sistema. Nunca confe sus datos a un nico soporte fsico. Si utiliza un sistema RAID 5 puede que el nmero de unidades de disco no tenga significado claro dado que el sistema RAID le proporcionar un dispositivo abstracto.Cinta de backup El equipo que dispone del sistema de base de datos debe de disponer de al menos una unidad de cinta adecuada a las necesidades de backup. Determine el dispositivo que soporta la unidad de cinta dado que necesitar configurar el sistema de base de datos para indicarlo.Memoria Disponer de un mnimo de 3 GB de memoria RAM, preferiblemente 4 GB.Redes Dispone de un mnimo de 2 redes en el equipo. Aunque puede utilizar un sistema con una nica red, nuestras recomendaciones son que disponga de dos, a ser posible de tecnologa gigabit.Definicin de las variables de entorno para el usuario informix IBM-IDS requiere la definicin de algunas variables de entorno sin las cuales no puede funcionar. A continuacin se detalla como definir estas variables para que estn definidas en los dos tipos de "shell" utilizadas normalmente en los sistemas Unix: Korn Shell y C Shell y para los sistemas Linux: GNU Bourne-Again Shell.Korn Shell (/bin/ksh) En Korn Shell, las variables de entorno se definen en un fichero .profile en el directorio home del usuario y se utiliza la sintaxis Korn Shell.INFORMIXDIR=`grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'`; export INFORMIXDIR INFORMIXSERVER=`uname -n|awk -F'.' '{print $1}'`; export INFORMIXSERVER DB_LOCALE=es_es.8859-1; export DB_LOCALE CLIENT_LOCALE=es_es.8859-1; export CLIENT_LOCALE DBDATE=DMY4-; export DBDATE DBCENTURY=C; export DBCENTURY # Setea DBMONEY para evitar bug 173783 en IDS 10.0XC3 DBMONEY=, export DBMONEY PATH=${PATH}:${INFORMIXDIR}/bin; export PATH # En AIX es necesario dado que usa terminfo TERMCAP=${INFORMIXDIR}/etc/termcap; export TERMCAP # Compatibilidad 4GL LD_LIBRARY_PATH=${INFORMIXDIR}/lib:${INFORMIXDIR}/lib/esql:$ {INFORMIXDIR}/lib/tools:${LD_LIBRARY_PATH}export LD_LIBRARY_PATHGNU Bourne-Again Shell (/bin/bash) En sistema Linux suele utilizarse la GNU Bourne-Again Shell, las variables de entorno se definen en un fichero .bash_profile en el directorio home del usuario y se utiliza la sintaxis GNU Bourne-Again Shell. En este caso sirven los mismos ejemplos propuesto para Korne Shell.C Shell (/bin/csh) En C Shell, las variables de entorno se definen en un fichero .login en el directorio home del usuario y se utiliza la sintaxis C Shell.setenv setenv setenv setenv setenv setenv setenv INFORMIXDIR `grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'` INFORMIXSERVER `uname -n|awk -F'.' '{print $1}'` DB_LOCALE es_es.8859-1 CLIENT_LOCALE es_es.8859-1 DBDATE DMY4DBCENTURY C PATH ${PATH}:${INFORMIXDIR}/binTome en consideracin que debe poner los valores correctos en cada variable, ya que el ejemplo propuesto es valido para una localizacin espaola. Si por ejemplo, est en Portugal, las variables de entorno DB_LOCALE y CLIENT_LOCALE debern tomar los valores "pt_pt.8859-1" y si est en Estados Unidos, debern tomar el valor "en_us.8859-1".Alternativa a configurar LD_LIBRARY_PATH en Linux En Linux, una alternativa a configurar la variable de entorno LD_LIBRARY_PATH es aadir el path de los 3 directorios de librerias en /etc/ld.so.conf y ejecutar ldconfig. Si $INFORMIXDIR = /home/informix, aadiriamos al fichero /etc/ld.so.conf lo siguiente:/opt/informix/lib/tools /opt/informix/lib/esql /opt/informix/lib/Otras variables de entorno En algu nas ocas ione s puede nec esit ar inici aliz ar vari able s de ento rno espe cial es. A cont inua cin se deta llan algu nos eje mpl os y su func in. Vari Ejemplo Notas able TE RM CA P / Permite definir el fichero de configuracin de usr/infor terminales. mix/etc/t ermcap En AIX es imprescindible dado que el sistema de base carece de soporte termcap nativo. Permite definir el nmero de procesadores a utilizar en operaciones de ordenacin. Este ser el nmero mximo de hebras del procesador que el sistema activar para un operacin de ordenacin paralelizable.PS 2 OR T_ NP RO CDefinicin de las variables de entorno para todos los usuarios En el caso anterior, las variables slo estn definidas para el usuario informix. Si deseamos crear otros usuarios en el sistema Unix y que estos puedan acceder a Informix, deberemos configurar las mismas variables. En algunos casos puede ser conveniente configurar las variables de entorno para que estn disponibles a todos los usuarios. En las diferentes versiones de Unix, este proceso implica realizar cambios en algunos ficheros de sistema. Con ello, las varaibles de entorno definidas, estarn disponibles para todos los usuarios del sistema unix, incluido root. En la siguiente tabla mostramos donde pueden crearse las variables de configuracin para diferentes versiones de Unix. S.O. C Shell Korn Shell Notas Debe marcar como ejecutables las shells dado que slo de este modo sern procesadas. Utilice el comando# chmod a+x /etc/profile.d/informix.cshLinu / / x etc/profile.d etc/profile. /informix.cs d/informix. h shpara la C Shell o el comando# chmod a+x /etc/profile.d/informix.shpara la Korn Shell SUN /etc/.login Solar is IBMAIX HPUX /etc/profile Estos ficheros son compartidos por el sistema. Las variables que se indiquen sern compartidas por todos los usuarios /etc/profile El fichero /etc/profile contiene los comandos y las variables de inicializacin generales de AIX /etc/profile El fichero /etc/profile contiene los comandos y las variables de inicializacin generales de AIXInstalacin Si an no ha instalado el software consulte la gua de instalacin de su distribucin. A continuacin indicamos un breve resumen de los procedimientos a seguir para la instalacin. Importante: Los scripts de instalacin utilizados por el programa de instalacin de paquetes extraen temporalmente los archivos .tar GLS y de Mensajes de error a un directorio temporal. Debe haber suficiente espacio libre en la unidad temporal paraalbergar el contenido de estos archivos. Los scripts de instalacin utilizan /tmp como la unidad temporal por omisin. Puede cambiar esta ubicacin estableciendo la variable de entorno TMP. Cree un usuario denominado informix asignado al grupo informix. El $HOME de este usuario suele ser /usr/informix para sistemas UNIX o /home/informix para sistemas Linux. La mayoria de sistemas operativos Unix/Linux soportan el comando useradd y groupadd para crear este usuario:# groupadd informix # useradd -c "IBM IDS" -g informix informixConctese al sistema como usuario informix y extraiga el software en un directorio temporal:[informix@hostname]$ mkdir $HOME/IBMIDS [informix@hostname]$ cd $HOME/IBMIDS [informix@hostname]$ tar xzvf /tmp/IIF940UC6.tar.gzInicie la sesin como usuario root usuario root y defina la variable de entorno INFORMIXSERVER apuntando al directorio $HOME de informix y ejecute el comando de instalacin[informix@hostname]$ su Password: [Entre el password de root aqui] [root@hostname]# INFORMIXDIR=/home/informix [root@hostname]# export INFORMIXDIR [root@hostname]# ./ids_installPulse RETURN para aceptar la licencia de IBM y elija la opcin 1 de la instalacin:1) IBM Informix Dynamic Server 9.40Cuando termine el proceso usted habr terminado la instalacin del producto IDS y podr eliminar el directorio temporal con la distribucin:[root@hostname]# rm -rf /home/informix/IBMIDSConfiguracin del fichero etc/sqlhosts El siguiente paso es configurar el agente de base de datos para que "escuche" las peticiones de servicio tanto de las conexiones directas por "shared memory" como de las conexiones por red. Habilitaremos el puerto 1526 para que IBM-IDS atienda las conexiones de los clientes red por este puerto. Para ello, edite el fichero /etc/services y aada al final la siguiente lnea:sqlexec 1526/tcp # IBM IDSUna vez definido el puerto 1526, editaremos el fichero $INFORMIXDIR/etc/sqlhosts. Este fichero define en cada una de sus lneas un nombre de servidor IBM-IDS y el mtodo de acceso al mismo.Asegurase de que dispone del fichero $INFORMIXDIR/etc/sqlhosts. Si no encuentra este fichero puede copiar el fichero maestro suministrado por IBM:$ cp $INFORMIXDIR/etc/sqlhosts.std $INFORMIXDIR/etc/sqlhostsqlhosts contiene una linea para cada tipo conexin que permite el motor de Informix, tanto para las conexiones via red, como para las conexiones via "memoria compartida". Las 4 o 5 columnas de cada linea tienen el siguiente significado: El nombre del servidor de base de datos El mecanismo de conexin al servidor o tipo de red. El nombre del servidor correspondiente a una direccin IP vlida del servidor El nombre del puerto de escucha definido en /etc/services que es utilizado para las conexiones en red. Opcionalmente una quinta columna con opciones de configuracinEl nombre del servicor de base de datos debe estar definido en los parmetros DBSERVERNAME o DBSERVERALIASES del fichero onconfig del servidor, y una de las lineas debe ser tambien igual al valor de la variable de entorno INFORMIXSERVER. El mecanismo de conexin es un valor que representa el tipo de conexin soportada por el servidor. Generalmente se configuran al menos dos conexiones: Shared memory: representada por el valor onipcshm que significa que la conexin al servidor se realiza directamente entre procesos sin utilizar las conexiones de red. Conexin por red: que permite la conexin al servidor a travs de las tarjetas de red. Para Linux o AIX se utiliza el valor onsoctcp mientras que para Solaris se utiliza el valor ontlitcp.El nombre del servidor es simplemente el hostname, que debe poderse resolver a una direccin IP vlida correspondiente a una tarjeta de red del servidor. Por ejemplo, supongamos que el equipo dispone de dos tarjetas de red y que queremos habilitar la conexin al servidor Informix por cualquiera de las dos tarjetas. El nombre del host ser distinto para cada tarjeta y estar definido en el fichero /etc/hosts.192.168.1.1 192.168.2.1 miserver_red1 miserver_red2Edite el fichero $INFORMIXDIR/etc/sqlhosts e introduzca las siguientes 3 lneas: El primer campo corresponde al valor devuelto por la ejecucin del comando uname -n. El segundo campo es el protocolo de conexin al servidor. La conexin principal por "shared memory" es el protocolo onipcshm. El protocolo de conexin por red en Solaris es ontlitcp y en Linux y AIX es onsoctcp El tercer campo es el nombre del host cada una de las tarjetas de red. El cuarto campo es el servicio, Para la conexin de tipo "shared memory" esto no tiene sentido por lo que debe poner un valor por convenio que es "informix", para las conexiones por red, utilizamos el servicio sqlexec definido anteriormente.onipcshm onsoctcp onsoctcp miserver_red1 miserver_red1 miserver_red2 informix sqlexec sqlexecmiserver ol_miserver_red1 ol_miserver_red2Una definicin incorrecta de los nombres de host o de los servicios o de los protocolos de conexin, pueden provocar que el motor no pueda ser inicializado en la fase ASF, emitiendo un error similar al reproducido a continuacin:axbdprod: /home/informix> oninit -i This action will initialize IBM Informix Dynamic Server; any existing IBM Informix Dynamic Server databases will NOT be accessible Do you wish to continue (y/n)? y Checking group membership to determine server run modesucceeded Reading configuration file '/home/informix/etc/onconfig'...succeeded Creating /INFORMIXTMP/.infxdirs ... succeeded Creating infos file "/home/informix/etc/.infos.axbdprod" ... "/home/informix/etc/.conf.axbdprod" ... succeeded Writing to infos file ... succeeded Checking config parameters...succeeded Allocating and attaching to shared memory...succeeded Creating resident pool 1368 kbytes...succeeded Creating buffer pool 10002 kbytes...succeeded Initializing rhead structure...succeeded Initializing ASF ...oninit: Fatal error in initializing ASF with 'ASF_INIT_DATA' flags; asfcode = '25507'. FAILEDConfiguracin del fichero etc/onconfig El siguiente paso es parametrizar el fichero de configuracin de informix y prepararlo para poder establecer un entorno de pruebas. Asegrese de que dispone del fichero $INFORMIXDIR/etc/onconfig. Si no encuentra este fichero puede copiar el fichero maestro suministrado por IBM:$ cp $INFORMIXDIR/etc/onconfig.std $INFORMIXDIR/etc/onconfigEdite el fichero $INFORMIXDIR/etc/onconfig proceda a realizar las siguientes parametrizaciones: Las configuraciones indicadas a continuacin solo son una propuesta para preparar la utilizacin del agente en condiciones mnimas. En IBM-IDS Guia de configuracin puede encontrar ms informacin acerca de la configuracin de este agente.Definicin de un fichero de pruebas para soportar el rootdbs Site el path del fichero en el propio directorio donde ha instalado informix. En el ejemplo usamos /INFORMIXDEV/rootdbs y le asignamos 2000Mb de espacio.ROOTNAME ROOTPATH ROOTOFFSET (Kbytes) ROOTSIZE PHYSDBS PHYSFILE rootdbs # Root dbspace name /INFORMIXDEV/d1_rootdbs # Path for device root 4 # Offset of root dbspace into device 2000000 rootdbs 25000 # Size of root dbspace (Kbytes) # Location (dbspace) of physical log # Physical log file size (Kbytes)Tambien asignamos 25 Megabytes para el physical log. El tamao del physical log no debe ser muy pequeo, lo que desencadenaria "check points" muy seguidos al ensuciar el 75% de su tamao, ni demasiado grande, lo que provocaria "check points" muy largos al tener que sincronizar el physical log con las pginas de disco destino de la informacin. El parmetro ROOTOFFSET debe tener un offset de 4KB para evitar que el SO sobreescriba en el contenido dedicado al chunk.Definicin de paths de directorios Por defecto el fichero onconfig tiene los paths del directorio de ubicacin del servidor en /usr. Si se ha instalado el servidor en un directorio diferente, como por ejemplo /home/informix hay que sustituir /usr por /home. Adems es recomendable que el directorio donde informix dejar los ficheros assert file y de volcado de memoria sea /tmp:DUMPDIR /tmp # Preserve diagnostics in this directoryY si se desea utizar un programa de alarmas especfico, diferente del que incorpora el servidor $INFORMIXDIR/etc/alarmprog.sh, debe indicarse la ruta en el parmetro ALARMPROGRAM, por ejemplo si se utiliza la shell propuesta en esta documentacin, se ubica en $INFORMIXDIR/etc/alarmprog_deister.sh hay que indicar (supongamos que $INFORMIXDIR es /home/informix:ALARMPROGRAM /home/informix/etc/alarmprog_deister.sh # Alarm program pathDefinicin de los nombres de servidores soportadosDBSERVERNAME miserver # Default database server DBSERVERALIASES ol_miserver_red1,ol_miserver_red2 # Alternate dbservernames RESIDENT 1 # Forced residency flag (Yes = 1, No = 0)Definicin de los parmetros de dispositivo para ONTAPE# System Archive Tape Device TAPEDEV TAPEBLK TAPESIZE (Kbytes) /dev/null 32 80000000 # Tape device path # Tape block size (Kbytes) # Maximum amount of data to put on tapeSi se desconce el valor de tamao del dispositvo de cinta TAPESIZE, como mnimo debe ponerse un tamao superior a 50GB.Definicin de los parmetros de LOGICAL LOGS# Logical Log Configuration [...] LOGSIZE [...] 10000 # Logical log size (Kbytes)De los parmetros de logical logs, el nico que debe modificarse es LOGSIZE. LOGFILES es modificado de forma automtica por el gestor de base de datos cuando se crean y eliminan logical logs del sistema mediante el comando onparams. LOGSIZE: tamao de cada uno de los logical logs creados en el sistema. Este valor es un compromiso entre efectividad frente a un crash y rendimiento, Si se hacen muy pequeos, el backup de logical logs se dispara demasiado frecuentemente penalizando al sistema. Si se hacen muy grandes puedes perder mucha informacin. Aconsejamos hacerlos de entre 10 y 20 MB.Definicin de los parmetros de uso de procesadores En el ejemplo desactivamos el envejecimiento de los procesos de larga duracin, activamos el flag de multiprocesador y activamos dos procesadores.MULTIPROCESSOR NUMCPUVPS SINGLE_CPU_VP one NOAGE 1 2 0 1 # 0 for single-processor, 1 multi-processor # Number of user (cpu) vps # If non-zero, limit number of cpu vps to # Process agingDefinicin de los parmetros de lectura avanzada de pginaRA_PAGES RA_THRESHOLD 24 16 # Number of pages to attempt to read ahead # Number of pages left before next groupDefinicin de los parmetros de uso de memoriaLOCKS 250000 # Maximum number of locks BUFFERS 200000# Maximum number of shared buffers NUMAIOVPS 20 # Number of IO vps PHYSBUFF 64 # Physical log buffer size (Kbytes) LOGBUFF 64 # Logical log buffer size (Kbytes) CLEANERS 15 # Number of buffer cleaner processes SHMBASE (see release) # Shared memory base address SHMVIRTSIZE 512000 # initial virtual shared memory segment size SHMTOTAL 0 # Total shared memory (Kbytes). 0=>unlimited LRUS 30 # Number of LRU queues LRU_MAX_DIRTY 5 # LRU percent dirty begin cleaning limit LRU_MIN_DIRTY 1 # LRU percent dirty end cleaning limit STACKSIZE 128 # Stack size (Kbytes) (para procesos recursivos!) # Variable de entorno : INFORMIXSTACKSIZEEn Linux, si desea sobrepasar el limite de 768Kb de memoria virtual y llegar a los 2 Gbytes puede utilizar el valor de SHMBASE igual a 0x41000000L. Le recomendamos que lea tambin el documento ids_machine_notes_9. [VERSION].txt del propio motor que puede localizar en el subdirectorio release/en_us/0333/.SHMTOTAL En equipos que no dispongan de Kernel AIO, el parametro NUMAIOVPS debe corresponder al menos al nmero de chunks. El parmetro SHMTOTAL indica el total de memoria fsica de la que dispone el motor de base de datos. En caso de que la memoria fsica usada por el motor de la base de datos supere SHMTOTAL, se parar el servicio Informix. In general I think the handling should be better when SHMTOTAL is set to a value other than zero. Of course it needs to be set to a sensible number that corresponds to memory availability on the machine. Setting SHMTOTAL has the advantage that IDS knows in advance what the limit is and can act (or not act) accordingly. I.e. if memory space tightens, IDS can act with pre-cautions that will avoid catastrophic scenarios. If SHMTOTAL is set to zero, it means unlimited memory supply. This of course is never real, but always hypothetical. If IDS hits the limit (and the OS returns an error upon the request for more memory), then this error can be quiteunexpected at the time. The underlying problem is, for what action or purpose is the memory needed. If it is needed for a user session (e.g. sorting, joining, etc.), then IDS will handle a memory shortage "gracefully", i.e. the respective session will get a corresponding error. But IDS will continue to run and function. If memory is needed for a new session, then the connect request will be rejected if no more memory is available - but IDS will continue to run. However, if some memory is needed for an IDS internal and vital function, then an out-of-memory error can be fatal for the functioning of IDS. And this is where the difference between SHMTOTAL set to zero or some (sensible) number comes into play. If SHMTOTAL is set to a sensible number, then IDS knows the limit in advance and can take care that such a fatal "out-of-memory error" does not happen. But if SHMTOTAL is set to zero, then an out-of-memory error from the OS will be unexpected - and under said circumstances can be fatal, because IDS relies on unlimited supply. Es recomendable ajustar el valor de SHMTOTAL por debajo del total de memoria fsica de la mquina (comomximo un 75%-80%). Si se indica un tamao menor del que necesita el motor para arrancar, cuando se inicie el servicio se producir el siguiente error:oninit: Fatal error in shared memory creationAnalizando el fichero online.log se observa que la cantidad requerida supera la memora de la que dispone:17:44:40 IBM Informix Dynamic Server Started. 17:44:40 size of resident + virtual segments 903535340 + 262144000 > 3145728 total allowed by configuration parameter SHMTOTALSHMTOTAL Memoria fsica total 10GB 32GB Es recomendable ajustar el valor de SHMTOTAL a un 75%-80% del total de la memoria fsica de la mquina. Valor recomendado de SHMTOTAL (Kbytes) 8388608 26843545Versin IDS 10 En las versiones de IBMIDS 10 o superior, no se configura la parte de memoria de buffers que debe utilizar el sistema mediante el parmetro BUFFERS sino a travs del parmetro BUFFERPOOL.Los siguientes parmetros, o bien no aparecen ya en el fichero onconfig de estas versiones, o bien deben estar comentados. BUFFERS LRUS LRU_MAX_DIRTY LRU_MIN_DIRTYBUFFERPOOL size=2K,buffers=200000, lrus=512,lru_min_dirty= 0.200000,lru_max_dirty= 0.500000size: indica el tamao de pgina que utilizar el motor de base de datos. buffers: indica el nmero de buffers disponibles para el motor de base de datos. lrus: inidca el nmero de colas LRU disponibles para el motor de base de datos. lru_min_dirty: indica el porcentaje relativo al total de colas a partir del cual termina la limpieza de las mismas. lru_max_dirty: indica el porcentaje relativo al total de colas a partir del cual comienza lalimpieza de las mismas. Es muy importante ajustar bien estos parmetros para tener un ptimo uso de la memoria. Se recomienda que el total de memoria utilizada por el motor de base de datos no supere el 70% del total de memoria fsica de la mquina. Para determinar la cantidad de memoria fsica que tiene la mquina puede verse el contenido del fichero /proc/meminfo.$ cat /proc/meminfo MemTotal: 1958552 kB MemFree: 695340 kB Buffers: 311272 kB [...]Mediante el comando onstat, se puede observar la cantidad de memoria que utiliza el motor de base de datos.$ onstat IBM Informix Dynamic Server Version 10.00.UC3 -- On-Line -Up 03:48:16 -- 1243840 Kbytes $Para una mquina que tenga 2GB de memoria RAM, el motor de base de datos debera utilizar entre 1.2GB y 1.4GB. En este ejemplo se esta utilizando aproximadamente 1.2GB.El comando onstat -g seg da ms informacin acerca de la distribucin de la memoria.$ onstat -g seg IBM Informix Dynamic Server Version 10.00.UC3 -- On-Line -Up 03:46:49 -- 1243840 Kbytes Segment Summary: id key addr size ovhd class blkused blkfree 32769 1381386241 41000000 879407104 241668 R* 214696 3 917532 1381386268 756ab000 393216000 12648 V 21619 74381 1310760 1381386280 8cdab000 1069056 688 M 261 0 Total: 1273692160 236576 74384 (* segment locked in memory)El tamao se indica en bytes, y el class determina el tipo: R: Residente. Viene indicada por los BUFFERS. En el ejemplo se ha defindo IBM-IDS v9 o inferior.BUFFERS 400000IBM-IDS v10 o superior.BUFFERPOOL size=2K,buffers=4 00000,lrus=32,lru _min_dirty=0.5000 00,lru_max_dirty= 2.000000que se ve reflejado en el valor 879407104 bytes, que son los 400.000 buffers de 2KB cada uno. Se recomienda ajustar el valor de BUFFERPOOL a un 50% de la memoria fsica del sistema. V: Virtual. Viene indicada por el parmetro SHMVIRTSIZE. En el ejemplo se ha definidoSHMVIRTSIZE 384000que se ve reflejado en los 393216000 bytes, ya que SHMVIRTSIZE se define en KB. Se recomienda ajustae el valor de SHMVIRTSIZE a un 25% de la memoria fsica del sistema.Paralelizacin y optimizacin# Parallel Database Queries (pdq) MAX_PDQPRIORITY 0 # Maximum allowed pdqpriority DS_MAX_QUERIES # Maximum number of decision support queriesDS_TOTAL_MEMORY 1024000 DS_MAX_SCANS 1048576 DS_NONPDQ_QUERY_MEM 5120 DATASKIP off OPTCOMPIND DIRECTIVES (0) 0 1# # # #Decision support memory (Kbytes) Maximum number of decision support scans Non PDQ query memory (Kbytes) List of dbspaces to skip# To hint the optimizer # Optimizer DIRECTIVES ON (1/Default) or OFFNmero de procesadores para comunicaciones Cuando utiliza transporte de datos va tcp, configure el nmero de threads para los servicios de comunicacin. En el ejemplo se configuran 3 threads para el transporte soctcp con 100 usuarios cada uno y soportados por el procesador virtual de clase NETNETTYPE soctcp,3,100,NET # Configure poll thread(s) for nettypeLos procesadores virtuales de tipo NET son dinmicos. La configuracin inicial, simplemente indica el tamao inicial para las estructuras de datos de conexiones, pero el servidor puede expandir estas estructuras en el momento en el que lo necesite. Solamente las conexiones de tipo "shared memory" presentan un lmite de conexiones real al ser definidas en NETTYPE, ya que los bloques de memoria para las conexiones de shared memory se reservan en el momento del arranque del motor (son los segmentos de memoria de tipo 'M' cuando ejecutamos el comando onstat -g mem).Definicin de los parmetros recomendados DEISTER Existen algunos parmetros que es conveniente que aada al sistema. Por defecto estos parmetros no se incluyen. Adalos al final del fichero onconfig.# # ESPECIALES DE DEISTER # # Stored Procedure cache - onstat -g prc PC_HASHSIZE 127 # of hash buckets PC_POOLSIZE 512 # Tamao del pool de cach de procedures # Dictionary cache - onstat -g dic DD_HASHSIZE 503 # of hash buckets, must be a prime number (default: 31) DD_HASHMAX 12 # of entries per bucket, no restrictions (default: 10) # Distribution cache - onstat -g dsc DS_HASHSIZE 503 DS_POOLSIZE 512 # sort memory for non PDQ queries (Default 128 kbyte) DS_TOTAL_MEMORY 512000 # Decision support memory (Kbytes) DS_NONPDQ_QUERY_MEM 512 # Non PDQ query memory (Kbytes)DS_NONPDQ_QUERY_MEM se utiliza para incrementar la cantitad de memoria que estdisponible para realizar consultas que no son de tipo Parallel Database Query (PDQ). El valor puede ir desde 128KB hasta el 25% del total definido en DS_TOTAL_MEMORY. Se recomienda que este porcentaje sea de un 0.1%. Parallel database query (PDQ) is an Informix database server feature that can improve performance dramatically when the database server processes queries that decision-support applications initiate. PDQ allows the database server to distribute the work for one aspect of a query among several processors. For example, if a query requires an aggregation, the database server can distribute the work for the aggregation among several processors. PDQ also includes tools for resource management. DD_HASHSIZE specifies the number of hash buckets or lists in the data-dictionary cache. DD_HASHMAX specifies the maximum number of tables in each hash bucket in the datadictionary cache. A hash bucket is the unit of storage (typically a page) whose address is computed by the hash function. A hash bucket contains several records. For example, if DD_HASHMAX is 10 and DD_HASHSIZE is 100, you can store information about 1000 tables in the data-dictionary cache, and each hash bucket can have a maximum of 10 tables. The DD_HASHMAX parameter determines how many entries will be cached in each list. This is shown by "onstat -g dic". The list is in least recently used order. Each time a table is released (when a sql statement finishes) its refcnt in the cache is decreased and the table is moved to the front (the mru end) of the list. If the list is longer than DD_HASHMAX, entries with refcnt = 0 are removed beginning from the back of the list (the lru end) until the number of list entries either reaches DD_HASHMAX or the beginning of the list is reached. Entries with positive refcnt are never removed. A simple way of playing around with this is to set DD_HASHSIZE to 1, DD_HASHSIZE to say 10, create a couple of tables, select from them and use onstat -g dic to monitor the cache. When should DD_HASHSIZE and DD_HASHMAX be changed? You probably want all frequently accessed tables cached. That is one point. This could be done by increasing either of these values. Making the maximal size of the hash lists a bit longer would be no big deal, at least not in a single processor configuration. But for a large multiprocessor there is another important consideration. Every hash list is protected by a mutex called "ddh chain" (all with the same name unfortunately) to make sure that only one thread at a time can either insert or delete an entry or increase or decrease an entry's refcnt. If DD_HASHMAX is too large, the mutex might become a hot spot and onstat -g ath and onstat -g lmx might show threads waiting for that mutex. For that reason it is better to increase DD_HASHSIZE and keep DD_HASHMAX small.DD_HASHSIZE - # of hash buckets, must be a prime number (default: 31) DD_HASHMAX - # of entries per bucket, no restrictions (default: 10)Use onstat -g dic to determine if your dictionary cache is nearing capacity. There should not be any hash buckets that are full.Ms documentacinLogs de diagnstico Ajuste el path del fichero de mensajes MSGPATH, en el ejemplo proponemos dejarlo en el directorio HOME de Informix. Este fichero tendr un crecimiento indefinido, es por ello que deben establecerse automatismos para la restitucin basada en copia de backup y compresin.MSGPATH CONSOLE /home/informix/online.log /dev/console # System message log file path # System console message pathNo elimine el fichero online.log ni redirija la salida del parmetro MSGPATH a un dispositivo no basado en disco.Parmetros del sistema operativo Antes de proseguir debe asegurarse de leer la notas para la versin del producto de base de datos que ha instalado. Estas notas se encuentran generalmente en el directorio $INFORMIXDIR/release/en_us/0333. En especial debe analizar el fichero ids_machine_notes_9.40.txt u otros similares. IBM le informar en este documento de algunas modificaciones que debera aplicar en algunas variables del kernel de algunos sistemas Unix, de la localizacin de inicio de la memoria compartida (shared memory) y de otras consideraciones del porting para el sistema operativo. En los apartados destinados a sistema operativos le ofreceremos ms informacin sobre como ajustar el rendimiento del agente de base de datos. Si desea puede consultar: AIX tunning / Pruebas de inicializacin Antes de configurar el sistema completo de discos podemos proceder a una inicializacin de pruebas utilizando un cooked file como disco de inicio. Como sabe IBM-IDS permite utilizar dispositivos raw como unidades de almacenamiento de datos o ficheros (cooked files). Nuestra recomendacin es usar siempre raw devices dado que ofrecen un rendimiento muy superior. No obstante, en este punto procederemos a inicializar el sistema de base de datos utilizando como dispositivode almacenamiento un fichero de disco. Puede crear un fichero vaco en el directorio $INFORMIXDIR llamado rootdbs_0, con permisos de lectura / escritura slo para el usuario informix y el grupo informix. Para crear este fichero entre al sistema como usuario informix. Ejecute el siguiente comando:$ cd /home/informix $ touch rootdbs_0Y a continuacin para dar permisos correspondientes$ chmod 660 rootdbs_0 $ chown informix:informix rootdbs_0Asegurese de que el parametro ROOTDBS de $INFORMIXDEV/etc/onconfig apunta al dispositivo que acabamos de crear:ROOTPATH /home/informix/rootdbs_0Ahora estamos en disposicin de realizar el test de funcionamiento de informix. Ejecutaremos$ oninit -ivConteste afirmativamente a la pregunta de si desea inicializar el agente. Si el agente de base de datos ha inicializado correctamente, estar online. Para comprobar el estado del motor podemos ejecutar la siguiente sentencia$ onstat -Se mostrar un mensaje parecido al que indicamos a continuacinInformix Dynamic Server Version [...] -- On-Line -- Up 14:06:44 -478288 KbytesPruebas contra un Logical Volume Si las pruebas se realizan contra un Logical Volume hay que realizar los siguientes pasos: Crear los Physical Volumes, Volume groups y Logical Volumes. Esto puede variar en funcin del sistema operativo instalado, AIX o Linux. Para ver la lista de volumenes: pvdisplay: lista los volmenes fsicos. vgdisplay: lista los grupo de volmenes. lvdisplay: lista los volmenes lgicos.$ pvdisplay --- Physical volume --PV Name /dev/sdb1 VG Name IFMX PV Size 204.75 GB / not usable 0 Allocatable yes PE Size (KByte) 4096 Total PE 52417Free PE Allocated PE PV UUID $ vgdisplay --- Volume group --VG Name System ID Format Metadata Areas Metadata Sequence No VG Access VG Status MAX LV Cur LV Open LV Max PV Cur PV Act PV VG Size PE Size Total PE Alloc PE / Size Free PE / Size VG UUID $ lvdisplay --- Logical volume --LV Name VG Name LV UUID LV Write Access LV Status # open LV Size Current LE Segments Allocation Read ahead sectors Block device [...]52417 0 ZX02mX-vIsY-8p2B-Wi3s-Ff6i-UBlQ-JBS53IIFMX lvm2 1 2 read/write resizable 255 1 0 255 1 1 204.75 GB 4.00 MB 52417 52404 / 204.70 GB 13 / 52.00 MB xXSQoh-DjMy-Pgwq-ZRiw-C7dT-ypa6-NxadXv/dev/ifmx/rootdbs IFMX BuaZtp-B2bD-wq8t-w2tB-ncmC-W29n-TY0xQr read/write available 0 204.70 GB 52404 1 next free (default) 0 253:0Una vez creados los volumenes lgicos, hay que establecer un enlace para el volumen lgico del rootdbs. Supongamos que el volumen group destinado a rootdbs se encuentra en /dev/ifmx/rootdbs:$ $ $ $ $ cd /home/informix ln -s /dev/ifmx/rootdbs rootdbs_0 chmod 660 rootdbs_0 chown --dereference informix:informix rootdbs_0 chmod a+rx /dev/ifmxEs muy importante dar permisos de ejecucin sobre el directorio del volumen group al usuario informix, de lo contrario como usuario informix la ejecucin del comando oninit dar error de permisos de acceso al directorio.En algunos sistemas es imprescindible que los permisos del directorio de los volmenes lgicos sea 775 -rwxrwxr-x esto se consigue con la instruccin chmod a+rx $DEV_DIR como por ejemplo chmod a+rx /dev/ifmx. En un sistema con volmenes lgicos los permisos del directorio del volumen group se pierden cada vez que se reinicializa el sistema. Por ello en los scripts de arranque y parada automticos del motor de base de datos se tiene en cuenta el otorgar permisos cada vez que se ejecuta. Y ahora se puede ejecutar el comando de inicializacin y comprobar que el motor est arrancado.$ oninit -iv $ onstat -Scripts de arranque y parada automticos El agente de base de datos debe inicializarse y detenerse de forma automtica tanto en el arranque como en la parada del sistema operativo. Para ello, debe indicarse al sistema operativo como realizar estos procesos. La parada programada del agente de base de datos es algo muy importante dado que debe drsele la oportunidad de sincronizar las estructuras de memoria a disco. Una parada del sistema que no notifique al agente de base de datos esta situacin se trata como un fallo y obligar a este iniciar una recuperacin de fallos en el prximo arranque.Linux Deber crear el fichero /etc/init.d/informix con el siguiente contenido:#!/bin/sh # # chkconfig: 345 99 01 # description: IBM-Informix Database Server. # # Author: DEISTER # # Initial release: Apr 02 # Aug 02: Added subsys lock file for Mandrake init control # Oct 02: If variables are alredy defined, dont override them # # Absolutely no warranty -- use at your own risk ### BEGIN INIT INFO # Provides: informix # Required-Start: $network portmap # Required-Stop: $network portmap # Default-Start: 3 5 # Default-Stop: 0 1 2 6# Description: Start IBM-Informix ### END INIT INFO # # # # # [ Verifique las variables de entorno. Si no estn definidas se toman automticamente de /etc/password y va el nombre del equipo-z "$INFORMIXDIR" ] && \ INFORMIXDIR=`grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'` [ -z "$INFORMIXSERVER" ] && \ INFORMIXSERVER=`uname -n|awk -F'.' '{print $1}'` export INFORMIXDIR INFORMIXSERVER # Es importante configurar la variable de entorno DBDATE ya que en el arranque # automtico del sistema no se toman las variables de entorno automticas de # usuario. Y esta variable de entorno es importante para el funcionamiento de # las aplicaciones cliente. DB_LOCALE=es_es.8859-1; export DB_LOCALE DBDATE=DMY4-; export DBDATE # En Linux con udev y sin devfsd los permisos de los dispositivos en /dev no # se mantienen entre reboots de maquina. # Por ello, hay que setear explicitamente los permisos cada vez que se arranc # el servicio en un reboot de maquina. if [ -d /INFORMIXDEV ]; then for LINK in `ls -l /INFORMIXDEV/* | awk -F '->' '{ print $2 }'`; do chown --dereference informix:informix $LINK chmod 775 `dirname $LINK` chmod 660 $LINK done fi start() { if [ `$INFORMIXDIR/bin/onstat 2>&- | grep -c initialized` -ne 0 ] then echo -n "Starting IBM-IDS ..." $INFORMIXDIR/bin/oninit touch /var/lock/subsys/informix echo "done" fi } stop() { if [ `$INFORMIXDIR/bin/onstat 2>&- | grep -c initialized` -eq 0 ] then echo -n "Shutting down IBM-IDS ... " $INFORMIXDIR/bin/onmode -ky rm -f /var/lock/subsys/informix echo "done" fi }restart() { stop start } status() { if [ `$INFORMIXDIR/bin/onstat 2>&- | grep -c initialized` -eq 0 ] then echo -n "IBM-IDS is running... " echo "" fi } case "$1" in start) start ;; stop) stop ;; restart) stop; start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esacEn Linux con udev y sin devfsd los permisos de los dispositivos en /dev no se mantienen entre reboots de maquina. Por ello, hay que setear explicitamente los permisos cada vez que se arranca el servicio en un reboot de maquina. O bien puede establercer esta regla en el fichero /etc/udev/rules.d/99-informix.rules con el siguiente contenidoSUBSYSTEM=="block", NAME=="mapper/ifmx-*", OWNER="informix", GROUP="informix", MODE="0660"Tambin debemos dar permisos de ejecucin a este fichero:# chmod 744 /etc/init.d/informixComo puede ver, este script acepta los parmetros "start" y "stop" que ejecutan los comandos oninit y onmode -ky necesarios para el arranque y parada del motor. Todos los enlaces en los directorios /etc/rc[0-6].d deben hacer referencia al script /etc/init.d/informix y deben ser nombrados segn el siguiente criterio: Sxxinformix donde xx es un nmero de 2 digitos Kyyyinformix donde yy = 100 - xx (normalmente)Basicamente, cuando el sistema cambia su nivel de ejecucin (run-level), estos enlaces son analizados y ejecutados dependiendo de si el nivel de ejecucin se incrementa o se decrementa. Por ejemplo, al pasar del nivel 1 -> al nivel 2, los scripts Sxx son detectados yejecutados con el argumento "start", mientras que si se decrementael nivel de ejecucin los scripts Kxx son ejecutados suministrandoles el argumento "stop". Para crear los enlaces a esta shell para el arranque y parada automticos, deber ejecutar el comando:# /sbin/chkconfig --add informix(teniendo en cuenta que el script /etc/init.d/informix existe y es ejecutable) Puede verificar que los enlaces se han creado correctamente verificando que se han creado los enlaces adecuados mediante la ejecucin del comando:# ls -l /etc/rc5.d/S99informix /etc/rc0.d/K01informixTambin puede obtener el estado de ejecucin de informix en los distintos niveles utilizando el comando chkconfig --list informix:$ chkconfig --list informix informix 0:off 1:off 2:off 3:on 4:off 5:off 6:offRecuerde que debe configurar los valores de las variables de entorno INFORMIXDIR e INFORMIXSERVER con los valores adecuados a su instalacin en el script informix. No debe eliminar ninguno de los comentarios del fichero ya que son utilizados por el sistema para la activacin de los servicios.Solaris Cree el script que define el servicio en el fichero /etc/init.d/informix. Puede utilizar el mismo script que el indicado para Linux.#!/bin/sh # # chkconfig: 345 99 01 # description: IBM-Informix Database Server. # # Author: DEISTER # # Initial release: Apr 02 # Aug 02: Added subsys lock file for Mandrake init control # Oct 02: If variables are alredy defined, dont override them # # Absolutely no warranty -- use at your own risk # # # # # [ Verifique las variables de entorno. Si no estn definidas se toman automticamente de /etc/password y va el nombre del equipo-z "$INFORMIXDIR" ] && \ INFORMIXDIR=`grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'` [ -z "$INFORMIXSERVER" ] && \ INFORMIXSERVER=`uname -n|awk -F'.' '{print $1}'`export INFORMIXDIR INFORMIXSERVER # Es importante configurar la variable de entorno DBDATE ya que en el arranque # automtico del sistema no se toman las variables de entorno automticas de # usuario. Y esta variable de entorno es importante para el funcionamiento de # las aplicaciones cliente. DB_LOCALE=es_es.8859-1; export DB_LOCALE DBDATE=DMY4-; export DBDATE start() { if [ `$INFORMIXDIR/bin/onstat 2>&- | grep -c initialized` -ne 0 ] then echo -n "Starting IBM-IDS ..." $INFORMIXDIR/bin/oninit touch /var/lock/subsys/informix echo "done" fi } stop() { if [ `$INFORMIXDIR/bin/onstat 2>&- | grep -c initialized` -eq 0 ] then echo -n "Shutting down IBM-IDS ... " $INFORMIXDIR/bin/onmode -ky rm -f /var/lock/subsys/informix echo "done" fi } restart() { stop start } status() { if [ `$INFORMIXDIR/bin/onstat 2>&- | grep -c initialized` -eq 0 ] then echo -n "IBM-IDS is running... " fi } case "$1" in start) start ;; stop) stop ;; restart) stop; start ;; status) status ;;*) esacecho "Usage: $0 {start|stop|restart|status}" exit 1Y asegurese que tiene los permisos y propietarios adecuados:# chmod 0744 /etc/init.d/informix # chown root:sys /etc/init.d/informixY cree los links correspondientes al inicio y parada automticos:# cd /etc/init.d # ln informix /etc/rc2.d/S99informix # ln informix /etc/rc0.d/K01informixPor ltimo, verifique que el escript tiene los links a los directorios indicados.# ls /etc/init.d/ /etc/rc2.d/ /etc/rc0.dAIX Para arrancar automticamente el agente de base de datos edite el fichero /etc/inittab e incluya la siguiente lneaautosrvr:2:once:/etc/rc.informix start >/dev/console 2>&1Para parar automticamente el agente de base de datos edite o cree el fichero /etc/rc.shutdown e incluya la siguiente lnea/etc/rc.informix stopEl cdigo de este script de arranque y paro es idntico al que puede usarse en otros casos. Cree un fichero dentro del subdirectorio /etc con el nombre rc.informix. Asigne permisos de ejecucin a este fichero# touch /etc/rc.informix # chmod +x /etc/rc.informixY utilize el siguiente cdigo ejemplo para realizar las tareas de arranque y paro del agente.#!/sbin/sh INFORMIXDIR=`grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'`; export INFORMIXDIR INFORMIXSERVER=`uname -n|awk -F'.' '{print $1}'`; export INFORMIXSERVER # Es importante configurar la variable de entorno DBDATE ya que en el arranque # automtico del sistema no se toman las variables de entorno automticas de # usuario. Y esta variable de entorno es importante para el funcionamiento de # las aplicaciones cliente. DB_LOCALE=es_es.8859-1; export DB_LOCALE DBDATE=DMY4-; export DBDATE case "$1" in 'start') echo "Iniciando Informix IDS ..." $INFORMIXDIR/bin/oninit&;; 'stop') echo "Parando Informix IDS ..." $INFORMIXDIR/bin/onmode -ky ;; *) echo "Usage: $0 { start | stop }" exit 1 esac exit 0HP-UX Cree el script que define el servicio en el fichero /sbin/init.d/informix. Utilice este ejemplo:#!/sbin/sh INFORMIXDIR=`grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'`; export INFORMIXDIR INFORMIXSERVER=`uname -n|awk -F'.' '{print $1}'`; export INFORMIXSERVER # Es importante configurar la variable de entorno DBDATE ya que en el arranque # automatico del sistema no se toman las variables de entorno automaticas de # usuario. Y esta variable de entorno es importante para el funcionamiento de # las aplicaciones cliente. DB_LOCALE=es_es.8859-1; export DB_LOCALE DBDATE=DMY4-; export DBDATE case "$1" in 'start') echo "Iniciando Informix IDS ..." $INFORMIXDIR/bin/oninit& ;; 'stop') echo "Parando Informix IDS ..." $INFORMIXDIR/bin/onmode -ky ;; *) esac exit 0 echo "Usage: $0 { start | stop }" exit 1Prueba de arranque y parada automtica En este momento se debern probar los scripts de parada y arranque automtico del agente de base de datos. Para realizar esta prueba es necesario que el motor est online,pararemos la mquina y posteriormente comprobaremos en el fichero de logs de informix, que el motor se ha parado y puesto marcha correctamente. Para ello, lo mejor es simular una parada con rearranque del sistema. Esto puede efectuarlo con los siguientes comandos dependiendo del sistema operativo. S.O. Linux SUN-Solaris IBM-AIX HP-UX C Shell init 6 init 6 shutdown -Fr shutdown -r 0 Tambin puede usarse el comando# reboot -rNotasUna vez reiniciado el equipo, editaremos el fichero $INFORMIXDIR/online.log y verificaremos que se ha producido la parada y arranque automticos del motor de base de datos sin que se haya producido ningn error. Para ello debe ver los comandos de finalizacin, seguidos de los comandos de arranque. Ejecute el comandoonstat -mpara ver los mensajes de log del agente o edite el fichero online.log.20:56:15 Informix Dynamic Server Stopped. 20:58:30 Informix Dynamic Server Started. Fri Sep 27 20:58:30 2002 20:58:30 Event alarms enabled. ALARMPROG = '/home/informix/etc/log_full.sh' 20:58:30 Booting Language from module 20:58:30 Loading Module 20:58:30 Booting Language from module 20:58:30 Loading Module 20:58:35 Informix Dynamic Server Version 9.30.UC2 Software Serial ... 20:58:51 Informix Dynamic Server Initialized -- Complete Disk Initialized. 20:58:51 Checkpoint Completed: duration was 0 seconds. 20:58:51 Checkpoint loguniq 1, logpos 0xc0 ...Una vez realizada esta comprobacin, estaremos seguros de que el sistema se ha instalado correctamente, podemos detener el motor manualmente mediante el comando onmode -ky y pasar a realizar la configuracin definitiva de los espacios de datos (dbspaces) del agente de base de datos. Este punto es muy importante para asegurarnos de que las paradas del equipo son notificadas al agente de forma que sincronice los discos. Las paradas del equipoaccidentales (una cada del sistema elctrico) obligan al agente a iniciar un proceso de recuperacin.Problemas por segmentos de shared memory no liberados Si se quedasen segmentos de memoria sin liberar cuando se para informix, no se podr volver a poner en marcha hasta que estos segmentos no sean liberados. Puede utilizarse la siguiente shell:for i in `ipcs | grep ^0x | awk '{ print $2 }' `; do echo $i ipcrm -m $i doneEstructura de discos recomendada Una vez tenemos el agente de base de datos en marcha se debern crear las estructuras de dbspaces adecuadas para cada entorno, particionando los discos y habilitando dichas particiones para el uso de IBM-IDS . Algunos aspectos a considerar durante la configuracin de los discos son: Uso de RAID por hardware preferible frente al uso de raid por S.O. y especialmente sistemas con cach Uso de RAID 1 preferible frente al RAID 5 Uso de discos de 15K mejor que 10K RPM Uso de raw devices mejor que cooked filed Uso de KIO preferible frente a AIO (depende de lo anterior y del sistema operativo) Maximizar el nmero de discos y distribuir los datosChunks y dbspaces El si st e m a de ba sede da to s se co nf or m a p or u ni da de s l gi ca s de n o m in ad as d bs p ac es . L as ba se s de da to s (t ab las o n di ce s) se al m ac en an en u n o o va ri os d bs p ac es . C ad a d bs p ac e p ue de es ta r co m p ue sto de u n o o m s c h u n ks . U n ch u n k eq ui va le a u n bl o q ue f si co de di sc o (r a w d ev ic e) ou n fi ch er o de si st e m a o pe ra ti v o (c o o k e d fil e) . L a si g ui en te ta bl a re la ci o na la s dife re nt es ti p ol o g as de d bs p ac es co n su s ca ra ct er st ic as es pe ci al es : Ti Descr Comentarios p ipci o n N Norm Es el tipo normal o ms comn. En el tiene cabida al cualquier tipo de dato. T Temp Alojan datos de uso temporal, frecuentemente en oral operaciones de clasificacin (sort). La variable DBSPACETEMP de ONCONFIG debe indicar estos valores. Ejemplo : DBSPACETEMP t_tmp1,t_tmp2S Smar Tipo especial para almacenamiento de tipos de datos tblob Smartblob : BLOB y CLOB, tambin denominados Large space Objects. B Blobs Tipo especial para almacenamiento de tipos de datos Blob : pace BYTE y TEXT. Los sistemas DEISTER SOFTWARE WebStudio y Axional ERP han dejado de utilizar los tipos de datos BYTE y TEXT, no obstante, dichos tipos an estn soportados, por ello, en nuevas instalaciones ya no es necesario crear dbspaces de tipo Blobspace. E n re su m en . Raw devices o cooked files ? Generlamente puede esperarse una mejora de rendimiento de al menos un 15% usando raw devices frente a cooked files. Esta diferncia es an mayor (25% mejor) cuando el sistema operativo dispone de KIO (Kernel Input Output). En principio, configurar raw devices aade una mayor complejidad a la hora de configurar un sistema y require una cierta experincia. En cualquier caso, el no usar raw devices imposibilita que el agente de base de datos IBM-IDS aproveche las ventajas de KIO y por tanto no obtendr el mximo rendimiento posible.Nmero de discos y necesidades de IOPS Determinar el nmero de discos y las necesidades de IOPS (Input Output Operations per Second) es una tarea muy importante y un tanto difcil dado que depende de muchas variables. No obstante, veamos un ejemplo: Imaginemos una base de datos con 10 millones de transacciones con un primedio de 1K por transaccin. Esto supone unos 10GB de datos. Supongamos que tenemos que procesar esta informacin para realizar una contabilizacin. Como un disco generalmente puede leer unos 8K por operacin, cada operacin procesar 8 registros y por tanto necesitaremos 1.25 millones de operaciones de IO. Suponiendo que usamos un slo disco (con una capacidad de una 50 operaciones por segundo), esto supondr que necesiataremos (1250000/50), es decir 25000 segundos (7 horas) en leer la informacin.Por tanto, si queremos dividir el tiempo de esta operacin, la nica forma es: Usar un disco con mayor capacidad de IO. Usar ms discos para particionar los datos de forma que se puedan multiplicar los accesos en paralelo (fragmentacin y/o disk stripping).Ejemplo de configuracin de discos En la siguiente tabla mostramos algunos dbspaces que debe considerar crear en el sistema, el tamao mnimo recomendado (en nmero de chunks) y su utilizacin. Entendemos que esta es una configuracin bsica. No hay consideraciones de volumen de datos por tanto slo sirve a modo de orientacin. La columna pagesize solo se aplica a blobspaces y smartblobspaces y permite indicar el tamao de la pgina. En el resto de dbspaces el tamao viene indicado por el sistema operativo (2k o 4k) y no es modificable. En cambio cuando se trata de blobs y se sabe que tendrn un tamao medio superior a 2k, puede informarse al sistema para que adapte el tamao de pgina a este valor, reduciendo as el nmero de pginas afectadas en una operacin.Dbspaces bsicos db Ti ch Comentarios spa p un ce o ks roo N tdb s 1Se trata del espacio principal del sistema en donde se almacenarn por defecto el physical log, los logical logs y las bases de datos salvo que se indique expresamente lo contrario. Los logs son reas especiales en donde se realizan operaciones de transaccin. Este dbspace contiene adems el rea reservada (catlogo) que contieneinformacin vital para el funcionamiento del sistema de base de datos. Es un rea crtica en la que en principio le recomendamos no almacenar bases de datos de operaciones y reservarlo para los logs. El sistema puede operar con un fallo en algn otro dbspace pero no con un fallo en el rootdbs. d_l N log 1Se trata del espacio en donde se almacenarn los logical logs. Los logs son reas especiales en donde se realizan operaciones de transaccin. El motor de base de datos crea por defecto los logical logs en el dbspace rootdbs. Para usar este dbspace debemos indicar al sistema que cree el nmero mnimo de logical logs requerido en rootdbs (3) y despues crear mediante el comando onparams el resto de logical logs indicando este dbspace como el de almacenamiento de los mismos. En sistemas de gran envergadura debe acondicionar dbspaces adicionales para almacenar logical logs en previsin de transacciones de rangos superiores al 40% del espacio total de logs. d_ N plo g 1Se trata del espacio en donde se almacenar el physical log. Esto es necesario en versiones 11 y superior, en versiones 10 y anteriores el physical log se ubica en el dbspace rootdbs. En versin 11 y superior para reubicar el physical log y asignarle un tamao debe utilizarse el comandoonparams -p -s [-d ] [-y]En sistemas donde se utilice RTO_SERVER_RESTART el tamao del physical log debe ser del 110% del tamao total de los los buffers (del BUFFERPOOL). d_ N wi cs s_ S wi cs s_c S onf 1Almacena la base de datos de control y las bases de datos de aplicaciones del sistema WebStudio. 1Almacena los campos CLOB Y BLOB del sistema de programacin de aplicaciones WebStudio. Lo usan especialmente las bases de datos de aplicaciones wic. 1Almacena los campos CLOB y BLOB del sistema de configuracin aplicaciones WebStudio. Lo usan especialmente el sistema de mail, disco y foto Si piensa utilizar de forma masiva los sistemas de mail (WebMail), disco (WebDisk), archivo fotogrfico (WebPhoto) o de notas (WebNotepad) debe plantearse aumentar el numero de chunks de este dbspace, o bien crear dbspaces particulares para cada sistema. Asi pues podria crear los siguientes dbspaces para cada uno: s_s S bst d s_conf_mail para WebMail, s_conf_disk para WebDisk, s_conf_photo para WebPhoto y s_conf_text para WebNotepad.1Dbspace smartblob por defecto, en l se almacenarn los datos de tipo CLOB y BLOB en caso de no especificar un sbspace explcito para las columnas CLOB/BLOB durante la creacin de las tablas. Tambin ser utilizado por los mdulos Java y otros mdulos datablades para ubicar sus datos de tipo smartblob. La variable SBSPACENAME de ONCONFIG debe indicar este valor. Ejemplo : SBSPACENAME s_sbstds_s S bt mp1Este dbspace albergar datos temporales para operaciones con blobs (si no lo especifica se usar el definido en SBSPACENAME). La variable SBSPACETEMP de ONCONFIG debe indicar este valor. Ejemplo : SBSPACETEMP s_sbtmps_s S bs ys1Este dbspace albergar principalmente informacin estadstica de agente IDS (si no lo especifica se usar el definido en SBSPACENAME). La variable SYSSBSPACENAME de ONCONFIG debe indicar este valor. Ejemplo : SYSSBSPACENAME s_sbsysTo _ tal Lo s db spa ces SB8Chunks (16GB)SP A CE TE M P SY SS BS PA CE N A M E pu ed en ob via rse si no va ha ha cer us o int ens ivo de las ca pa cid ad es de ges ti n de obj etos bin ari os del W eb St ud io. No ob sta nte , si se util iza n los sist em as de cor reo ele ctr ni co, dis co we b, etc . es mu y rec om en da ble qu e losdef ina .Dbspaces temporales Los esp acio s tem por ales revi sten una esp ecia l imp ort ncia dad o que per mit en opti miz ar las ope raci one s de ord ena ci n. Pref erib lem ente losdisc os que alm ace nan los esp acio s tem por ales deb en ser dist into sa los de los sist ema s de dat os. Ade ms deb en exis tir un mn imo de 2 esp acio s tem por ales a serposi ble en disc os alte rno s. El sist ema de bas e de dat os utili za en ord en alte rno cad a uno de los esp acio s asig nad os y pue de par alel izar ope raci one s de ord ena cin en vari os dbs pac es sim ulta nea me nte. dbs Ti chu Comentarios pac po nks e t_t T mp 1 t_t T mp 2 t_t T mp 3 t_t T mp 4 Tot _ al Con side re crea r si es posi ble un ma yor n 1Salvo que su sistema requiera operaciones de ordenacin masivas, cada dbspace puede constar de un nico chunk de 2GB. 1Considere que cada dbspace debe estar en un discocontrolador distinto. 1Considere que cada dbspace debe estar en un discocontrolador distinto. 1Considere que cada dbspace debe estar en un discocontrolador distinto. 4Chunks (8Gb)mer o de esp acio s tem por ales (4 par a sist ema s peq ue os, 8 par a sist ema s me dios , 16 o ms par a gra nde s).Dbspaces para datos Par a los sist em as de datos pro pia me nte dic ho s, de be opt ar por la sep ara ci n lg ica de est os. Po r un lad o, si dis po ne de la apl ica ci n DE IS TE R SO FT W ARE Ax ion al ER P en re as co mo fin an zas , co me rci al y dat aw are ho use , pu ed e opt ar por los sig uie nte s crit eri os qu e de be n siemp re ser rev isa do s en fun ci n del ta ma o. En el eje mp lo, los val ore s inc luy en tre s esc en ari os (s ma ll, me diu m y lar ge) . El rea de dat aw are ho use pu ed e ten er req uis ito s esp eci ale s en fun ci n del vol um en. En tal es cas os la fra gm ent aci n es un a op ci n adec ua da. Est a op ci n pu ed e co nsi der ars e ta mb in en las tab las e nd ice s de tab las de gra n vol um en de los sist em as fin an cie ro yco me rci al. Par a la int rod uc ci n de las reg las de fra gm ent aci n de dat os y/o nd ice s de ber acc ed er al obj eto de co nfi gur aci n deser vid ore s de bas es de dat os des de la bas e de dat os de co ntr ol (wi c_ co nf) . db Ti chu Comentarios spa p nks ce o d_i N 1- Almacenar los datos de las entidades del sistema co 2-4 econmico-financiero. n En sistemas con elevados volmenes debe considerar la posibilidad de aislar tablas e indices de las entidades mayores. Por ejemplo puede crearse un dbspace para los movimientos contables y otro para sus ndices y as para los efectos y sus ndices. i_i N 1- Almacenar los ndices de las entidades del sistema co 2-4 econmico-financiero. n s_i S 1- Almacenar los campos blob de las entidades del sistema co 2-2 econmico-financieron d_i N 1- Almacenar los datos de las entidades del sistema ges 2-4 comercial. Al igual que en el caso anterior, cuando los volmenes de datos excedan varios millones de filas por tabla, debe condierar aislar estas en dbspaces individuales as como sus ndices. i_i N 1- Almacenar los ndices de las entidades del sistema ges 2-4 comercial. s_i S 1- Almacenar los campos blob de las entidades del sistema ges 2-2 de gestin d_ N 1- Almacenar los datos de las entidades del sistema de dat 4-8 datawarehouse. a En sistemas de larga escala (decenas o centenares de millones de rows por entidad), los dbspaces para datawarehouse (datos e ndices) pueden requerir configuraciones especiales incluyendo fragmentacin por expresin (1 dbspace por mes, etc). i_d N 1- Almacenar los ndices de las entidades del sistema de ata 4-8 datawarehouse. d_t N 1- Puede crear un rea de test que le permita realizar est 4-8 procesos de precarga de datos y almacenar bases de datos de pruebas. i_t N 1- Almacenar los ndices de los procesos de precarga de est 4-8 datos y de las bases de datos de pruebas To _ 10- Chunks (20Gb, 56Gb, 104Gb) tal 2852Creacin de volmenes lgicos En Linux, si las particiones se montan sobre un LVM puede automatizar la creacin de dichas particiones mediante un script. A continuacin mostramos un script de ejemplo con varios mtodos de creacin de volmenes lgicos:#pvcreate /dev/scsi/host0/bus0/target1/lun0/part1 #vgcreate ifmx /dev/scsi/host0/bus0/target1/lun0/part1#echo "=== Muestra los Volume Groups existentes " #vgdisplay | grep "VG Name" | awk '{ print $3 }' #vgscan # Muestra los fisical volumes #pvscan # Muestra los logical volumes #lvscan # Muestra informacin avanzada de un volume group #vgdisplay -v ifmx # Para crear volumenes lgicos manualmente: lvcreate --contiguous y -L 5GB -n rootdbs ifmx lvcreate --contiguous y -L 5GB -n d_llog ifmx lvcreate --contiguous y -L 5GB -n d_plog ifmx lvcreate --contiguous y -L 5GB -n s_sbstd ifmx lvcreate --contiguous y -L 5GB -n s_sbsys ifmx lvcreate --contiguous y -L 5GB -n s_sbtmp ifmx lvcreate --contiguous y -L 5GB -n t_temp1 ifmx lvcreate --contiguous y -L 5GB -n t_temp2 ifmx lvcreate lvcreate lvcreate lvcreate lvcreate lvcreate lvcreate lvcreate lvcreate --contiguous --contiguous --contiguous --contiguous --contiguous --contiguous --contiguous --contiguous --contiguous y y y y y y y y y -L -L -L -L -L -L -L -L -L 2048M 2048M 2048M 2048M 2048M 2048M 2048M 2048M 2048M -n -n -n -n -n -n -n -n -n d_conf_0 d_wics_0 s_wics_0 s_mail_0 s_mail_1 s_disc_0 s_text_0 s_conf_0 s_photo_0 ifmx ifmx ifmx ifmx ifmx ifmx ifmx ifmx ifmx# Para eliminar todos los volumenes lgicos de los VG for VG in vg2 vg3 vg4 vg5; do for LV in `vgdisplay -v $VG | grep "LV Name" | awk '{ print $3 }'`; do lvremove -f $LV done done # Para crear volumenes de en los volume groups: for VG in vg2 vg3 vg4 vg5; do for LV in `seq --format="%02.0f" 1 4`; do lvcreate -L 2048M -n lvol${LV} $VG done for LV in `seq --format="%02.0f" 5 14`; do lvcreate -L 4096 -n lvol${LV} $VG done lvcreate -L 88.61G -n lvol15 $VG mkfs.ext3 /dev/${VG}/lvol15 doneConsideraciones LVM y cabina de discos Hay algunas consideraciones respecto a LVM y particiones que estn en cabina. La forma habitual de crear los chunks, es contra un fichero que es en realidad un enlace smbolo al dispositivo fsico. Los permisos del dispositivo fsico para los chunks tiene que tener modo 660 y owner informix:informix. En el siguiente ejemplo el chunk rootdbs va contra logical volume. El dispositivo final tiene modo 660 y owner informix:informix.[informix@dbsrv2 ~]$ ls -la /INFORMIXDEV total 8 drwxr-xr-x 2 root root 4096 2010-04-15 12:35 ./ drwxr-xr-x 27 root adm 4096 2011-01-01 04:42 ../ lrwxrwxrwx 1 root root 17 2010-04-15 12:35 rootdbs -> /dev/VG01/rootdbs [informix@dbsrv2 ~]$ ls -la /dev/VG01/rootdbs lrwxrwxrwx 1 root root 24 2010-12-28 10:04 /dev/VG01/rootdbs -> /dev/mapper/VG01-rootdbs [informix@dbsrv2 ~]$ ls -la /dev/mapper/VG01-rootdbs brw-rw---- 1 informix informix 252, 0 2011-03-22 17:00 /dev/mapper/VG01-rootdbsPara conseguirlo es necesario setear los permisos con dereference para llegar hasta el ltimo nivel:chown --dereference informix:informix /INFORMIXDEV/rootdbs chmod 660 /INFORMIXDEV/rootdbs chmod 660 /dev/mapper/VG01-rootdbsSi esto no fuese suficiente, entonces habra que aadir una regla en udev. En el directorio /etc/udev/rules.d hay que crear el fichero 99-custom.rules con la siguiente instruccin:KERNEL=="[ifmx]dm-*", MODE="0660", OWNER="informix", GROUP="informix"donde KERNEL indica el pattern de los ficheros ubicados en /dev que pertenecen a los chunks de informix y deben tener modo 660 y owner informix:informix. Contra discos de cabina podra llegar a suceder que el sistema no arrancase el gestor de comunicacin con la cabina antes del servicio LVM. En tal caso lo que ocurre es que los volmenes lgicos creados en los discos de cabina no son visibles al SO. Para solucionarlo se puede forzar un rescan de los volmenes lgicos. Se puede utilizar igualmente el mismo fichero /etc/udev/rules.d/99-custom.rules y aadir al principio los comandos de rescanENV{ID_PATH}=="*iscsi*",RUN+="/sbin/vgscan --mknodes" ENV{ID_PATH}=="*iscsi*",RUN+="/sbin/vgchange -a y"de este modo los volmenes ahora si serian visibles al SO y los puede utilizar informix para sus chunks.Gua de uso del comando onspaces El comando onspaces permite entre otras operaciones, gestionar la creacin de dbspaces. Suponiendo que hemos instalado el agente y tenemos los dispositivos de disco preparados, veamos como asignar estos usando onspaces. Para mayor seguridad le recomendamos que siempre utilize un offset de 4K en los chunks. Los primeros bytes de un disco o particin suelen estar reservados para etiquetas de la particin o del gestor de volumenes. No debe escribir sobre estas zonas a riesgo de confundir al sistema operativo. Aunque el tamao de la etiqueta vara (es 512 bytes para AIX), 4K es un valor adecuado para todos los casos.Crear un nuevo dbspace de tipo normal Los dbspaces de datos utilizan el tamao de pgina del sistema operativo (2k o 4k). Los parmetros a indicar son:$ onspaces -c -d d_logs -p /INFORMIXDEV/sampledev_0 -o 4 -s 2000000Crear un dbspace temporal Los dbspaces temporales son muy importantes para un buen rendimiento del sistema, dado que aslan los "sorts" en reas independientes. Adems pueden utilizarse mltiples temporales de forma que el agente puede paralelizar las operaciones de ordenacin.$ onspaces -c -d t_temp1 -t -p /INFORMIXDEV/sampledev_0 -o 4 -s 2000000Los dbspaces temporales deben asignase en el fichero de configuracin del agente (onconfig), en la variable DBSPACETEMP. Y recuerde que varios dbspaces se indican separados por coma sin espacios entre ellos.DBSPACETEMP t_tmp1,t_tmp2,t_tmp3,t_tmp4 # Default temp dbspacesAadir un chunk a un dbspace Para aadir un chunk a un dbspace, basta con indicar el dbspace al cual aadir el chunk, el path del dispositivo, su offset y su tamao. El tamao de cada chunk puede variar dentro de un mismo dbspace.$ onspaces -a d_logs -p /INFORMIXDEV/sampledev_0 -o 4 -s 2000000Borrar un chunk de un dbspace Para borrar un chunk de un dbspace, debe asegurarse de que dicho chunk no est siendo utilizado y est completamente vacio. Para ello, puede ejecutar onstat -d y verificar el tamao del espacio libre que cuando el chunk est vacio tiene 3-4 paginas libres menos que el total de pginas del chunk.Para borrar el chunk ejecute:$ onspaces -d d_dbspace -p /INFORMIXDEV/sampledev_0 -o 4Donde se informa el nombre del dbspace al que pertenece el chunk, el path del dispositivo en el que est montado y el offset con el que se cre. Si no se pone el offset correcto el sistema entiende que el chunk no existe y devuelve un error:onspaces -d d_dbspace -p /INFORMIXDEV/sampledev_0 -o 2 Chunk not dropped. ISAM error: No such chunkTenga en cuenta que el parametro -o 4 se expresa en Kbytes mientras que el offset que vemos ejecutando el comando onstat -d se expresa en pginas de datos (que suelen ser de 2k o 4k dependiendo de la arquitectura del equipo).Crear un dbspace de tipo Smart Un smartblobspace est orientado a almacenar datos y conjuntos de datos especiales de gran capacidad denominados CLOB y BLOB.$ onspaces -c -S s_sbstd -p /dev/rs_sbstd_01 -o 4 -s 2000000Crear un dbspace de tipo Smart temporal Un smartblobspace temporal almacena objetos CLOB y BLOB de forma temporal.$ onspaces -c -S s_sbtmp -t -p /INFORMIXDEV/rs_sbtmp_01 -o 4 -s 2000000 -Df LOGGING=ONConfiguracin de onconfig para el uso de SmartBlob Spaces Un sistema que utilice objetos CLOB y/o BLOB debe disponer de al menos un smartblobspace por defecto. En el fichero de configuracin del agente onconfig debe definir la varible SBSPACENAME y asignarle el smartblobspace por defecto. Para que esta asignacin tenga efecto, debe detener y reiniciar el agente. Si no se define el smartblob por defecto, al intentar cargar datos en columnas de tipo CLOB o BLOB se producir el error:9810: Smart-large-object error. 12053: Smart Large Objects: No sbspace number specifiedCondicionantes de los Smart o Blob spaces Una vez asignado un blobspace o smartblobspace al sistema debe provocar un avance de logical log para que este pueda ser utilizado. Ejecute el comando onmode -l para avanzar al siguiente log. En caso de no hacerlo, el agente no podr efectuar transacciones sobre este reay obtendr un error:-169 ISAM error: Pages for TEXT or BYTE data can't be allocated from a chunk until chunk add is logged. When a storage space containing TEXT or BYTE data has been extended by adding a new chunk, no pages can be allocated until the log record showing the addition of the chunk has been logged. If this rule were not enforced, certain anomalies could occur during recovery. You do not have to wait until the log is full; you can run the tbmode or onmode utility with the -l option to force a switch to the next log.Los dbspaces de tipo Blob Un blobspace permite el almacenamiento de campos TEXT y BYTE. WebStudio soporta tanto los campos TEXT, BYTE como sus equivalentes ms avanzados CLOB y BLOB. Preferiblemente utiliza estos ltimos. No obstante puede desarrollar aplicaciones para utilizar cualquiera de estos tipos de forma transparente. Para cargar datos de tipo TEXT o BYTE es necesario crear un espacio de base de datos especial de tipo Blob Space mediante la utilidad onspaces:$ onspaces -c -b b_data -p /INFORMIXDEV/sampledev_0 -o 4 -s 2000000Los tipos de datos BYTE o TEXT deben ser preferiblemente reemplazados por sus equivalentes BLOB y CLOB.Script de creacin de dbspaces En sistemas de cierta envergadura y cuando entran en juego varias unidades de disco y sus particiones, suele ser conveniente usar una shell para la creacin del sistema de discos de base de datos. Generalmente este script se crea como /CONFIG/ifmx_init_dbspaces.sh y sirve para automatizar el proceso de creacin de dbspaces de una instancia de IBM-IDS. El objetivo de esto es dejar un sistema reproducible de forma que pueda: Realizar pruebas de configuracin de discos de forma repetida hasta alcanzar la configuracin deseada. Disponer de un mecanismo para reproducir con facilidad la configuracin de dbspaces en otro sistema para casos de recuperacin. A partir de la versin IDS 9.40 se soportan chunks de datos con un tamao superior a los 2Gbytes. Se recomienda actualizar el formato de paginas de disco a la versin utilizada en 9.40 mediante los comandos onmode -BC 1 y onmode -BC 2. A continuacin se muestra un script avanzado que permite definir listas dedbspaces/chunks asignando su tipo y tamao de forma que pueda automatizarse la creacin de los mismos. Este script gestiona automticamente la creacin de los links en /INFORMIXDEV y ejecuta automticamente los comandos onmode -BC 1 y onmode -BC 2. En Linux, el uso del servicio rawdevices no es necesario ya que en las versiones 9.40 de IDS no se hace uso de ellos y en las versiones IDS 9.50 funcionando con kernel de Linux 2.6 el uso de KAIO est implementado directamente contra los dispositivos.Uso de LVM y KAIO Para la creacin de los dbspaces y ms concretamente para la creacin de los chunks (particin fsica para informix) se recomienda el uso de LVM frente al uso de ficheros del sistema de ficheros del sistema operativo. Esto permite el uso de KAIO (Kernel Asynchronous I/O) por parte del motor de base de datos, mejorando los tiempos de entrada y salida (lectura y escritura) de los datos en disco. Linux: para el uso de KAIO es necesario que la libreria libaio est instalada en el sistema. HP-UX: vese el siguiente apartado para el uso de KAIO. AIX: vese el siguiente apartado para el uso de KAIO.El nmero mximo de procesadores KAIO simultneos que se activarn dependen del valor asignado al parmetro del onconfig: NUMCPUVPS: indica el nmero de procesadores virtuales asignados al motor. Este parmetro determina tambien el nmero mximo de procesadores KAIO simultneos que se activarn y por lo tanto puede afectar tambin al rendimiento I/O. En ocasiones, puede interesar configurar un numero de CPUs virtuales superior al de CPUs fsicas.Uso de KAIO en HP-UX El uso de KAIO (Kernel Asynchronous I/O) por parte del motor de base de datos mejora los tiempos de entrada y salida (lectura y escritura) de los datos en disco. El uso de KAIO (Kernel Asynchronous I/O) en HP-UX est condicionado a: Utilizacin de chunks a logical volumes (rawdevices) en mode caracter. Definicin de variables de entorno KAIOON y IFMX_HPKAIO_NUM_REQ.El controlador asyncdsk del kernel debe estar operativo.Chunks a logical volumes (rawdevices) modo caracter En HP-UX los dispositivos de LVM tienes dos modos de I/O: Bloque: se escriben y leen bloques. Caracter: se escriben y leen caracteres.Es necesario que los chunks apunten al dispostivo en modo caracter. El siguiente listado (ls -la) muestra un ejemplo de los dispositivos creados va LVM para un volumen group:brw-r----1 root /dev/vgraw2/db2lvraw1 brw-r----1 root /dev/vgraw2/db2lvraw2 brw-r----1 root /dev/vgraw2/db2lvraw3 brw-r----1 root /dev/vgraw2/db2lvraw4 brw-r----1 root /dev/vgraw2/db2lvraw5 crw-r----1 root /dev/vgraw2/rdb2lvraw1 crw-r----1 root /dev/vgraw2/rdb2lvraw2 crw-r----1 root /dev/vgraw2/rdb2lvraw3 crw-r----1 root /dev/vgraw2/rdb2lvraw4 crw-r----1 root /dev/vgraw2/rdb2lvraw5 sys sys sys sys sys sys sys sys sys sys 64 0x030001 Oct 17 17:44 64 0x030002 Oct 17 17:44 64 0x030003 Oct 17 17:44 64 0x030004 Oct 17 17:44 64 0x030005 Oct 17 17:44 64 0x030001 Oct 17 17:44 64 0x030002 Oct 17 17:44 64 0x030003 Oct 17 17:44 64 0x030004 Oct 17 17:44 64 0x030005 Oct 17 17:44Se observa que existen parejas de dispotivos que apuntan a la misma direccin fsica de disco, pero con el primer flag diferente b/c. Los chunks deben apuntar a los que tienen el flag c, como:crw-r----1 root /dev/vgraw2/rdb2lvraw1 crw-r----1 root /dev/vgraw2/rdb2lvraw2 crw-r----1 root /dev/vgraw2/rdb2lvraw3 crw-r----1 root /dev/vgraw2/rdb2lvraw4 crw-r----1 root /dev/vgraw2/rdb2lvraw5 sys sys sys sys sys 64 0x030001 Oct 17 17:44 64 0x030002 Oct 17 17:44 64 0x030003 Oct 17 17:44 64 0x030004 Oct 17 17:44 64 0x030005 Oct 17 17:44Variables de entornoPara tener KAIO debemos fijar la siguientes variables de entorno. Las variables deben ser definidas en los perfiles generales de la manera descrita en el apartado anterior Definicin de las variables de entorno para el usuario informix. Por defecto, KAIO est deshabilitado en esta plataforma. Para activar KAIO fije la variable de entorno KAIOON como sigue: Para Bourne or Korn Shell:KAIOON=1; IFMX_HPKAIO_NUM_REQ=2300 export KAIOON export IFMX_HPKAIO_NUM_REQPara C Shellsetenv KAIOON 1 setenv IFMX_HPKAIO_NUM_REQ 2300El controlador asyncdsk Las siguientes condiciones sn un prerequisito para usar KAIO: El controlador asyncdsk de HP KAIO debe estar instalado y "linkado" en el ncleo. Asegurese que KAIO est encendido y ejecutndose. Compruebe si existe /dev/async. Si no es as, siga las siguientes instrucciones:su rootSi est usando "HP hardware/OS redundancy o mirroring", cree el dispositivo async de la siguiente forma:/usr/sbin/mknod /dev/async c 101 0En otro caso, si est usando "IBM Informix mirroring" o no est usando "hardware/OS mirroring", o no est usando ningun tipo de "mirroring", cree el dispositivo async de la siguinte forma:/usr/sbin/mknod /dev/async c 101 4 chmod 0666 /dev/asyncAsegurese que la siguiente entrada existe en el fichero /etc/privgroup:informix MLOCKDespus de aadirla, ejecute el siguiente comando:/sbin/rc1.d/S400set_prvgrp startLa variable de entorno IFMX_HPKAIO_NUM_REQ permite especificar el nmero de peticiones KAIO simultneas que el servidor puede procesar al mismo tiempo. El valor puede ser fijado en el rango [10,5000], siendo 1000 el valor por defecto de sta. Si ocurre el siguiente error:"KAIO: out of OS resources, errno = %d, pid = %d"considere incrementar el valor de IFMX_HPKAIO_NUM_REQ. Por ejemplo: Para Bourne or Korn Shell:IFMX_HPKAIO_NUM_REQ=2300; export IFMX_HPKAIO_NUM_REQPara C Shellsetenv IFMX_HPKAIO_NUM_REQ 2300Con sam puede comprovarse si el controlador est activo, a travs de Kernel Configuration, Kernel Web, Modules and drivers, y asegurndonos que asyncdsk est activado.Uso de KAIO (Kernel Asynchronous I/O) en AIX El uso de KAIO (Kernel Asynchronous I/O) por parte del motor de base de datos mejora los tiempos de entrada y salida (lectura y escritura) de los datos en disco. El uso de KAIO en AIX est condicionado a: Utilizacin de chunks a logical volumes (rawdevices) en mode caracter.Chunks a logical volumes (rawdevices) modo caracter En AIX los dispositivos de LVM tienes dos modos de I/O: Bloque: se escriben y leen bloques. Caracter: se escriben y leen caracteres.Es necesario que los chunks apunten al dispostivo en modo caracter. El siguiente listado (ls -la) muestra un ejemplo de los dispositivos creados va LVM para un volumen group:brw-rw---brw-rw---brw-rw---brw-rw---crw-rw---crw-rw---crw-rw---crw-rw---1 1 1 1 1 1 1 1 informix informix informix informix informix informix informix informix informix informix informix informix informix informix informix informix 43, 43, 43, 43, 43, 43, 43, 43, 23 24 25 26 23 24 25 26 08 08 08 08 08 08 08 08 Jun Jun Jun Jun Jun Jun Jun Jun 2005 2005 2005 2005 2005 2005 2005 2005 /dev/lvt01 /dev/lvt02 /dev/lvt03 /dev/lvt04 /dev/rlvt01 /dev/rlvt02 /dev/rlvt03 /dev/rlvt04Se observa que existen parejas de dispotivos que apuntan a la misma direccin fsica de disco, pero con el primer flag diferente b/c. Los chunks deben apuntar a los que tienen el flag c, como:crw-rw---crw-rw---crw-rw---crw-rw---1 1 1 1 informix informix informix informix informix informix informix informix 43, 43, 43, 43, 23 24 25 26 08 08 08 08 Jun Jun Jun Jun 2005 2005 2005 2005 /dev/rlvt01 /dev/rlvt02 /dev/rlvt03 /dev/rlvt04Configuracin de los logical logs Los logical logs son bloques de almacenamiento de transacciones. Estas por defecto se almacenan en rootdbs y el sisteam requiere 3 como mnimo para operar. El tamao de un logical log y su ubicacin no puede alterarse. Sin embargo, puede crear un nuevo logical log en una nueva ubicacin (dbspace) con el tamao que desee. Aconsejamos la creacin de logical logs en un dbspace especfico, por ejemplo d_logs, tal y como se ha propuesto en el ejemplo de configuracin de discos. Al inicializar el sistema se habrn creado un nmero determinado de logical logs en el dbspace rootdbs. En los siguientes pasos se indica como crear nuevos logical logs y como eliminar los logical logs asignados al dbspace rootdbs. Listar los logical logs activos mediante onstat -l.$ onstat -l IBM IDS Version 9.40.UC2 -- On-Line -- Up 18:18:31 -- 1461296 Kbytes Physical Logging Buffer bufused bufsize numpages P-2 30 128 17269 phybegin physize 1:263 15000 numwrits pages/io 249 69.35 phypos phyused 2580 30%used 0.20Logical Logging Buffer bufused bufsize numrecs numpages numwrits recs/pages pages/io L-2 0 128 335273 71278 66817 4.7 1.1 Subsystem numrecs Log Space used OLDRSAM 329855 27789568 SBLOB 5418 538180 address number flags %used 5bb05af0 1 U---C-L 60.66 5bb05b30 2 U-B---100.00 5bb05b70 3 U-B---100.00 5bb05bb0 4 U-B---100.00 5bb05bf0 5 U-B---100.00 5 active, 5 total uniqid 3405 3383 3384 3385 3386 begin 1:15263 1:25263 1:35263 1:45263 1:55263 size 10000 10000 10000 10000 10000 used 6066 10000 10000 10000 10000Puede observar que en el ejemplo anterior hay 5 logs de 10000 pginas cada uno. Su tamao se obtiene de multiplicar 10000 por el tamao de pgina de su sistema (2k o 4k). Eliminar logical logs.$ onparams -d -l 6 WARNING: Dropping a logical log file. Do you really want to continue? (y/n)yLogical log 6 successfully dropped. $ onparams -d -l 5 WARNING: Dropping a logical log file. Do you really want to continue? (y/n)y Logical log 5 successfully dropped. ...El agente necesita un mnimo de 3 logical logs para operar as que no podr borrar los 3 ltimos. Si no puede eliminar un logical log, habiendo ms de tres logical logs definidos, entonces, pruebe a ejecutar onmode -l para forzar el salto al siguiente logical log. Esta operacin liberar el logical log que se desea elimimar.Crear nuevos logical logs en la ubicacin y con el tamao que requiera mediante el comando:$ onparams -a -d d_logs -s 20000En este ejemplo, utilizamos un dbspace d_logs y creamos un nuevo logical log de 20000 Kbytes. Repita esta operacin para el total de logical logs que desee crear. Elimine los logical logs anteriores a la creacin de los nuevos si desea efectivamente dejar libre de logical logs el dbspace rootdbs. Realice un ontape para que el sistema pueda utilizar los nuevos logical logs.$ ontape -s -L 0Este comando realizar un backup de las bases de datos. Si tiene el parmetro TAPEDEV apuntando a cinta, har el backup en la cinta. Si desea evitar esta operacin modifique momentnemante el valor a /dev/null. El tamao recomendado de cada logical log varia entre los 10 y los 20 megabytes y depende del tipo de operaciones y del nivel de concurrencia. Si implemente el backup de logical logs, cada vez que se llene uno, se producir su backup. Un tamao pequeo de los logical logs hace que se produzcan los backups ms rpidamente lo cual ofrece ms seguridad aunque aade tareas al servidor. Un tamao grande hace la gestin de logs ms eficiente pero menos segura. Los valores indicados ofrecen un rango intermedio en el que seguridad y eficiencia estn balanceados. El nmero de logical logs debe considerarse para soportar el tamao de transaccin mximo del sistema. En general, debera reservarse un dbspace especfico (d_logs) de no menos de 2Gb y un nmero de logical logs entre 40 y 100. Como la creacin de 100 logical logs puede ser una tarea tediosa, a continuacin incluimos un script de ejemplo para la automatizacin de la creacin de los logical logs:#!/bin/sh# # procname: init_log_server.sh # # INFORMIXDIR=`grep "^informix:" /etc/passwd | awk -F: '{ print $6 }'` export INFORMIXDIR INFORMIXSERVER=`uname -n|awk -F'.' '{print $1}'`; export INFORMIXSERVER DB_LOCALE=es_es.8859-1 PATH=${PATH}:${INFORMIXDIR}/bin export DB_LOCALE PATH MAXLOGS=125 NUMLOGS=0 DBSLOGS=d_logs while [ $NUMLOGS -lt $MAXLOGS ] do su informix -c "onparams -a -d $DBSLOGS" NUMLOGS=$((NUMLOGS + 1)) doneTabla de compatibilidad de IDS con Linux Dado que existen numerosas distribuciones de linux y que cada una de ellas, tiene sus peculiaridades ya que incorpora paquetes de software distintos, incorporamos a continuacin una tabla con las versiones de Linux que pueden operar con IDS y sus caracteristicas RedHat ha descontinuado su linea de productos "RedHat", continuando la linea de desarrollo para worstations en un proyecto "Open" denominado Fedora y potenciando su linea de servidores RHEL. SUSE ha sido adquirida por Novell, aunque continua comercializando sus productos con esta marca. Product N Distrib Kernel Glibc Compile Comentarios version T utions version version r version P L IDS SI RHEL 2.6.9- 10.00X 4 11 C3 3.4.3 Instale los paquetes compatlibstdc++-33-3.2.3-47.3 y libaio0.3.103-3Produc N Distri Kerne Glibc Compi Comentarios t T butio l versi ler versio P ns versio on versio n L n nIDS N Red 9.40.U O Hat C3 7.2 x86 N Red O Hat 7.32.4.7 2.2.4 2.962.4.18 2.2.5 2.96N Red 2.4.18 2.2.9 3.2 O Hat 8 3 SI Red 2.4.20 2.3.2 3.2.2 Hat 9 N Red O Hat AS 2.1 2.4.9 2.2.4 2.96Requiere actualizar glibc para corregir un problema de TCP/IP. Get glibc-2.3.24.80.6.i686.rpm.? RHE 2.4.21 2.3.2 3.2.3 Instale compat-libstdc++-7.3L3 2.96.122.i386.rpm disponible en el CD #3. SI Fedor 2.4.19 2.3.2 3.2.3 Instalar paquete compat-libstdc++-7.3 a Core 1 SI Fedor 2.6.5 2.3.3 3.3.2 Instalar paquete compat-libstdc++-7.3 a Core 2 N Mand 2.4.19 2.2.5 3.2 O rake 9.1 N Mand 2.4.22 2.3.2 3.3.1 O rake 9.2.1 SI Mand 2.6.3 2.3.3 3.3.2 Debe instalar el paquete libstdc++2.10 rake 10 N SUSE 2.4.19 2.2.5 3.2 O 8.1 Actualice a glibc-2.2.5-165. Requiere borrar el fichero /var/lib/libpthread.so.2N SUSE 2.4.20 2.3.2 3.3 O 8.2 ? SUSE 2.4.21 2.3.2 3.3.1 9 ? SUSE 2.4.19 2.3.5 3.2 SLES 8Actualice a la versin de glibc disponible en el CD #1: rpm -U --old package ./suse/i686/glibc-2.3.2-5.i686.rpm.Actualice a glibc-2.2.5-165.Problemas comunes al iniciar el agente de base de datos A continuacin se detallan algunos problemas comunes de configuracin segn los distintos sistemas operativos. Unix General Problema Fatal error in shared memory Es posible que durante la configuracin de los ficheros, hayamos creation for 'hostname' cambiado el nombre de la mquina en el fichero /etc/hosts. Si no hemos reiniciado la mquina, el nombre de la misma sigue siendo el anterior, no el del fichero /etc/hosts. En los ficheros $INFORMIXDIR/etc/sqlhosts se definen los SERVERNAMES y uno de los campos a parametrizar es el nombre de la mquina. Deberemos acceder como usuario root y ejecutarhostname nombre_de_la_maquinapara verificar que el cambio se ha realizado podemos comprobar que el nombre que nos devuelve el comando de a continuacin es el nuevo Network driver cannot bind a La configuracin de $INFORMIXDIR/etc/sqlhosts es incorrecta. name to the port Esta intentando que IDS escuche a travs de un puerto que ya est en uso. Verifique el cuarto parametro correspondiente al servicio (Puerto de conexin) y verifique que corresponde a un puerto no utilizado por ningun otro servicio del equipo, o si dispone de distintos DBALIASNAME que no haya dos de ellos que esten parametrizados con el mismo nombre de servicio o puerto de conexin. Cannot find message file. Check INFORMIXDIR and DBLANG Este error se da al ejecutar el oninit, se debe a que se ha instalado el motor y a posteriori una herramienta de nivel inferior. Suele ocurrir cuando una vez instalado el agente, se instala el 4GL. Por ejemplo el agente es versin 9 mientras que el 4GL es versin 7. Por tanto, el agente no encuentra ciertos mensajes que la tool4GL ha sobre-escrito. Si este es el origen del problema para solucionarlo instalar nuevamente el agente. El orden de instalacin siempre debe ser tools de nivel inferios (4GL) y luego tools de nivel superior (IDS 9/10). El agente no arranca porque no tiene acceso a ROOT DBspace en un sistema con LVM Esto puede deberse a dos causas: Los permisos del fichero ROOTPATH no son los correctos. En un sistema con LVM los permisos de directorio donde se almacenan los enlaces de los logical volumns, se pierden cada vez que se reinicia la mquina. Nuestras shells tienen en cuenta este hecho, y por ello si se activa el servicio informix ejecutando la shell (/etc/init.d/informix) se otorgan los permisos para el directorio. Compruebe los permisos para /dev/NOMBRE_DEL_VOLUMEN_GROUP. En un sistema con LVM los logical volumns no estan disponibles (LV Status NOT available)# lvdisplay --- Logical volume --LV Name VG Name LV UUID 0KEM-1H6Q-Tmdv-GjkBOB LV Write Access LV Status # open LV Size Current LE Segments Allocation Read ahead sectors Block device /dev/VG0/rootdbs VG0 AauggE-7caE-Kgxiread/write NOT available 7 10,00 GB 2560 1 contiguous 0 253:10Si ejecutando el comando# vgchange -ael estado de los logical volumns pasa a available, el problema puede deberse a que la shell boot.lvm (el servicio que pone en marcha el LVM) cuando se ejecuta no encuentra los grupos de volmenes porque los drivers de la controladora de discos no se han ejecutado todava. Se puede poner esta shell en los niveles correspondientes /etc/init.d/rc1.d, /etc/init.d/rc3.d y /etc/init.d/rc5.d. oninit: Not enough room in ROOT DBspace Si los logical logs se hallan en ROOT DBspace, este mensajeoninit: Not enough room in ROOT DBspace.Requested 213638K, ONCONFIG value 'ROOTSIZE' 160000K. oninit: Fatal error in shared memoryindica que:LOGFILES * LOGSIZE > ROOTSIZEAIX Problema The type of your Al ejecutar dbaccess no se reconoce el tipo de terminal. Verifique que terminal is unknown tiene definida la variable TERMCAP y que esta apunta a un fichero to the system vlido de descripcin de terminales como $INFORMIXDIR/etc/termcap. Compruebe que su tipo de terminal est representado en las entradas de termcap como por ejemplo vt100.Solaris Problema Fatal error in shared memory creation for 'hostname' Verifique que el fichero /etc/system contiene las variables de shared memory indicadas en el documento de notas tcnicas para la versin de Solaris. Por ejemplo:forceload: sys/shmsys forceload: sys/semsys forceload: sys/msgsys set shmsys:shminfo_shmmax=268435456 set semsys:seminfo_semmap=256 set semsys:seminfo_semmni=4096 set semsys:seminfo_semmns=4096 set semsys:seminfo_semmnu=4096 set semsys:seminfo_semume=64 set semsys:seminfo_semmsl=100 set shmsys:shminfo_shmmin=20 set shmsys:shminfo_shmmni=500 set shmsys:shminfo_shmseg=100 set c2audit:audit_load=1Linux Problema El agente no arranca porque se ha Esto puede ser debido a un limite de 768 Mbytes en la configurada demasiada shared memoria por defecto que puede asignar IBM-IDS en Linux. memory Para aumentar este limite hasta 1.5 Gbytes, puede editar el parametro SHMBASE del fichero $INFORMIXDIR/etc/onconfig y asignarle el valor:SHMBASE=0x41000000L Se rebasa el limite de 768 MB de shared memory de modo que no podemos usar toda la RAM necesaria Configure los parmetros del kernel editando el fichero /etc/sysctl.conf y aadiendo:# kernel.sem = semmsl, semmns, semopm, semmni kernel.sem=250 32000 128 4096 kernel.shmmni = 4096 kernel.shmall = 4398046511104 kernel.shmmax = 4398046511104shmmax it is not the maximum amount of memory which can be allocated, it is the maximum size of any shared memory chunk. shmmax is how big a bite you want per bite from free memory. The