Problemas de conexão com banco de dados Oracle no Linux

Boa noite pessoal, tudo bem?

Pode ser que você esteja buscando essa solução há algumas horas, dias ou até semanas. Pois é, eu me bati muito com esse tipo de problema.

Basicamente o que aconteceu foi o seguinte:

De uma hora para a outra as conexões com o banco de dados Oracle em um servidor Linux (em produção) pararam de funcionar do nada.

Eu fiquei muito bravo, pois não conseguia entender onde estava o problema, checava tudo quanto é tipo de operação que a aplicação fazia, e estava tudo certo. Testes rodando local perfeito, aí descartei a hipótese de ser falha na aplicação.

Comecei a revirar a web atrás da solução desse problema, e é até um problema muito difícil de se procurar algo no “stackoverflow”. Não fazia nem idéia de qual termo poderia colocar para descrever esse problema.

Uma hora, quando eu estava bem cabreiro já com a situação, eu lembrei que o pessoal da Infra havia trocado o “Hostname” recentemente da máquina, e comecei a notar um comportamento estranho quando eu digitava “sudo -s” para pegar permissões de root na máquina, retornava uma mensagem: “sudo:unable to resolve host linux-server“.

Aí me veio na idéia de adicionar o hostname novamente no /etc/hosts, basicamente editei o arquivo e adicionei uma linha assim:

127.0.0.1                                   linux-server.local                            linux-server

Depois tentei rodar novamente o comando “sudo” e funcionou sem dar nenhum tipo de erro no terminal. Depois disso, já tentei reiniciar o apache, e advinhem?

As coisas voltaram a funcionar e todos os problemas do mundo foram resolvidos num passe de mágica.

Espero que você consiga resolver rapidamente seu problema com essa ajuda aí!

Um forte abraço!

Extensão PHP MSSQL no Mac OS X (Mountain Lion)

Estamos trabalhando num projeto que utiliza Microsoft SQL Server como base de banco de dados. Quando configurei o PHP para conectar no determinado banco, o resultado era uma tela branca. Eu não estava conseguindo depurar o problema.

Fiquei um tempinho quebrando a cabeça, depois quando analisei o phpinfo() verifiquei que a extensão mssql.so não estava carregada. A solução que encontrei para utilizar essa extensão foi a seguinte:

  • Ter o XCode/GCC previamente instalado
  • Baixar, configurar, compilar e instalar o software FreeTDS (link)
  • Baixar o código fonte do PHP
  • Utilizar o comando phpize dentro da extensão do mssql (ext/mssql/)
  • Configurar, compilar e instalar o módulo
  • Carregar o mssql.so no /etc/php.ini
  • No meu caso eu instalei o freetds no diretório: /usr/local/freetds/
    • A configuração fica no seguinte diretório: /usr/local/freetds/conf/freetds/freetds.conf
    • Editei o arquivo de configuração e coloquei os seguintes dados: host, porta e versão tds.
  • Depois voltei a testar novamente a extensão e funcionou perfeitamente.

FreeTDS é um conjunto de bibliotecas para Unix e Linux que permite que seus programas conversem nativamente com Microsoft SQL Server e Sybase.

Tecnicamente falando, FreeTDS é uma implementação open source do TDS (Tabular Data Stream) protocolo usado por esses bancos de dados para seus próprios clientes. Ele suporta diversas linguagens incluindo Perl e PHP.

É uma ótima alternativa para usuários de Mac OS X. 😉

 

Problemas com Character Encoding utilizando PHP + PDO + Oracle

Desenvolvi uma ferramenta utilizando WSDL no PHP e passei por malditas horas por causa do conjunto de caracteres que o Oracle utilizara. Para quem não conhece, o Oracle é um dos melhores Sistemas Gerenciadores de Banco de Dados para se trabalhar com grandes volumes de dados.

O conjunto de caracteres que indiquei através do PDO foi o AL32UTF8. (Para trabalhar com AMERICAN_AMERICA.WE8MSWIN1252)

O mais engraçado de tudo é que no sistema inteiro eu trabalho com o charset iso-8859-1, e WALA!!! Os dados com acento gravados corretamente no Oracle.

Realmente as vezes eu acho que isso tudo é loucura, como isso pode funcionar?