quinta-feira, 7 de maio de 2009

Fazendo funcionar o Oracle® 10g XE em um Ubuntu Server com acesso remoto (http) liberado

Saudações.

Esta semana tive que fazer funcionar o Oracle® 10g Express Edition no Ubuntu Server (sem X instalado) com acesso remoto HTTP.

O Oracle® 10g XE requer no mínimo 1024MB de partição swap no sistema. O artigo[0] do Krix Apolinário sobre como extender a memória swap pode ser útil. A instalação é tranquila e sem maiores atropelos. O pacote de instalação[1] contém pucas dependências (o meu Ubuntu reclamou da ausência do dos pacotes bc e libaio) e o artigo do Zezival Sabino Neto[2] é bastante útil para o processo de instalação.

I M P O R T A N T E:

No processo de configuração do Oracle® será solicitado a senha do usuário SYSTEM. Não utilize o caracter '@' (arroba) na composição desta senha, sob pena de não conseguir logar no banco através do sqlplus ou outro cliente.


Após o término da configuração, é necessário reiniciar o Oracle®.

Neste ponto percebemos que o acesso ao gerenciador Web (APEX - Application Express) está restrito apenas ao localhost. Pesquisando no Google, descobri o post do Rodrigo Almeida[3] que mostra como é muito fácil liberar o acesso remoto, sendo que para isto ele faz uso do próprio APEX. Acontece que na istalação do Ubuntu Server não dispomos de ambiente gráfico e por isso não podemos acessar o APEX a partir do servidor. Tentei ainda realizar o procedimento demonstrado por ele através de um browser modo texto - o elinks - mas o mesmo não consegue ativar o método da ação que nos interessa.

Pesquisando um pouco mais, descobri um artigo[4] no wiki Ebasso.net que mostra exatamente o que precisava: Como liberar o acesso remoto (http) do Oracle® XE pela linha de comando. Porém, este artigo não trata da configuração do TNS (Transparent Network Substrate) necessário para o acesso via sqlplus.

Pondo a mão na massa...

A sequência completa dos comandos são listadas a seguir:

1º Baixe o pacote de instalação[1]. Eu utilizei o oracle-xe-universal_10.2.0.1-1.0_i386.deb. Para baixar o pacote de instalação do site da Oracle® é necessário ser cadastrado no mesmo.

2º Instale o programa com o dpkg:
# dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb
O comando acima poderá reclamar de alguma dependência. Nesse caso instale as dependências e repita o comando acima.
Certifique-se também que o computador onde será instalado o Oracle® XE dispõe de 1024MB de partição swap.

3º Configure o sistema: Para isso, execute:
# /etc/init.d/oracle-xe configure
A partir daí serão solicitados de você o número das portas que deverão ser utilizados para o acesso http e comunicação, respectivamente (cuidado com conflitos), e a senha do usuário SYSTEM, que é o administrador do sistema.

4º Configure o TNS: Crie um arquivo chamado tnsnames.ora no diretório /usr/lib/oracle/. O conteudo desse arquivo deve se parecer com o seguinte:
SAJ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.1)(PORT = 1521))
)
(CONNECT_DATA =
(SID = XE)
(SERVER = DEDICATED)
)
)

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 para possibilitar o acesso ao banco através do sqlplus.


5º Definir variáveis de ambiente: É necessário definir as seguintes variáveis de ambiente para que o sqlplus funcione:
# export TNS_ADMIN=/usr/lib/oracle
# source /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
6º Log com o sqlplus:
# sqlplus SYSTEM@NOME_CONEXAO
7º Libere o acesso remoto: Através do seguinte comando, finalmente liberaremos o acesso remoto:
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
8º Saia do sqlplus
SQL> exit
9º Reinicie o serviço para que as configurações surtam efeito:
# /etc/init.d/oracle-xe restart
Pronto! Se você fez tudo certo, o acesso remoto ao APEX está liberado.


Referências
  • [0] http://blog.krix.com.br/2009/02/04/aumentando-a-swap-dinamicamente/
  • [1] http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html
  • [2] http://www.vivaolinux.com.br/dica/Instalando-Oracle-10g-xE-no-Ubuntu
  • [3] http://forum.imasters.uol.com.br/index.php?showtopic=176920&hl=acesso+remoto
  • [4] http://ebasso.net/wiki/index.php/Oracle:_Liberando_o_acesso_remoto_(http)_do_Oracle_XE