quinta-feira, 13 de novembro de 2008

Instalando o TOra com suporte ao Oracle no Ubuntu

Saudações a todos que como eu tiveram problemas para instalar o TOra com suporte ao Oracle no Ubuntu.

Como todos já devem saber o TOra - Toolkit for Oracle - não vem habilitado por padrão para esse fim quando o instalamos via pacote .deb (apt-get install tora; aptitude; synaptic...), e o máximo que consegue-se sem ter algum trabalho é configurá-lo para acessar também os sgdbs MySQL, PostgreSQL e ODBC, instalando os pacotes libqt3-mt correspondentes (mas nada de suporte ao Oracle) Isto se dá por questões de licenças de uso! O Qt, como oferece suporte nativo para acesso ao MySQL, PostgeSQL e ODBC (os pacotes libqt3-mt) é bem simples de configurar. Mas no caso do acesso ao Oracle, como depende de um software proprietário (o intantclient da Oracle, no mínimo), a filosofia de software livre que o Ubuntu segue não permite que o mesmo possa ser disponibilizado em seus repositórios, como é o caso do core do TOra.

Mas chega de conversa! Vamos por a mão na massa!

1º PASSO: Instalar o Oracle Instant Client

Baixe os pacotes RPM direto do site da Oracle http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html

Para a nossa prática serão necessários:
  • oracle-instantclient11.1-basiclite-11.1.0.7.0-1.i386.rpm

  • oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.i386.rpm

  • oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm
Para instalar os pacotes RPM em nosso Ubuntu (DEBIAN) recorremos ao utilitário alien.
$ sudo alien -i oracle-instantclient11.1-basiclite-11.1.0.7.0-1.i386.rpm
$ sudo alien -i oracle-instantclient11.1-sqlplus-11.1.0.7.0-1.i386.rpm
$ sudo alien -i oracle-instantclient11.1-devel-11.1.0.7.0-1.i386.rpm
Os comando acima criarão os diretórios:
  • /usr/lib/oracle/11.1/client/bin/

  • /usr/lib/oracle/11.1/client/lib/

  • /usr/include/oracle/11.1/client/

2º PASSO: Configurar o acesso ao SGBD

Uma vez que temos o OIC (Oracle Instant Client) instalado em nossa máquina, precisamos realizar algumas configurações para que o mesmo se torne funcional.

A primeira delas é criar um arquivo chamado tnsnames.ora no diretório /usr/lib/oracle/. O conteudo desse arquivo deve se parecer com o seguinte:
NOME_CONEXAO=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.123)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SID_DO_MEU_BD)
(SERVICE_NAME = SN_DO_MEU_BD)
)
)
Nota: Modifique os parâmetros para mostrados no exemplo acima seguindo as configurações do seu servidor de banco de dados. O termo NOME_CONEXAO (ou o que estiver em seu lugar) será referenciado pelo TOra na configuração da conexão.

Em seguida, precisamos definir duas variáveis de ambiente. Para isso, execute:
$ export LD_LIBRARY_PATH=/usr/lib/oracle/11.1/client/lib
$ export TNS_ADMIN=/usr/lib/oracle
Para que estas variáveis se tornem permanentes, edite o seu arquivo ~/.bashrc acrescentando os comandos acima no fim do arquivo.

Por último, crie um arquivo chamado oracle.conf em /etc/ld.so.conf.d/ com o seguinte conteúdo:
/usr/lib/oracle/11.1/client/lib
Então, execute:
$ sudo ldconfig
Para testar nossa configuração, execute:
$ sqlplus username/password@NOME_CONEXAO
Onde NOME_CONEXAO é aquele mesmo que foi definido no tnsnames.ora no passo anterior. E username e password são as credenciais para acesso ao banco de dados.

3º PASSO: Instalando o TOra na tora!

Para instalar o TOra com suporte ao Oracle, precisamos baixar os fontes do mesmo, modificar a configuração de compilação, gerar o .deb e em seguida instalá-lo.

Para baixar os fontes faça:
$ cd /usr/src/
$ sudo apt-get source tora
Este último comando deverá baixar os fontes em uma pasta no diretório local (/usr/src/) chamada tora-X.XX, onde X.XX é a versão. Acesse este diretório:
$ cd tora-X.XX
Agora, edite o arquivo ./debian/rules substituindo a linha:
./configure --prefix=/usr --without-oracle --without-rpath --disable-new-check --with-kde –enable-libsuffix=
Por:
./configure --prefix=/usr --with-instant-client --without-rpath --disable-new-check --without-kde --enable-libsuffix=
O próximo passo é gerar o pacote .deb com estas configurações. Para isso será necessário instalar alguns pacotes. Então, execute:
$ sudo apt-get install g++ gcc autoconf automake flex zlib1g-dev docbook-xsl
$ sudo apt-get install libqt3-mt-dev libqt3-compat-headers
Em seguida, compile os fontes através do comando:
$ sudo debian/rules binary
Esse comando poderá demorar um pouco, dependendo da máquina que você estiver usando. Ao final da execução, será gerado um arquivo tora_X.XX.deb no diretório superior. Para instalar -lo, execute:
$ cd ..
$ sudo dpkg -i tora_X.XX.deb
Onde X.XX é a versão do pacote.

É muito provável que este ultimo comando retorne mensagens de dependências não satisfeitas. Para resolver isto, execute:
$ sudo apt-get install -f
Pronto! O TOra com suporte ao Oracle deve agora estar devidamente instalado!

Acessando o Oracle pelo TOra

Para ter acesso ao Oracle pelo TOra, no terminal, execute:
$ tora &
Crie uma nova conexão, com as seguintes configurações:
  • Connection provider: Oracle
  • Username: username
  • Password: password
  • Database: NOME_CONEXAO
  • SQL*Net: True
Isto deve funcionar.

Versões usadas na elaboração deste tutorial
  • Oracle 9i
  • Oracle Instant Client 11.1.0.7
  • Ubuntu 8.04
  • Tora 1.3.22
Referências:
  • http://sourceforge.net/projects/tora/
  • http://glufke.net/oracle/viewtopic.php?t=864
  • http://www.benpinter.net/article.php?story=20051208034638928
  • https://help.ubuntu.com/community/HowToBuildToraWithOracle