Archive for agosto 2011

Como extender a memória usada pelo Oracle

Segue a baixo os passos que segui para realizar a tarefa.
Qualquer dúvida, favor utilizar os links das fontes as quais explicam tudo que é necessário para a tarefa.

Como usuário oracle:

Procure pelo SPFILE, já que o Oracle toda vez ao iniciar a instância, ele utilizará esse arquivo para coletar os dados dos parâmetros.

$ cd /opt/oracle/product/11gR2/db/dbs

Faça backup do init.ora e do spfile.ora

$ mkdir bkp
$ cp init.ora spfile.ora bkp

Agora vamos alterar algumas configurações do pfile, init.ora.
Como queremos disponibilizar mais memória para o segmento compartilhado, vamos para a parte interessante.
Veja a quantidade disponível como root:

# sysctl -a | grep shmmax

Já que temos 8 de ram, e queremos colocar 6g para o oracle usar, vamos começar a modificar o shmmax.

# umount /dev/shm2
# mount -t tmpfs shmfs -o size=6g /dev/shm@

Se por ventura precisar restartar o servidor ou tiver queda de energia, adicione ao fstab.

shmfs /dev/shm tmpfs size=6g 0 0
Salve, altere agora o /etc/sysctl.conf. Faça os calculos, 6*1024^3 e adicione.

kernel.shmmax = 6442450944
Pronto, reinicie o servidor e verifique se está tudo ok.

# df -h /dev/shm

Filesystem Size Used Avail Use% Mounted on
shmfs 6.0G 3.0G 3.1G 49% /dev/shm
# sysctl -a | grep shmmax

kernel.shmmax = 6442450944
Tudo ok, vamos para o banco…

Agora precisamos ajustar os 2 parâmetros do oracle… memory_max_target e memory_target!

Não sei o motivo (e também não pesquisei), mas ao colocar os 6gb para o oracle, o mesmo reclama.
Então só adicionei 5gb (5*1024^3), como pode ser visto:

$ cd /opt/oracle/product/11gR2/db/dbs
$ vim init.ora

*.memory_max_target=5368709120
*.memory_target=5368709120

Agora…

$ sqlplus /nolog
SQL> connect / as sysdba;
SQL> shutdown immediate;
SQL> startup force pfile=/opt/oracle/product/11gR2/db/dbs/init.ora nomount;

ORACLE instance started.

Database mounted.
Database opened.

Assim conseguimos montar e iniciar a instância, e criaremos agora o spfile a partir do novo pfile já configurado de forma correta.

SQL> create spfile from pfile;

File created.

Reinicie o oracle e verifique se está tudo ok, com os 5gb alocados.

SQL> show parameters memory_max_target
SQL> show parameters memory_target

Agora é botar o oracle para funcionar.
Essa modificação pode ser feito usando comandos direto no banco e usando pfile no lugar de spfile como descrito no link [1].

Fontes:

[1] http://oraclehack.blogspot.com/2010/07/memorymaxtarget-and-memorytarget.html
[2] http://kevinclosson.wordpress.com/2007/08/24/oracle11g-automatic-memory-management-part-ii-automatically-stupid/
[3] http://www.dba-oracle.com/t_ora_01102_cannot_mount_database_in_exclusive_mode.htm
[4] http://www.orafaq.com/forum/t/40030/0/
[5] http://www.dba-oracle.com/concepts/starting_database.htm
[6] http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/appc_linux.htm
[7] http://www.oracle-base.com/articles/linux/LargeSGAOnLinux.php
[8] http://www.dicas-l.com.br/arquivo/semaforos_kernel_memoria_compartilhada_e_cia.php
[9] http://book.chinaunix.net/special/ebook/SLES9Administrators_Handbook/067232735X/ch07lev1sec4.html
[10] http://www.softpanorama.org/Commercial_linuxes/Performance_tuning/semaphore_and_shared_segment_kernel_parameters.shtml
[11] http://ocw.novell.com/suse-linux-enteprise-operating-system-migration/migrating-to-suse-linux-enterprise-server-9/3019_10_manual.pdf
[12] http://www.orafaq.com/wiki/Memory_target
[13] http://www.dba-oracle.com/sf_ora_27101_shared_memory_realm_does_not_exist.htm
[14] http://www.orafaq.com/forum/t/40030/0/

Balanceamento de 2 links no Endian Firewall

Instalei um firewall usando Endian, onde o mesmo tinha 2 links de acesso a internet.

Configure a interface que será o link principal, depois vá em:

Rede > Interfaces

E configure o outro link, normalmente.

O de 2mb, adicione apenas os serviços como e-mail e site.
E o outro de 20MB para acesso da rede local da seguinte forma:

Rede > Routing > Policy Routing e criei as regras.

Tudo que for da Lan, vá para o Link de 20mb.
Tudo que for da DMZ, vá para o Link de 2mb.

O problema apresentado foi, que o link de 20mb está saindo apenas com 2mb.
E analisando a saída de tráfego, é como se o link de 20mb estivesse saindo pela interface de 2mb, no caso a interface eth3, assim limitando a conexão.

Usando traceroute, route, ip route e iptables, para verificar se o Endian estava tratando corretamente as rotas, ficou evidente que ele não estava especificando as metricas das routas e nem mostrava o gateway do segundo link.

Para resolver esta questão, foi preciso logar como root via ssh e executar:

# route del default
# ip route add default equalize scope global nexthop via IP_LINK1 dev IF_LINK1 weight 1 nexthop via IP_LINK2 dev IF_LINK2 weight 1

Adicione no arquivo /var/efw/inithooks/start.local estes 2 comandos, espere alguns minutos após a execução destes comandos e verifique se está tudo ok.

Assim finalizo a série de posts sobre o Endian Firewall.

Fontes:

http://efwsupport.com/index.php?topic=854.0
http://www.efwsupport.com/index.php?topic=54.0
http://bugs.endian.com/view.php?id=2816
http://bugs.endian.com/view.php?id=1132
http://bugs.endian.com/view.php?id=444

Compilação no Endian.

A mais ou menos 9 meses, tive uma tarefa muito interessante de realizar.

Precisei configurar um Endian na versão 2.4.0, em uma máquina com 3 placas de rede, onde duas tinha chips da Agere Systems e outra era onboard.

As placas com chipset: Agere Systems ET-131x PCI-E Ethernet Controller, não tem suporte no endian, foi necessário compilar o driver específico para a mesma. Os procedimentos abaixo dão suporte necessário para fazer a compilação do driver.

Dar acesso a internet ao Endian:

# route add default gw 192.168.0.100
# echo “nameserver 192.168.0.251” > /etc/resolv.conf

Atualizar o Endian e mudar de repositório:

# efw-upgrade
# efw-upgrade -s

Escolha development, digite seu e-mail. Reboot!

Agora utilizando o smart para instalar o kernel-PAE, já que não consegui achar o kernel padrão para desenvolvimento.
O kernel PAE dá suporte a mais de 4GB de ram, de acordo com informações encontradas na internet.

# smart install kernel-PAE

Após executar este comando, ele irá remover o kernel padrão e algumas dependências e instalar o kernel PAE e as dependências necessárias, que são iguais a do kernel padrão.

Reboot!

Se iniciou normalmente, agora, faça um upgrade usando o efw-upgrade ou smart upgrade.
Agora vamos iniciar o processo de instalação dos pacotes necessários para compilação do driver.

Primeiro, baixar os pacotes/fontes do Endian 2.4 Community.

Vamos instalar alguns pacotes para nos ajudar nessa tarefa:

# rpm -Uvh http://archives.fedoraproject.org/pub/archive/fedora/linux/core/3/i386/os/Fedora/RPMS/info-4.7-5.i386.rpm
# rpm -Uvh http://archives.fedoraproject.org/pub/archive/fedora/linux/core/3/i386/os/Fedora/RPMS/wget-1.9.1-17.i386.rpm

Agora vamos baixar e descompactar os pacotes para permitir a compilação do driver:

# wget http://sourceforge.net/projects/efw/files/Development/EFW-2.4-RESPIN/EFW-COMMUNITY-2.4-devel-srpms.tar.gz/download
# tar -xvzf EFW-COMMUNITY-2.4-devel-srpms.tar.gz

Instalamos os pacotes necessários para a compilação:

# cd EFW-COMMUNITY-2.4-201006071652/RPMS/
# rpm -Uvh binutils-2.15.92.0.2-25.endian2.i586.rpm glibc-kernheaders-2.4-9.1.103.EL.endian1.i586.rpm patch-2.5.4-20.endian0.i586.rpm glibc-headers-2.3.4-2.41.endian8.i386.rpm glibc-extras-2.3.4-2.41.endian8.i386.rpm glibc-devel-2.3.4-2.41.endian8.i386.rpm libgomp-4.1.2-14.endian1.i586.rpm gcc4-4.1.2-14.endian1.i586.rpm make-3.81-3.endian0.i586.rpm cpp-3.4.6-10.endian8.i586.rpm autoconf-2.59-7.endian0.noarch.rpm automake-1.9.5-0.endian0.noarch.rpm m4-1.4.3-0.endian0.i386.rpm rpm-build-4.4.2.3-9.endian3.i586.rpm libstdc++-devel-3.4.6-10.endian8.i586.rpm

OBS.: A instalação do rpmbuild é apenas para manter a compatibilidade com o Endian, caso você queria gerar um .rpm do driver se o mesmo estiver conforme as exigências para criação do .rpm.

Criamos um link do gcc apontando para o gcc4:

# ln -s /usr/bin/gcc4 /usr/bin/gcc

Agora vamos trabalhar a compilação do driver, primeiro baixando o driver direto do sourceforge:

# wget -c http://sourceforge.net/projects/et131x/files/et131x-1.2.3-3%20Source/et131x/et131x-1.2.3-3.tar.gz/download

Descompactar e compilar o driver:

# tar -xvzf et131x-1.2.3-3.tar.gz
# cd et131x-1.2.3-3/
# make

Caso não apresente nenhum erro durante a compilação, instale o módulo no sistema:

# make modules_install

Carregue o módulo no sistema:

# gzip et131x.ko
# cp et131x.ko.gz /lib/modules/2.6.27.19-72.e25PAE/kernel/drivers/net/
# gunzip et131x.ko.gz
# insmod et131x.ko

Verifique com o comando dmesg e veja se driver foi carregado:

# dmesg

et131x: module license ‘BSD’ taints kernel.
10/100/1000 Base-T Ethernet Driver for the ET1310, v1.2.3 01/31/2006 15:40:00 by Agere Systems, http://www.agere.com
et131x 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
et131x 0000:01:00.0: setting latency timer to 64
# ifconfig eth1 up
# ifconfig eth2 up

Pronto! O dispositivo já devem aparecer na interface web!

OBS.: Caso você tenha realizado uma atualização e tenha apresentado problemas. Reinstale a versão 2.4.0 e não faça nenhuma atualização e realize os passos abaixo.

Faça o download dos pacotes chkconfig-1.3.11.2-1.i586.rpm initscripts-2.4.2-0.endian12.i586.rpm ipac-ng-1.33-2.endian7.i586.rpm iptables-1.4.8-1.endian16.i586.rpm, no site, http://updates.endian.org/stable/pool/ coloque seu e-mail e a senha community.

Depois execute os comandos a seguir:

# cd pacotes
# rpm -Uvh chkconfig-1.3.11.2-1.i586.rpm initscripts-2.4.2-0.endian12.i586.rpm ipac-ng-1.33-2.endian7.i586.rpm iptables-1.4.8-1.endian16.i586.rpm
# reboot

# cd EFW-COMMUNITY-2.4-201006071652/RPMS/
# rpm -e –nodeps kernel kernel-modem-drivers-2.4-15_2.6.27.19_72.e25.i586 kernel-module-openswan-2.6.24-4.endian9_2.6.27.19_72.e25.i586 kernel-module-r8168-8.016.00-3.endian4_2.6.27.19_72.e25.i586
# rpm -Uvh kernel-PAE-2.6.27.19-72.e25.i686.rpm kernel-PAE-devel-2.6.27.19-72.e25.i686.rpm kernel-modem-drivers-PAE-2.4-15_2.6.27.19_72.e25.i586.rpm kernel-module-openswan-PAE-2.6.24-4.endian9_2.6.27.19_72.e25.i586.rpm kernel-module-r8168-PAE-8.016.00-3.endian4_2.6.27.19_72.e25.i586.rpm
# reboot

Agora siga os passos iniciais para compilar o driver.

O log do firewall não estava funcionando.

Foi preciso atualizar o ulogd pra versão: ulogd-2.0.0-0.endian9.i586.rpm

Agora evite atualizações, pois você terá problemas com sua placa de rede e compatibilidade no sistema.

Dica, só compre placas que são suportadas pelo sistema.

Os Links utilizados como solução para a compilação do driver, foram:

http://blog.luizagostinho.com/?p=596
http://blog.luizagostinho.com/?p=733
http://efwsupport.com/index.php?topic=610
http://efwsupport.com/index.php?topic=1155.0
http://efwsupport.com/index.php?topic=1988.0
http://www.efwsupport.com/index.php?topic=628.0

Você pode ver essa solução no link:

http://endian.eth0.com.br/topic/placa-de-rede-com-chipset-agere-system#post-3317

Recomendo frequentar o fórum endian.eth0.com.br.