Apache – Módulos presentes no OHS

Apache

O apache é um velho conhecido como servidor de paginas html. A oracle adicional ele ao aplication server – OAS a partir da versao 9i e então o batizou de OHS. Isso porque, o apache permite adicionar módulos para que com isso ele possa não somente hospedar paginas em html, mas paginas com conteudo dinamico, e muitas outas funcionalidades. São exemplos de módulos presentes no OHS – Oracle Http Server (bacana não?).

Pagina do Apache: http://www.apache.org/docs/mod/index.html

mod_dms: Monitorar o performance de sites com o oracle DMS – dinamyc monitoring service.
mod_oc4j: Envia as requisicoes do Oracle HTTP Server para Oracle Application Server Containers for J2EE (OC4J).
mod_php: Oracle Application Server 10g suporta PHP na sua versão 4.3 (php-4.3.4).
mod_oradav: Esse é legal. Imagina voce em casa pode baixar os documentos do word e salva-los na pasta do servidor, isso tudo usando o plugin do browser que reconhece um arquivo do word no ato da sua abertura pelo link, e depois é só salva-lo normalmente que este arquivo estará salvo no servidor. Muito legal, usado pelo oracle Portal para publicacao de conteudo. Bom pelo menos deveria mas o povo nao conhece essa funcionalidade e nao tira proveito. Pena.
mod_ossl: Habilita criptografia no Oracle HTTP Server
mod_osso: Faz o controle de login unico chamado de single sign on, ou SSO.
mod_plsql: Aplicacoes desenvolvidas em PLSQL podem ser acessadas através do Oracle HTTP Server para um PL/SQL Gateway.
mod_security: É uma engine que serve de escudo para proteger aplicacoes web.

Entendendo semaforos, número máximo de arquivos manipulado pelo usuário..

A memória compartilhada e os semáforos são dois itens importantes, sem eles a instancia nao inicia e em consequencia o banco de dados nao abrirá.

Memória compartilhada

Assim: Memória compartilhada como o nome mesmo diz, é o local de memória onde ela pode ser compartilhada entre diferentes processos. O oracle utiliza essa area de memoria para a implementar a SGA (System Global Area), da qual precisa estar visivel para todas as sessoes de banco de dados. Por isso as vezes o administrador apesar de ter memória disponivel nao consegue alocar uma SGA maior, necessita configurar os parametros de memoria para que a SGA vá até estes limites impostos pelo sistema operacional.

Um erro comum por exemplo no banco postgree por falta de memroia compartilhada é:

  Out of Memory: Killed process 12345 (postmaster).

A partir do kernel 2.6, opadrão é que não haja “sobre-utilização”. Caso esteja desativado, pode ser implementado selecionando um modo restrito de sobre-utilização através do sysctl:

  [root]# sysctl -w vm.overcommit_memory=2

Aproveitando o espaço, e como estava com as definições em mãos, segue descritivo referencia para facilitar a configuração (quando necessário) desses parâmetros:

SHMMAX

Tamanho máximo de um segmento de memória compartilhada (bytes). 250 kB + 8.2 kB * shared_buffers + 14.2 kB * max_connections até o infinito.

SHMMIN

Tamanho mínimo de um segmento de memória compartilhada (bytes). Padrão 1.

SHMALL

Quantidade total de memória compartilhada disponível (bytes ou páginas)

SHMSEG

Número máximo de segmentos de memória compartilhada por processo. Somente 1 segmento é necessário, mas o padrão é muito maior.

SHMMNI

Número máximo de segmentos de memória compartilhada para todo o sistema.

Semáforos

Os semáforos sao sinais que podem estar ligados ou desligados indicando que este processo ainda nao finalizou sua tarefa. Veja, os semaforos existem para que nao sejam sobrepostas as operações executadas pelos processos. Imagina a copia em paralelo de um arquivo do arquivo do word se os dois ao mesmo tempo serem gravados no mesmo local com mesmo nome o que ocorrerá ? Existe ai um conflito para utilizacao do nome do arquivo, do espaço em disco, portanto um semaforo resolveria essa questao sinalizando um processo para que ele aguarde ate que o outro termine a sua operação. Um processo pode ter uma sinalização de ligado ou desligado, isso na verdade servirá como uma forma de controle de eventos e processos para que a SGA do Oracle consiga controlar toda a concorrencia de escrita e leitura na memoria compartilhada.

Verificação de instalação:

Inicie sua jornada usando o comando abaixo:

[root]# ipcs -la
----- Limites da memória compartilhada ----------
número máximo de segmentos: 4096
tamanho máximo do segmento (Kb): 2097152
memória compartilhada total máxima (Kb): 8388608
tamanho mínimo do segmento (bytes): 1

------ Limites de semáforo ----------------------
número máximo de arrays: 100
máximo de semáforos por array: 100
máximo geral de semáforos do sistema: 32000
máximo de ops por chamada semop: 100
valor máximo de semáforo: 32767

------ Mensagens: limites -----------------------
número máximo geral de filas no sistema: 16
tamanho máximo da mensagem (bytes): 8192
tamanho máximo padrão da fila (bytes): 16384

Para o Oracle 10G, estes valores podem variar de acordo com release e versão:

echo 100 32000 100 100 > /proc/sys/kernel/sem

Depois confirme com o comando cat:

cat /proc/sys/kernel/sem

Precisamos também aumentar o numero máximo de arquivos manipulados pelo usuário, para 131072:

echo 131072 > /proc/sys/fs/file-max
ulimit -n 131072

Aumentar as portas disponiveis no servidor:

echo 1024 65000 > /prco/sys/net/ipv4/ip_local_port_range

Aumentar o numero máximo de processos que podem ser controlados pelo usuario, para 16384.
com o ulimit -a voce consegue verificar como o seu sistema esta atualmente.

ulimit -u 16384

Alterar diretamente no parametro do kernel, veja essa mudanca nao é permanente.
echo 65536 > /proc/sys/fs/file-max

Essa agora sim, a cada boot é lido novamente o arquivo sysctl.conf, se quiser confira os demais parametros editando o arquivo sysctl.conf com o vi.

echo fs.file-max=65536 >> /etc/sysctl.conf

E depois o numero de processos controlados pelo usuario oracle no servidor.

Eu aconselho colocar esse comando no profile comum que fica em /etc/profile.sh ou no bash_profile do usuario. Outra dica é colocar no arquivo /etc/security/limits.conf

ficando assim:

oracle soft nofile 63536
oracle hard nofile 63536

Duas dicas interessantes:

NOTE: It is also possible to query the current usage of file handles using the following command:

# cat /proc/sys/fs/file-nr
1140 0 103062

In the above example output, here is an explanation of the three values from the file-nr command:

* Total number of allocated file handles.
* Total number of file handles currently being used.
* Maximum number of file handles that can be allocated. This is essentially the value of file-max – (see above).

NOTE: If you need to increase the value in /proc/sys/fs/file-max, then make sure that the ulimit is set properly. Usually for 2.4.20 it is set to unlimited. Verify the ulimit setting my issuing the ulimit command:

# ulimit
unlimited

Lembre-se o comportamento tanto da manipulação dos arquivos quanto dos processos pode ser diferente quanto ao metodo de login, portanto SSH, login via terminal poderão ter limites diferentes.

Confirme tudo com o comando

sysctl -p

ou ainda para confirmar os arquivos separadamente, ou seja nao precisa de boot:

sysctl -w fs.file-max=65536

Bom, de tudo eu li a informação no site do puschitz também, mas ta confuso visto que ele mexe no mesmo parametro duas vezes no mesmo arquivo /etc/security/limits.conf tanto para o numero de processos quanto para o numero de arquivos.
Veja em http://www.puschitz.com/TuningLinuxForOracle.shtml

Resumo – Execute os comandos como root:

echo “kernel.sem=250 32000 100 128” >> /etc/sysctl.conf

Instalação do OAS 10G R2 – Oracle Application Server

Instalação: Itens de verificação.
Temos que verificar alguns itens do sistema operacional seja linux ou windows, o espaço livre em disco e a memória como o quadro a seguir:


O importante é verificar que cada componente tem o seu consumo de memória mínimo. Não se pode esquecer a memória para ser usada pela interface gráfica do sistema operacional e demais processos de segundo plano. Portanto, antes de tudo 1 giga a mais sempre !

Outras verificações como CPU, Kernel, update do sistema:


# cat /proc/cpuinfo | grep -i name
model name : Intel(R) Pentium(R) 4 CPU 1.70GHz
# cat /etc/issue
Red Hat Enterprise Linux AS release 3 (Taroon Update 3)
Kernel r or an m

Você pode obter a versão do kernel através do comando abaixo:
# rpm –qa | grep kernel
kernel-2.4.21-20.EL
kernel-pcmcia-cs-3.1.31-13
kernel-utils-2.4-8.37.6


Verificar o espaço livre disponível:

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda7 14G 7.6G 5.3G 59% /
/dev/hda5 23M 6.0M 16M 28% /boot
none 502M 0 502M 0% /dev/shm
/dev/hda1 1004M 567M 438M 57% /mnt/cdrive
144.25.69.70:/vol/vol1/relbuilder/LNX/linux/ias
286G 260G 27G 91% /modules/stage/AS1012

Para obter o valor em MB
.

# df –m (to get values in MBs)
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/hda6 14384 5271 8383 39% /
none 502 0 501 0% /dev/shm
/dev/hda1 1004 696 308 70%

Precisamos também configurar as variaveis de ambiente:

TMP
DISPLAY
Já a variavel ORACLE_HOME e ORACLE_SID deverá ser removida durante a instalação podendo ser reconfigurada após o produto instalado.

ex:

export TMP=/tmp
export DISPLAY=localhost:0.0
unset ORACLE_SID
unset ORACLE_HOME

O arquivo hosts deverá ter o seu cabecalho original ou seja o texto que ja estava nele deverá ser conservado principalmente a linha que contêm a instrução localhost, porque o software do sistema operacional necessita dessa informação para roteamento interno dos processos no servidor.
Assim, adicione a linha contendo as informações sobre o IP e apelido da maquina:

192.168.10.1 myappsrv.mycompany.com myappsrv

As portas podem ser definidas no ato da instalação, se quiser alterar as portas neste momento é muito fácil. Basta procurar no CD de instalação, obviamente voce devera copiar o cd para o servidor né, e alterar as informações contidas no arquivo staticports.ini

DCM – Comandos dcmctl

Para usar o dcmctl teremos que incluir a pasta, ORACLE_HOME/dcm/bin na variavel PATH e com ele podemos:

  • dcmctl listcomponents – Lista os componentes da instancia.
  • dcmctl resyncinstance – Atualiza a informação da configuração a partir dos dados no repositorio
  • metadados.
  • dcmctl createcomponent -ct oc4j -co oc4j_novo – Cria uma instancia nova OC4J com o nome de oc4j_novo.

Podemos também, para fins de criação de novos scripts chamar o dcmctl a partir de um modo em lote.

dcmctl shell -f scriptdcm.dcm

Conteudo do arquivo scriptdcm.dcm:
createcomponent -ct oc4j -co oc4j_novo

DCM – Distributed Configuration Management

É uma framework que habilita o administrador a gerenciar todas as configurações dos servidores de aplicações da oracle.

Com o DCM podemos:

  • Gerenciar clusters e fazendas de instancias OAS.
  • Gerenciar a configuração de componentes individualmente, como o HTTP server, OC4J, o OPMN ou o JAAS.
  • Efetuar disponibilização de aplicações clusterizadas
  • Gerenciar versões de configurações

o DCM é implementada pelo processo DCM e tem duas interfaces:

  • Application Server Control para o cliente browser
  • Utilitario de linha de comando – dcmctl

O DCM ainda é associado a dois tipos de plug-ins:

  • Disponivel para clusterização – Clusterable: Para o Oracle HTTPServer, OC4J e OPMN
  • Não disponivel para clusterização – Nonclusterable: Para outros componentes do servidor de aplicação que nao estejam clusterizados.

O DCM contém um repositorio que pode ser armazenado em arquivos, ou no banco de dados de metadados. Logicamente, podemos fazer uma copia de seguranca de tempos em tempos em arquivos a partir do dcmctl. O acesso ao repositorio é sempre feito pelo dcmctl, onde a localização dos arquivos fica em: ORACLE_HOME/dcm/repository

Os arquivos do repositorio são descritos a seguir:

  • app.bom: Armazena os nomes e versões dos objetos disponibilizados na instancia.
  • conf.bom: Armazena nomes e versões das configurações dos objetos disponibilizados na instancia.
  • cluster.bom: Armazena informações sobre o cluster que a instancia pertence.
  • tp.bom: Armazena informações sobre a topologia da instancia.

Sequencia de interrupção do OAS

Interromper o application server control
emctl stop iasconsole

Para se obter uma lista dos componentes:
opmnctl status

Interromper os processos dos componentes separadamente, não interrompe o opmn.
opmnctl stopproc process-type=nomedocompoente

Interromper todos os processos dos componentes de uma vez incluindo o opmn.
opmnctl stopall

Ou ainda utilize ou customize o script que está presente na pasta ORACLE_HOME/bin
$ORACLE_HOME/bin/runstartupconsole.sh stop all

Os processos acima, devem ser repetidos na infra estrutura e em cada camada intermediaria – middle.

Interromper o banco de metadados
sqlplus /nolog
SQL> connect username/password as sysdba
SQL> shutdown immediate
SQL> exit

Interromper o listener
lsnrctl start

O Comando opmn

O opmnctl é um comando de linha para o OPMN. Utilize sempre o Application Server Control ou o comando de linha, opmn para iniciar e parar os processos do OAS.

Exemplos de comandos opmn:

  • opmnctl status – verificar o status de todos os componentes gerenciaveis.
  • opmnctl start – Inicia o processo do OPMN
  • opmnctl startall – Inicia o processo do OPMN e todos os componentes gerenciaveis.
  • opmnctl stopall – Interrompe o processo do OPMN e todos os componentes gerenciaveis.
  • opmnctl startproc proces-type=HTTP_Server – Inicia um componente, neste caso o HttpServer.

O opmn se encontra na pasta ORACLE_HOME/opmn/bin lembre-se de adicionar este caminho a sua variavel de ambiente PATH.

export PATH=$PATH:$ORACLE_HOME/opmn/bin

opmn – Oracle Process Manager and Notification Server

O OPMN é um gerenciador de processos que centraliza certas operações sobre os demais processos do servidor de aplicação. O OPMN gerencia todos os compontentes do servidor de aplicacao, com exceção do repositório de metadados.

O OPMN é composto por:

  1. Oracle Process Manager (PM) – é um mecanismo de gerenciamento centralizado.
  2. Oracle Notification Server (ONS) – É um mecanismo de transporte para as operações de falha, recuperação, inicilizacao e outras tarefas realicionadas com notificacoes no OAS.
  3. Módulos do PM – Implementa para o OAS processos de gerenciamento para componentes especificos

O PM usa o ONS para:

  • Detecta se o processo foi completado, foi inicializado e se está pronto para receber as requisições.
  • Determina quais sao as portas em uso.
  • Obter informações sobre um component especifico

Trocar a porta do Oracle Enterprise Manager 10G

Para alterar a porta do console, executamos os comandos:

  • cd $ORACLE_HOME/bin
  • ./emctl stop iasconsole
  • ./emctl config iasconsole 1810
  • ./emctl start iasconsole

Também é possivel, trocar as portas dos demais agentes de cada uma das instancias, isso se faz necessário em uma rede DMZ por exemplo em que o número e as portas são definidas claramente através de regras da corporação.

emctl utility

O utilitário que usamos para interromper o console de administração é o emctl.

  • emctl start iasconsole – Inicializar o console do application server control.
  • emctl stop iasconsole – Interromper o console do application server control.
  • emctl status iasconsole – Monitorar o status do console do application server control.

Para promover a segurança através de SSL, para o application server control, você deverá executar os seguintes comandos:

  • emctl stop iasconsole – Interromper o console do application server control.
  • emctl secure iasconsole – Aplicar segurança para o console do application server control.
  • emctl start iasconsole – Inicializar o console do application server control.

Agora o acesso somente será feito através de protocolo seguro: https

https://hostserver:1156/