IBM IDS Guia de Instalação - Aprenda a instalar o banco de dados IBM Informix Dynamic Server - Parte 04
Veja nesta quarta etapa arquivos para conectividade, Configuração de múltiplos portes, como configurar arquivos de segurança de rede, o servidor de banco de dados e como configurar o arquivo sqlhosts.
IBM IDS Guia de Instalação
Aprenda a instalar o banco de dados IBM Informix Dynamic Server
Parte 04
Arquivos para Conectividade
Os arquivos de conectividade contém informações que permitem a comunicação entre o cliente e o servidor. Estes arquivos permitem também que o servidor de banco de dados comunique-se com outros servidores de banco de dados. Quando o servidor de banco de dados é configurado para usar protocolos de rede TCP/IP, as informações contidas em /etc/hosts e /etc/services são usadas para que seja preparado o arquivo $INFORMIXDIR/etc/sqlhosts. O arquivo /etc/hosts (Ler Nota 6), contém uma entrada para cada adaptador de rede do servidor de banco de dados contendo as informações. O arquivo $INFORMIXDIR/etc/sqlhosts Listagem 9, contém uma entrada para cada serviço disponível do protocolo TCP/IP e contém as seguintes informações. O nome do serviço e o numero do porte são arbitrários, contudo eles devem ser únicos no contexto do arquivo e devem ser iguais entre os servidores disponíveis no contexto servidores de banco de dados.
Nota 6. Formato do arquivo /etc/hosts.
IP address host name host alias(es)
10.12.0.10 my_host1 my_alias1.company.com.br
10.12.0.11 my_host1 my_alias2
10.12.0.12 my_host1
10.12.0.13 my_host1
10.12.0.14 my_host2
hostname pode conter até o limite 256 caracteres
Nota 7. Formato do arquivo etc/services.
service name port number and protocol aliases(optional)
my_instance1 10001/tcp
service name pode conter até o limite de 128 caracteres
o sistema operacional restringe o uso de portes de comunicação menores que o valo de 1024, portanto apenas use números de portes de comunicação superiores a 1024, para evitar conflitos.
TCP/IP poderão ser usados em ambos os casos onde, a aplicação e o servidor de banco de dados residirem ou não no mesmo servidor físico. Podemos definir o método de comunicação entre aplicação e o banco de dados, usando-se parâmetros de configuração e variáveis de ambiente. Quando este método é selecionado, existem outros arquivos que devem ser configurados tais como o arquivo de serviços /etc/services exemplificado na listagem 7 e o arquivo de hosts /etc/hosts exemplificado na listagem 8 sendo que, cada entrada neste arquivo, representa um computador de sua rede. O arquivo contém o endereço IP do próprio servidor de banco de dados, o nome deste servidor e como valor opcional um apelido, conhecido como alias, podendo este campo ser um domínio ou apenas um nome que define um servidor.
Listagem 7. Verificando as entradas do arquivo de configuração em /etc/services, para serviços do Informix.
$ grep 1000 /etc/services
my_instance1 10001/tcp # Informix service1
my_instance2 10002/tcp # Informix service2
my_instance3 10003/tcp # Informix service3
my_instance4 10004/tcp # Informix service4
my_instance5 10005/tcp # Informix service5
Listagem 8. Criando um arquivo de configuração em /etc/hosts, para servidores do Informix
$ vi /etc/hosts # Abre o arquivo /etc/hosts em modo de edição
………………………………………
10.12.0.10 my_host1 my_alias1.company.com.br
10.12.0.11 my_host2 my_alias2
10.12.0.12 my_host3
10.12.0.13 my_host4
Configuração de múltiplos portes
Em se possuindo vários adaptadores de rede no servidor, poderemos definir diferentes portes para um mesmo servidor de banco de dados onde, será necessária uma configuração múltipla no arquivo de serviços /etc/services e como conseqüência múltiplas entradas nos arquivos /etc/hosts e $INFORMIXDIR/etc/sqlhosts. No arquivo de configuração onconfig poderá ser utilizada uma das entradas para o parâmetro DBSERVERNAME e outra para o parâmetro DBSERVERALIASES. Aplicações poderão utilizar-se dos nomes definidos no arquivo de configuração comunicando-se por vias distintas providas pelos múltiplos adaptadores de rede.
Usando-se vários adaptadores de rede, poderemos criar um complexo método de comunicação entre a aplicação e o servidor de banco de dados, pois, imagine um servidor com dois adaptadores de rede com seus respectivos endereços IP (Ler Nota 8). Com dois adaptadores de rede ver listagens 9, 10 e 11, é necessário que precisemos descriminar todos os endereços IP no arquivo /etc/hosts. E no arquivo $INFORMIXDIR/etc/sqlhosts colocamos um metacaracter ‘*’ (asteristico) como código determinante de endereço IP na terceira posição, fazendo com que o servidor procure por todos os possíveis endereços IP que possam comunicar-se com o porte especificado, através de chamadas de sistema, quando o sistema operacional estiver em pleno funcionamento, o servidor de banco de dados deverá utilizar-se apenas dos protocolos TCP/IP para esta finalidade onde, uma das entradas será necessária para prover a conexão.
Nota 8. Arquivo /etc/hosts de um servidor com dois adaptadores de rede.
Placa_rede endereço IP nome_servidor
adaptador1 10.12.0.10 my_server
adaptador2 10.12.0.11 my_server2
Se a aplicação e o servidor de banco de dados compartilharem das informações do arquivo $INFORMIXDIR/etc/sqlhosts, poderá ser especificado ambos coringa (*) ou o endereço IP. A aplicação ignora o coringa (*) e usa o nome de servidor ou seu endereço IP para criar uma conexão e, o banco de dados usa o coringa (*) para aceitar as conexões provenientes do endereço IP requisitante. O coringa (*) permite que a thread de conexão (soc, tli) aguarde por uma conexão de um cliente usando o mesmo serviço relacionado ao adaptador de rede existente no arquivo $INFORMIXDIR/etc/sqlhosts. Desta forma, existe um custo maior de CPU quando esta aguarda conexões provenientes de múltiplos endereços IP do que gastaria para aguardar conexões de um único servidor ou de um único endereço IP.
Listagem 9. Configuração do arquivo $INFORMIXDIR/etc/sqlhosts com dois adaptadores de rede
$ cat $INFORMIXDIR/etc/sqlhosts
DBSERVERNAME nettype hostname servicename options
my_server ontlitcp *my_server my_service
my_server ontlitcp *10.12.0.10 my_service
my_server_alias ontlitcp *my_server1 my_service
my_server_alias ontlitcp *10.12.0.11 my_service
Listagem 10. Configuração do arquivo /etc/services com dois adaptadores de rede
my_instance1 10001/tcp # Informix service1
my_instance2 10002/tcp # Informix service2
Listagem 11. Configuração do arquivo $INFORMIXDIR/etc/onconfig com dois adaptadores de rede
DBSERVERNAME my_server # Name of default database server
DBSERVERALIASES my_server_alias # List of alternate DBSERVERNAME
Figura 2. Conexões provenientes de clientes distintos a um servidor com dois adaptadores de rede
Figura2. Demonstra dois clientes efetuando conexões a um banco de dados que possui dois adaptadores de rede.
Configurando arquivos de segurança de rede
IBM IDS segue padrões de segurança baseados na informação de segurança de rede. Para uma aplicação conectar-se ao servidor de banco de dados, o usuário precisa ter um ID válido no servidor remoto. O arquivo /etc/hosts.equiv contém os servidores remotos e usuários confiáveis pelo servidor de banco de dados, os quais podem se conectar sem o uso de senha Listagem 12. O sistema operacional usa este arquivo para determinar se o solicitante é ou não confiável. O arquivo $HOME/.rhosts pode ser usado para específicos usuários de computadores confiáveis ao invés de utilização genérica. Para se testar a confiabilidade entre os sistemas envolvidos, verifique a listagem 13.
Listagem 12. Saída do comando de verificação do arquivo /etc/hosts.equiv.
$ grep my_server /etc/hosts.equiv
……
my_server1
my_server2
my_server3
……
Listagem 13. Demonstra um teste de conexão entre servidores confiáveis.
my_server /home/my_account $ rlogin my_server1
my_server1 /home/my_account1 $
O usuário cliente deverá estar listado no arquivo /etc/passwd para que este tenha condições de efetuar a conexão no servidor de banco de dados. Alguns sistemas operacionais possuem um arquivo chamado de /etc/shadow que é usado como cópia de segurança do arquivo de senhas /etc/passwd. O arquivo .netrc é também utilizado para conexões remotas e é composto por nomes de maquinas, nomes de usuários e senhas de acesso, o qual necessita de administração no caso de alteração de configuração de algum de seus campos. Se o seu sistema utiliza NIS (Produto SUN Microsystems), que permite a propagação de arquivos de rede para outros computadores deve ser verificado seu funcionamento e como administrá-lo para evitar problemas de conexão causados pela manutenção dos arquivos /etc/hosts e /etc/services, garantindo-se que as alterações sejam efetuadas no servidor NIS (master) e, a partir dai seja propagada para os servidores secundários (slaves).
Se a aplicação de cliente e o servidor de banco de dados residirem em diferentes maquinas, o arquivo $INFORMIXDIR/etc/sqlhosts deverá estar definido nos dois ambientes com as mesmas informações. Pois, esta informação é requerida pelo servidor de banco de dados para processos iniciais.
Configurando o arquivo sqlhosts
Este arquivo é de suma importância para a utilização do servidor de banco de dados IBM IDS. Contém informações necessárias para que aplicações e ferramentas possam se conectar ao servidor de banco de dados. Sendo que para cada um servidor definido na rede, deveremos ter uma entrada nos moldes do arquivo conforme listagem 16. Este arquivo encontra-se no diretório $INFORMIXDIR/etc, porém podemos colocá-lo em um local diferente do padrão para tanto basta alterar sua localização e informar através da variável de ambiente INFORMIXSQLHOSTS Listagem 14. Algumas instalações necessitam que seja configurado o quinto campo do arquivo sqlhosts, (Ler Nota 10) para conhecer as opções e configurações para este campo.
Listagem 14. Exemplo de localização do arquivo sqlhosts diferente do padrão.
$ export INFORMIXSQLHOSTS=/my_directory/my_sqlhosts.my_server
Configurando o servidor de banco de dados
Os parâmetros de configuração estão armazenados no arquivo $INFORMIXDIR/etc/ONCONFIG, conforme demonstrado na Listagem 15 que é uma réplica do arquivo de configuração, contudo ao ser instalado o produto, será gerado um arquivo padrão em $INFORMIXDIR/etc/ONCONFIG.std que contém valores iniciais de configuração recomenda-se que este arquivo seja duplicado para que o novo arquivo contenha as alterações a serem efetuadas referentes ao novo servidor. O nome do arquivo de configuração do IBM IDS será conhecido pelo ambiente pela variável ONCONFIG, (Ler Nota 5). O novo nome pode representar uma definição do sistema a ser criado, uma boa dica é que se use o nome do arquivo juntamente com o nome do servidor (onconfig.my_server). Ao editar-se este arquivo por meio de um editor comum do sistema operacional, mantendo-se as configurações padrões e alterando-se os valores a serem definidos para um novo servidor de banco de dados. O utilitário onmonitor pode também ser usado como uma ferramenta de edição deste arquivo (Ler Nota 9). Tenha em mente que, alterações pertinentes ao ambiente deste arquivo só terão validade após uma nova reinicialização do servidor. Portanto, quaisquer parâmetros de cunho estrutural, somente terão validade após o servidor de banco de dados ser parado e depois reinicializado, para outros parâmetros dinâmicos, a parada não será necessária, ver listagem 2.
Nota 9. Tela de utilização do utilitário onmonitor.
Dynamic Server: Status Parameters Dbspaces Mode Force-Ckpt Archive ...
Status menu to view Dynamic Server.
-----------------------------On-Line------- Press CTRL-W for Help. --------
Listagem 15. Arquivo de configuração onconfig.
$ onstat -c
IBM Informix Dynamic Server Version 9.40.UC6 -- On-Line -- Up 84 days 02:10:25 -- 416768 Kbytes
Configuration File: /informix/INF940/etc/onconfig.myserver
# Root Dbspace Configuration
ROOTNAME rootdbs # Root dbspace name
ROOTPATH /dev/ifmx-raw-001
# Path for device containing root dbspace
ROOTOFFSET 0 # Offset of root dbspace into device (Kbytes)
ROOTSIZE 32768 # Size of root dbspace (Kbytes)
# Disk Mirroring Configuration Parameters
MIRROR 0 # Mirroring flag (Yes = 1, No = 0)
MIRRORPATH # Path for device containing mirrored root
MIRROROFFSET 0 # Offset into mirrored device (Kbytes)
# Physical Log Configuration
PHYSDBS phy_myserver # Location (dbspace) of physical log
PHYSFILE 32662 # Physical log file size (Kbytes)
# Logical Log Configuration
LOGFILES 10 # Number of logical log files
LOGSIZE 22926 # Logical log size (Kbytes)
# Diagnostics
MSGPATH /informix/online.log
# System message log file path
CONSOLE /dev/console # System console message path
ALARMPROGRAM /informix/alarm.ksh
# Alarm program path
SYSALARMPROGRAM /informix/etc/evidence.sh
# System Alarm program path
TBLSPACE_STATS 1
# System Archive Tape Device
TAPEDEV /informix/tapedev
TAPEBLK 16 # Tape block size (Kbytes)
TAPESIZE 2048000 # Max amount of data to put on log tape (Kbytes)
# Log Archive Tape Device
LTAPEDEV /informix/ltapedev
LTAPEBLK 16 # Log tape block size (Kbytes)
LTAPESIZE 2048000 # Max amount of data to put on log tape (Kbytes)
# Optical
STAGEBLOB # Informix Dynamic Server/Optical staging area
# System Configuration
SERVERNUM 1 # Unique id corresponding to a Dynamic Server instance
DBSERVERNAME my_server # Name of default database server
DBSERVERALIASES my_server_alias # List of alternate DBSERVERNAMEs
NETTYPE soctcp,1,50,NET # Configure poll thread(s) for nettype
NETTYPE ipcshm,1,50,CPU # Configure poll thread(s) for nettype
NETTYPE tlitcp,1,50,CPU # Configure poll thread(s) for nettype
DEADLOCK_TIMEOUT 60 # Max time to wait of lock in distributed env.
RESIDENT 0 # Forced residency flag (Yes = 1, No = 0)
VPCLASS cpu,num=2 # Number of user (cpu) vps
VPCLASS AIO,num=1 # Number of IO vps
MULTIPROCESSOR 1 # 0 for single-processor, 1 for multi-processor
SINGLE_CPU_VP 0 # If non-zero, limit number of cpu vps to one
# Shared Memory Parameters
LOCKS 50000 # Maximum number of locks
BUFFERS 30000 # Maximum number of shared buffers
PHYSBUFF 32 # Physical log buffer size (Kbytes)
LOGBUFF 32 # Logical log buffer size (Kbytes)
LOGSMAX 20 # Maximum number of logical log files
CLEANERS 6 # Number of buffer cleaner processes
SHMBASE 0xa000000 # Shared memory base address
SHMVIRTSIZE 65536 # initial virtual shared memory segment size
SHMADD 65536 # Size of new shared memory segments (Kbytes)
SHMTOTAL 629144 # Total shared memory (Kbytes). 0=>unlimited
CKPTINTVL 300 # Check point interval (in sec)
LRUS 12 # Number of LRU queues
LRU_MAX_DIRTY 60 # LRU percent dirty begin cleaning limit
LRU_MIN_DIRTY 50 # LRU percent dirty end cleaning limit
LTXHWM 45 # Long transaction high water mark percentage
LTXEHWM 50 # Long transaction high water mark (exclusive)
TXTIMEOUT 0x12c # Transaction timeout (in sec)
STACKSIZE 32 # Stack size (Kbytes)
# Recovery Variables
# OFF_RECVRY_THREADS:
# Number of parallel worker threads during fast recovery or an offline restore.
# ON_RECVRY_THREADS:
# Number of parallel worker threads during an online restore.
OFF_RECVRY_THREADS 10 # Default number of offline worker threads
ON_RECVRY_THREADS 1 # Default number of online worker threads
# Data Replication Variables
# DRAUTO: 0 manual, 1 retain type, 2 reverse type
DRAUTO 0 # DR automatic switchover
DRINTERVAL 30 # DR max time between DR buffer flushes (in sec)
DRTIMEOUT 30 # DR network timeout (in sec)
DRLOSTFOUND /informix/INF940/etc/dr.lostfound # DR lost+found file path
# Read Ahead Variables
RA_PAGES 10 # Number of pages to attempt to read ahead
RA_THRESHOLD 5 # Number of pages left before next group
# DBSPACETEMP:
# Dynamic Server equivalent of DBTEMP for SE. This is the list of dbspaces
# that the Dynamic Server SQL Engine will use to create temp tables etc.
# If specified it must be a colon separated list of dbspaces that exist
# when the Dynamic Server system is brought online. If not specified, or if
# all dbspaces specified are invalid, various ad hoc queries will create
# temporary files in /tmp instead.
DBSPACETEMP my_temp_space, my_temp_space1 # Default temp dbspaces
# DUMP*:
# The following parameters control the type of diagnostics information which
# is preserved when an unanticipated error condition (assertion failure) occurs
# during Dynamic Server operations.
# For DUMPSHMEM, DUMPGCORE and DUMPCORE 1 means Yes, 0 means No.
DUMPDIR /informix/dump
# Preserve diagnostics in this directory
DUMPSHMEM 1 # Dump a copy of shared memory
DUMPGCORE 0 # Dump a core image using 'gcore'
DUMPCORE 0 # Dump a core image (Warning:this aborts Dynamic Server)
DUMPCNT 1 # Number of shared memory or gcore dumps for
# a single user's session
AFCRASH 0x21
AFFAIL 0x21
AFWARN 0x21
AFLINES 0
FILLFACTOR 90 # Fill factor for building indexes
# method for Dynamic Server to use when determining current time
USEOSTIME 0 # 0: use internal time(fast), 1: get time from OS(slow)
# Parallel Database Queries (pdq)
MAX_PDQPRIORITY 100 # Maximum allowed pdqpriority
DS_MAX_QUERIES # Maximum number of decision support queries
DS_TOTAL_MEMORY # Decision support memory (Kbytes)
DS_MAX_SCANS 1048576 # Maximum number of decision support scans
DATASKIP off # List of dbspaces to skip
# OPTCOMPIND
# 0 => Nested loop joins will be preferred (where
# possible) over sortmerge joins and hash joins.
# 1 => If the transaction isolation mode is not
# "repeatable read", optimizer behaves as in (2)
# below. Otherwise it behaves as in (0) above.
# 2 => Use costs regardless of the transaction isolation
# mode. Nested loop joins are not necessarily
# preferred. Optimizer bases its decision purely
# on costs.
OPTCOMPIND 0 # To hint the optimizer
ONDBSPACEDOWN 2 # Dbspace down option: 0 = CONTINUE, 1 = ABORT, 2 = WAIT
LBU_PRESERVE 1 # Preserve last log for log backup
OPCACHEMAX 0 # Maximum optical cache size (Kbytes)
# HETERO_COMMIT (Gateway participation in distributed transactions)
# 1 => Heterogeneous Commit is enabled
# 0 (or any other value) => Heterogeneous Commit is disabled
HETERO_COMMIT 0
# Optimization goal: -1 = ALL_ROWS(Default), 0 = FIRST_ROWS
OPT_GOAL -1
# Optimizer DIRECTIVES ON (1/Default) or OFF (0)
DIRECTIVES 1



