Linux Bonding mode 3 e 6 em Oracle RAC 10g a 11g pode ocasionar problemas

Essa semana tive dois clientes com o mesmo problema, utilizando RAC 11g e um dos nodes caiu e não voltou mais, ssh ok, ping ok e tudo redondinho, menos um detalhe que não esperava assim de imediato, BONDING configurado nas maquinas.

De acordo com o Doc RAC and Oracle Clusterware Best Practices and Starter Kit (Linux) [ID 811306.1] e o Linux: ARP cache issues with Red Hat “balance-alb (mode 6)” bonding driver [ID 756259.1] do metalink o bond mode 3 (para a interconnect) e o mode 6 (para a interconnect e public) devem ser evitados.

Testes de modo 3 para a interconexão privada provou que duplica todos os pacotes UDP e os transmite em cada caminho. Isto aumenta a sobrecarga de CPU para o processamento de dados da interligação desse modo fazendo a interligação menos eficiente. Os pacotes UDP duplicadas causadas pelo mode 3 expôs o Bug 7238620 (ORA-600 [2032]) e o Bug 9081436 (GC CR REQUEST WAIT CAUSING SESSIONS TO WAIT). Embora os problemas conhecidos com o mode 3 são isoladas para a interconexão, está fora de cogitação o seu uso para a rede pública também devido a ineficiências com o mode 3 mencionado ateriormente.

Continue lendo →


Emular gráfico X do Linux no Windows

Estava vendo na lista de discussão do Oracle, e tiveram uma dúvida bem interessante, como abrir o X de um AIX/Linux para instalação remota.
Uma das opções interessantes sem precisar instalar nada no Server Linux é utilizar o putty + Xming X Server for Windows.
Irei mostrar passo a passo um pequeno case que fiz:

Primeiro temos que fazer o download do Xming X Server for Windows

sourceforge.net/projects/xming/

Continue lendo →


Timezone interfere no startup do dbconsole

Dia 18 de outubro de 2009 mudou o horario de verão e dia 21 de fevereiro de 2010 irá mudar novamente.
Com isso há uma troca de timezone de -03:00 para -02:00 e vice versa.

O Enterprise Manager Web se perde após esta troca, pois há configurações que indicão qual o timezone ele está trabalhando e tudo se altera e nada mais bate corretamente.

Pode ser visto desta forma:

[oracle@vmrstoever01 ~]$ date "+%z"
-0200
[oracle@vmrstoever01 ~]$ cat /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01/sysman/config/emd.properties | grep TZ
agentTZRegion=Etc/GMT+3

Esta já é uma forma de identificarmos o problema.

Outra é tentar iniciar o EM e ficar esperando e esperando para aparecer no final failed.

[oracle@vmrstoever01 ~]$ emctl start dbconsole
TZ set to Brazil/East
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.

vmrstoever01:1158/em/console/aboutApplication

Starting Oracle Enterprise Manager 10g Database Control ............................................................................................. failed.
------------------------------------------------------------------
Logs are generated in directory /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01/sysman/log
[oracle@vmrstoever01 ~]$ emctl start agent
TZ set to Brazil/East
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
Starting agent ................................. failed.

O que podemos fazer para resolver isso?
Recriar os arquivos do EM é uma opção porem há outra opção mais simples

Editar o arquivo /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01/sysman/config/emd.properties
e ir na linha agentTZRegion e trocar para Etc/GMT+2 ficará assim:
#agentTZRegion=Etc/GMT+3
agentTZRegion=Etc/GMT+2

Agora forcar o TZ da maquina para o mesmo TimeZone

[oracle@vmrstoever01 ~]$ export TZ=Etc/GMT+2

E em seguida resetar o TZ do agent efetuando os seguintes processos

[oracle@vmrstoever01 ~]$ emctl resetTZ agent
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
Updating /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01/sysman/config/emd.properties...
Time zone set to Etc/GMT+2.

To complete this process, you must either:

connect to the database served by this DBConsole as user 'sysman', and execute:

SQL> exec mgmt_target.set_agent_tzrgn('vmrstoever01:3938','Etc/GMT+2')

-- or --

connect to the database served by this DBConsole as user 'sys', and execute:

SQL> alter session set current_schema = SYSMAN;
SQL> exec mgmt_target.set_agent_tzrgn('vmrstoever01:3938','Etc/GMT+2')

Aqui eu escolhi a segunda opção e efetuei os seguintes comandos
[oracle@vmrstoever01 ~]$ sqlplus

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Dec 23 11:29:58 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Enter user-name: / as sysdba

Connected to:
Oracle Database 10g Release 10.2.0.4.0 - Production

SQL> alter session set current_schema = SYSMAN;

Session altered.

SQL> exec mgmt_target.set_agent_tzrgn('vmrstoever01:3938','Etc/GMT+2')

PL/SQL procedure successfully completed.

SQL> commit;

Commit complete.

Agora pode ser conferido o Agent se está ok.

[oracle@vmrstoever01 ~]$ emctl start agent
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
Starting agent ..... started.

E em seguida pode ser iniciado o dbconsole e neste ponto pode ser notado que o EM inicia muito mais rapidamente:

[oracle@vmrstoever01 ~]$ emctl start dbconsole
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.

vmrstoever01:1158/em/console/aboutApplication

Agent Version     : 10.1.0.6.0
OMS Version       : 10.1.0.6.0
Protocol Version  : 10.1.0.2.0
Agent Home        : /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01
Agent binaries    : /oraprd01/app/oracle/product/10.2.0
Agent Process ID  : 8381
Parent Process ID : 8378
Agent URL         : vmrstoever01:3938/emd/main
Started at        : 2009-12-23 11:34:53
Started by user   : oracle
Last Reload       : 2009-12-23 11:34:53
Last successful upload                       : (none)
Last attempted upload                        : (none)
Total Megabytes of XML files uploaded so far :     0.00
Number of XML files pending upload           :       12
Size of XML files pending upload(MB)         :     0.05
Available disk space on upload filesystem    :    23.61%
Agent is already started. Will restart the agent
Stopping agent ... stopped.
Starting Oracle Enterprise Manager 10g Database Control ................. started.
------------------------------------------------------------------
Logs are generated in directory /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01/sysman/log

Desta forma pode ser verificado que os XML files pending upload foram efetuados com sucesso:

[oracle@vmrstoever01 ~]$ emctl status agent
Oracle Enterprise Manager 10g Database Control Release 10.2.0.4.0
Copyright (c) 1996, 2007 Oracle Corporation.  All rights reserved.
---------------------------------------------------------------
Agent Version     : 10.1.0.6.0
OMS Version       : 10.1.0.6.0
Protocol Version  : 10.1.0.2.0
Agent Home        : /oraprd01/app/oracle/product/10.2.0/vmrstoever01_tkrs01
Agent binaries    : /oraprd01/app/oracle/product/10.2.0
Agent Process ID  : 10115
Parent Process ID : 8898
Agent URL         : vmrstoever01:3938/emd/main
Started at        : 2009-12-23 11:37:18
Started by user   : oracle
Last Reload       : 2009-12-23 11:37:18
Last successful upload                       : 2009-12-23 13:19:28
Total Megabytes of XML files uploaded so far :     2.23
Number of XML files pending upload           :        0
Size of XML files pending upload(MB)         :     0.00
Available disk space on upload filesystem    :    23.47%
---------------------------------------------------------------
Agent is Running and Ready

Referencias:

www.rnp.br/cais/alertas/2009/cais-alr-20091015.html

metalink.oracle.com


Oracle recomenda melhores práticas com foco em virtualização

A Oracle anunciou a ampliação do programa de configurações validadas para o Oracle VM, seu software de virtualização de servidores. A intenção é ajudar os clientes que queiram implementar ambientes virtualizados com rapidez e otimizar os recursos do datacenter com redução de riscos e custos.

Segundo a companhia, com as configurações validadas da Oracle, as empresas podem instalar soluções Linux e Oracle VM de maneira rápida e econômica. O programa oferece arquiteturas pré-testadas e validadas, com base nas melhores práticas para software, hardware, armazenamento e componentes de rede, a fim de ajudar a melhorar o desempenho, a escalabilidade e a confiabilidade das implementações das soluções em menos tempo e com menos investimento.

O programa oferece detalhes sobre o que e como instalar, além de recomendações sobre as combinações de hardware e software mais eficazes. Desde o lançamento do programa em 2006, a Oracle e seus parceiros estratégicos distribuíram mais de 145 configurações.

O novo Oracle Linux Kit está disponível e inclui o Oracle VM, permitindo que usuários avançados criem suas próprias configurações.

Para obter uma lista completa de configurações validadas, acesse:  linux.oracle.com/pls/apex/f?p=102:1:3540525736573441.

Fonte: resellerweb.com.br


Tunel parte 2

Bom imagino que o primeiro artigo sobre tunel ficou claro, porém muitos nem conhecem oracle e nem sabem como o utiliza. É uma pena!

Mas neste artigo vou mostrar como fazer um tunel de uma máquina que está na rede com a porta 3389 aguardando uma conexão e eu tenho somente acesso a um unico linux assim poderei puxar a porta do WTS para que eu consiga conectar fazendo assim um tunel:

Especificações:

Minha maquina em casa
IP Interno: 192.168.5.50
Meu Modem router
IP Interno: 192.168.5.254
IP Externo: 200.154.66.74

Servidor remoto Cliente X (Linux)
IP Externo: 200.45.3.1
IP Interno: 192.168.11.1
Servidor WTS na rede do Cliente X (Windows)
IP Interno: 192.168.11.20

Obs.: Sabendo que eu só tenho acesso via SSH porta 22 no servidor linux do cliente X porem estando ali posso pingar as máquinas internas caso este tenha acesso a estes micros/servers.

Então só para relembrar eu irei acessar o linux e farei um tunel para a máquina windos com WTS para que eu acesse remotamente uma maquina windows da rede do cliente.

Passos
a) abrir o putty


b) entrar com os dados para se conectar IP: 200.45.3.1 SSH porta: 22


c) Connection > SSH > Tunnels
d) Source port: 3355
e) Destination: localhost:3355


f) Add
g) Open


h) entrar com usuário e senha
i) no prompt digitar :

ssh -L 3355:192.168.11.20:3389 localhost

j) Nesta parte poderá solicitar usuário e senha, assim informe os memos dados que entrasse no item (h). Isto é por causa que estais se conectando novamente na própria máquina [localhost = 192.168.11.1 = maquina linux via SSH].

l) Deve-se deixar o putty aberto para que estabeleça o tunel com sua máquina, assim podendo prosseguir com os seguintes passos.


m) Iniciar > executar > mstsc /v localhost:3355
n) Digitar usuário e senha do WTS, e BINGO tais dentro da rede windows do cliente X.
Putty Release 0.60 – Link para download


Criptografando em MD5 no Oracle

Esses dias um cliente me solicitou algo para criptografar senhas, já conhecia a package dba_obfuscation_toolkit e ai fui pesquisar mais sobre e achei uma forma otima para criptografar a senha em MD5, assim fiz a função dentro do owner do sistema que faz esta conversão:

create or replace function md5 (valor varchar) return varchar2 is
   v_input varchar2(2000) := valor;
   hexkey varchar2(32) := null;
begin
   hexkey := rawtohex(dbms_obfuscation_toolkit.md5(input => utl_raw.cast_to_raw(v_input)));
   return nvl(hexkey,'');
end;

Exemplo da utilização:

sql> select md5('senhadorafael') from dual;
    70CB17EBF6A8DF8525016F7866075794

Tunel via ssh parte 1

Primeiramente estarei abordando neste artigo alguns conceitos básicos para qualquer um entender o que é fazer um tunel via ssh. E ao longo do tempo vou mostrar como acessar serviços do servidor que estais conectando, até serviços de micros que estão na rede de onde estão conectando e ai vai longe.

Bom então vamos um pouco de teoria e depois desenhamos para ficar mais simples. heheheh

SSH - Secure Shell , simultaneamente, um programa de computador e um protocolo de rede que permite a conexão com outro computador na rede, de forma a executar comandos de uma unidade remota. Possui as mesmas funcionalidades do TELNET, com a vantagem da conexão entre o cliente e o servidor ser criptografada.

Tunelamento - definição de Tunnelling é a capacidade de criar túneis entre duas máquinas por onde certas informações passam.

Beleza, agora com um pouco de teoria, vamos botar a mão na prática.

Ex.: eu estou em casa com o ip 200.200.1.55 e o servidor da minha empresa é 200.195.30.99 e eu tenho acesso via SSH(port 22) neste servidor. E como eu trabalho com Oracle, o meu exemplo será tunelar a porta 1521 do banco para a minha máquina assim eu poderei acessar via alguma ferramenta gráfica( pl/sql Developer ) a base de dados.

Legal, nesta etapa vamos utilizar o programa putty, onde esta ferramenta irá nos facilitar o nosso tunelamento. Atualmente conheço somente esta ferramenta que faça isso.

Abrindo o putty deve ser colocado o ip do servidor a se conectar conforme imagem.

putty - new connection

Em seguida deve ser clicado em SSH>Tunnels e adicionar uma porta em source e destination colocar “localhost:porta” que no meu caso estou puxando a porta 1521 que é o listener do banco do servidor que estou conectando, para a porta 3588 da minha máquina. Meio confuso né… mas simplesmente irei ter a porta 1521 na porta 3588 na minha maquina para utilizar.

putty - add conection with tunnelling

E para conferir também pode ser efetuado um teste simples no MS-DOS

c:\> netstat -a  

Conexões ativas   

  Proto  Endereço local         Endereço externo       Estado
  TCP    mypc:1521               mypc:0                  LISTENING
  TCP    mypc:3588               mypc:0                  LISTENING
  TCP    mypc:3588               mypc:0                  LISTENING

Ok, agora já pode ser utilizado a porta 3588 para acessar a base e trabalhar com as minhas ferramentas gráficas na base da empresa.

Caso esteja numa rede(na sua empresa) e tens alguma apresentação ou algo do genero e queira que sei chefe acesse o banco da máquina dele você poderá disponibilisar a porta 3588 para qualquer ip acessar, isso pode ser feito habilitando a opção onde é feito o tunel das portas “Local accept ports connections from other hosts”. Desta forma qualquer micro que esteja na mesma rede que você poderá enchergar a sua nova porta 3588.

Obs.: Não esqueça de completar a conexão, pois o tunnel tem q estar ativo para que isso funcione. E sempre veja como estão definidas as regras do seu firewall local.

Este artigo foi analisado por Alan Juliano Metzger, pessoa que me ensinou estas maravilhas do putty. Fica aqui a sua colaboração ao mundo livre – LINUX.


Removendo Oracle XE do Linux

Estava vendo na net como desinstalar o Oracle Xe no meu Enterprise Linux da Oracle e acabei achando um artigo que explica muito facilmente como fazer.

Primeiramente certifique-se se vc instalou o Oracle via RPM, se foi tente remover usando os seguintes comandos:

rpm -qa | grep oracle

rpm -e oracle-xe-univ

Se der algum erro aqui, faça a exclusão manualmente, onde o Oracle XE conforme linhas dos comandos a baixo:

rm -Rf /usr/lib/oracle/xe
rm -Rf /etc/oratab
rm -Rf /etc/init.d/oracle-xe
rm -Rf /etc/sysconfig/oracle-xe

E bingo, está desinstalado, bom para mim funcionou conforme o artigo.

Fonte: Blog Alison Holloway’s


Balanceamento no linux entre duas placas de rede

Tinha duas placas de rede em casa e estava vendo que é possivel fazer balancemanto entre duas ou mais placas de rede no linux e claro em outros OS tbm, mas o mais legal sempre eh no linux.
Ok, o meu é um Red Hat 4 x86 update 4.
Verifiquei se o pacote bond estava instalado no meu kernel e blz, se nao tiver arranje um jeito de achar como colocar e mandar bala no tutorialzinho.
Placa 1 – 100Mbps (eth0)
Placa 2 – 100Mbps (eth1)
E segui o seguinte tutorial da nixCraft, mas claro fiz algumas alterações, por exemplo no arquivo modprobe.conf
# vi /etc/modprobe.conf
E adicionei as linhas seguintes:
alias bond0 bonding
options bond0 mode=0 miimon=100 downdelay=200 updelay=200

Pois o mode=0 é o balanceamento onde 1 é active backup e isso tbm pode ser encontrado com mais detalhes em Wiki bonding.
E restartei as placas e funcionaram perfeitamente.

$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v2.6.3 (June 8, 2005)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:01:02:ec:3a:bb

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:16:76:3e:b3:68

Fonte: tutorial da nixCraft


Placa de rede com firewall

A KillerNic, que já impressionava com esta notícia, acabou de inovar lançando um firewall embutido na placa. Se antes você reclamava que o seu firewall do Windows não prestava, agora você pode ter um firewall linux iptables que roda dentro da sua placa de rede.

As possibilidades para a arquitetura FNA (Flexible Network Arquitecture – Arquitetura de rede flexível) são inumeras tanto que a empresa já criou o seu programa de Bounty Hunter (Caçador de recompensa). Se você comprar a placa pensando e desenvolver soluções para a arquitetura FNA da placa, pode ser recompensado.

Aprenda mais sobre o firewall e o probrama de recompensas aqui

E legal a recompensa pode chegar a $ 15.000,00