Banco de dados Oracle 11g XE com Linux Ubuntu 16.04 64bits Server (Xenial Xerus)

Para instalar o Oracle 11g XE no Ubuntu 16.04 encontrei alguns tutoriais para versões anteriores que foram muito úteis. Um dos mais completos foi o do blog WhiteHorses, com este post: Installing Java, Oracle 11g R2 Express Edition and SQL Developer on Ubuntu 64-bit por Mike Heeren.

Mas, como acontece algumas vezes, nem tudo funciona como o esperado. Então precisei de alguns complementos, que foram encontrados vasculhando entre fóruns, blogs e sites. Preparei o passo a passo abaixo compilando informações encontradas nas várias fontes e nos testes que executei, até acertar o processo.

Bora agredir!

Passo #01: Download

A versão exata que utilizei foi o Oracle 11g R2 XE, (oracle-xe-11.2.0-1.0.x86_64.rpm.zip) que pode ser baixado através do link: Oracle Express Edition 11g R2

Passo #02: Descompactar o arquivo

Após baixar o arquivo você poderá descompactá-lo com o comando abaixo:

unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip

Passo #03: Ferramentas

Instale os seguintes pacotes:

  • Libaio1: Permite executar chamadas I/O assíncronas ao Kernel. Importante para performance do banco de dados;
  • UnixODBC: Gerenciador de drivers;
  • Alien: Conversor de pacotes “.rpm”.

Para tal, proceda com o seguinte comando:

sudo apt-get install alien libaio1 unixodbc

Passo #04: Convertendo

Arquivos “.rpm” como o que foi baixado são pacotes próprios para outras distribuições do Linux. Para que possamos utilizá-los é necessário convertê-lo para pacote “.deb”.

Com o pacote “Alien” já instalado, estando você na pasta onde descompactou o arquivo “.rpm”, execute o seguinte comando:

sudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm

A conversão deste pacote é um processo bastante demorado.

Passo #05: Arquivos de configuração

Para criar/editar os arquivos, você poderá utilizar o editor de sua preferência. Algumas pessoas utilizam o vi, outros o vim. Eu, me sinto confortável utilizando o nano. Mas você também poderá utilizar o gedit se estiver no modo gráfico, que não foi o meu caso.

Criar o chkconfig:

sudo nano /sbin/chkconfig

Seu conteúdo deve ser este:

#!/bin/bash
# Oracle 11gR2 XE installer chkconfig hack for Ubuntu
file=/etc/init.d/oracle-xe
if [[ ! `tail -n1 $file | grep INIT` ]]; then
echo >> $file
echo '### BEGIN INIT INFO' >> $file
echo '# Provides: OracleXE' >> $file
echo '# Required-Start: $remote_fs $syslog' >> $file
echo '# Required-Stop: $remote_fs $syslog' >> $file
echo '# Default-Start: 2 3 4 5' >> $file
echo '# Default-Stop: 0 1 6' >> $file
echo '# Short-Description: Oracle 11g Express Edition' >> $file
echo '### END INIT INFO' >> $file
fi
update-rc.d oracle-xe defaults 80 01
#EOF

Depois de salvar o arquivo, altere as permissões para execução:

sudo chmod 755 /sbin/chkconfig

Em seguida, crie o arquivo 60-oracle.conf

sudo nano /etc/sysctl.d/60-oracle.conf

Com este conteúdo:

# Oracle 11g XE kernel parameters
fs.file-max=6815744
net.ipv4.ip_local_port_range=9000 65000
kernel.sem=250 32000 100 128
kernel.shmmax=2147483648

O valor do parâmetro “shmmax” deve ser o valor de máximo da memória RAM dispoível, em bytes. No meu caso era de 2Gigas.

2 * 1024 * 1024 * 1024 = 2147483648

Este é um ponto em que tive problemas. Vale dar uma olhada nos outros arquivos que estão nesta pasta. O número 60 que precede o nome do arquivo o ordena a forma que os scripts são carregados. Verifique o interior dos outros scripts. No meu caso, um script que era executado após, setava um valor menor do que o necessário.

Para atualizar os novos parâmetros, execute o comando abaixo:

sudo service procps start

Passo #06: Swap Space

O espaço destinado ao Swap de memória requerido pelo Oracle XE é de no mínimo 2Gigas. Você poderá verificar o quanto está disponível no seu sistema operacional utilizando o seguinte comando:

free -m

Se não tiver espaço suficiente, você poderá liberar 2Gigas de espaço em uma partição exclusiva com a seguinte sequencia:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=2097152
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.orig
sudo echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

Passo #07: Últimos preparativos

Crie o link

sudo ln -s /usr/bin/awk /bin/awk

Crie o diretório subsys:

sudo mkdir /var/lock/subsys

E, dentro dele, o arquivo vazio:

sudo touch /var/lock/subsys/listener

Passo #08: Instalando o Oracle

Agora sim, até que enfim. Execute:

sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb

Mas, ainda não acabou: siga os próximos passos.

Passo #09: Variáveis de ambiente

Execute esta sequencia de comandos, setando as variáveis de ambiente necessárias e atualizando a variável PATH.

export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_SID=XE
export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export ORACLE_BASE=/u01/app/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

Para carregar estas alterações no profile, execute o seguinte comando:

. ./.profile

mas, para isso, esteja na pasta do seu usuário em “/home/<seuusuario>”.

Enfrentei problemas de perda destas variáveis. Caso você passe pelo mesmo problema, poderá colocá-las no arquivo sudo “bash.bashrc”. Execute o comando abaixo e acrescente estas linhas de “export” das variáveis ao final do arquivo.

sudo nano /etc/bash.bashrc

Passo #10: Configurando o Oracle

sudo /etc/init.d/oracle-xe configure

Ao executar este comando, será apresentada a sequencia de 5 perguntas já oferecendo os valores padrões:

1- Porta HTTP para o APEX.
2- Porta do listener do SGDB.
3- Senha do SYS e SYSTEM.
4- Confirmação da senha.
5- Necessidade de iniciar o Oracle junto com o sistema operacional.

Tendo finalizado, basta iniciar o serviço do banco de dados com o comando:

sudo service oracle-xe start

 

 

34 comentários em “Banco de dados Oracle 11g XE com Linux Ubuntu 16.04 64bits Server (Xenial Xerus)

  1. Ao executar o comando para configurar o oracle recebo este retorno: Oracle Database 10g Express Edition is already configured

    Não consigo acessar o banco de dados pois não consigo configurar uma senha de SYS. Pode me ajudar con isso ?

    Curtir

    1. Olá Efimino01.
      Localize o arquivo “/etc/default/oracle-xe” e altera a linha que contem a instrução “CONFIGURE_RUN=true” para “CONFIGURE_RUN=false”.

      Depois disso, faça a reconfiguração passo a passo executando o comando “sudo /etc/init.d/oracle-xe configure”.

      Se não funcionar, remova “/etc/sysconfig/oracle-xe” e depois execute o comando “sudo /etc/init.d/oracle-xe configure”.

      Curtir

      1. Aqui da que já esta configurado mas nao tem o “/etc/sysconfig/oracle-xe” mudei para false e aparece erro de Status : Com FalhaFalha no teste: Erro de ES: The Network Adapter could not establish the connection

        Curtir

      2. O serviço não está sendo iniciado, do Listener. Geralmente a pasta padrão da instalação é “/u01/app/oracle/product/11.2.0/xe”. Tente acessar a pasta bin e iniciar manualmente o serviço por lá. Só uma sugestão. Na pior das hipóteses, dependendo do conhecimento de cado um, o mais simples é desfazer e recomeçar do início. É difícil dizer não tendo acompanhado se ficou algum detalhe sem executar ou que não tenha persistido o efeito esperado.

        Curtir

  2. Cara, esse tutorial deu certo. Só no passo #06 que eu tive que fazer algumas alterações:

    sudo dd if=/dev/zero of=/home/swapfile bs=1024 count=2097152
    sudo mkswap /home/swapfile
    sudo swapon /home/swapfile
    sudo cp /etc/fstab /etc/fstab.orig
    sudo echo ‘/swapfile swap swap defaults 0 0’ >> gedit /etc/fstab

    Curtir

    1. Obrigado, Leandro;
      Que bom que funcionou.
      No seu caso, variou apenas colocando explícito a pasta /home. Em algumas instalações do Linux pode variar de acordo com o perfil do usuário que está executando.
      Provavelmente você alterou também na quinta linha.

      Curtir

  3. Parabéns pelo tutorial, está muito bem explicado! Eu só tive uma dificuldade e vou compartilhar para se alguém mais tiver, ao executar a configuração do oracle ocorria erro no momento de inicializar a base, eu tive que alterar a linha memory_target= para memory_target=1G no arquivo /u01/app/oracle/product/11.2.0/xe/config/init.ora . Após essa alteração foi tudo perfeito. Parabenizo novamente pelo tutorial. Vlw

    Curtido por 1 pessoa

    1. Obrigado, Maryane;
      Em uma ocorrência foi necessário que eu também realizasse esta alteração. No padrão o Oracle XE já tem por definição 1G de memory_target e quando é colocado um valor diferente ele não executa. É a limitação da versão XE para rodar com apenas 1G. Neste caso, assim como no seu caso, um outro valor padrão deve ter sido assumido na execução, talvez por alguma instalação anterior de outra versão do Oracle ou variação do sistema operacional. Mas realmente resolve quando colocamos explícito no arquivo “init.ora”.

      Curtir

  4. Fiz todos os passos. Pulei apenas o passo 6, pois tenho 4GB de swap.

    No fim ao dar comando “sudo /etc/init.d/oracle-xe configure” recebo a mensagem:
    sudo: /etc/init.d/oracle-xe: comando não encontrado.

    Curtir

    1. Olá Cristian;

      Não se desanime, também não acertei de primeira. Provavelmente ficou algum passo do tutorial sem executar. Normalmente, ao receber este erro, ele vem acompanhado de alguma linha, especificando melhor. Por exemplo: “/etc/init.d/oracle-xe: linha 362: netstat: comando não encontrado”.

      Minha sugestão é que remova tudo e tente instalar novamente. Certifique-se de que todos os comandos em que são necessários executar com o “sudo” estejam com ele. Alguns funcionam sem, mas no final fazem diferença.

      Espero ter ajudado.

      Curtir

  5. Muito obrigado cara. Primeira vez que tento instalar o oracle no Ubuntu e seu tutorial foi um achado, minha primeira escolha no google e foi direto ao ponto. Valeu mesmo.

    Curtir

  6. Oi Amigo, ótimo seu artigo, gostaria de deixar uma contribuição para aqueles que enfrentaram o seguinte problema

    A unidade oracle-xe.service está sendo iniciada.
    Starting Oracle Net Listener.
    No passwd entry for user ‘oracle’
    FAILED su for oracle by root
    ??? root:oracle
    No passwd entry for user ‘oracle’
    FAILED su for oracle by root

    é necessário criar um usuário para o oracle como mostra nesse link
    https://docs.oracle.com/cd/E11882_01/install.112/e24324/toc.htm#CHDJHADA

    Comandos

    1 – sudo /usr/sbin/groupadd oinstall
    2- sudo /usr/sbin/groupadd dba
    3 – sudo usr/sbin/useradd -g oinstall -G dba oracle
    4 – passwd oracle (digite a senha e a confimação para o usuário)

    Curtido por 1 pessoa

  7. Estou quase desistindo do Oracle 11g express, cara que troço ruim de instalar!
    root@ubuMate:/home/brainiac/Downloads/Disk1# alien –scripts -d oracle-xe-11.2.0-1.0.x86_64.rpm
    Unpacking of ‘oracle-xe-11.2.0-1.0.x86_64.rpm’ failed at /usr/share/perl5/Alien/Package/Rpm.pm line 168.

    Curtir

    1. Realmente não foi fácil concluir este processo nas primeiras tentativas. Por isso resolvi publicar o passo a passo que deu certo no meu caso. Já o repeti algumas vezes sem problemas. Não sei ao certo se é o seu caso, mas este erro ocorre na maioria das vezes quando é executado sem as devidas prerrogativas. Tente executar com o “sudo” antes do comando.

      Curtir

    1. Para desinstalar, uma das opções é utilizar o “dpkg” utilizado no passo 8, e ao contrario da opção “–install” utilizar a opção “–deinstall” ou então “–purge”. Mas, os arquivos alterados manualmente você terá que revisá-los. Refaça os passos conferindo.

      Curtir

  8. Parabens por tentar ajudar, já fa uma semana tentando instalar o banco e não funcionou no meu Ubuntu, o SQL Developer foi de boa . Perdi a conta de quantos videos no youtube e tutoriais e nada de fazer funcionar.

    Só nao entendo por que não simplificam como no Windows ou por que não deixam um script no arquivo de instalação. Sempre tentam dificultar e isso nao ajuda em nada o Linux.

    Curtir

  9. impressinante, sou iniciante da iniciante e tenho bastante dificuldade apesar de estar fazendo faculdade de análise de sistemas, tenho 56 anos e sou de outra realidade de sistemas, mas consegui concluir a instalação com sucesso seguindo os passos acima. Grata muito, foi muito didático e objetivo.

    Curtir

    1. Olá, Hugo;

      O acesso ao APEX vem, por padrão, com o acesso externo bloqueado. Siga os seguintes passos:

      1- Logue no SQLPlus pelo terminal:
      # sqlplus SYSTEM/suaSenha

      2- Desative a restrição:
      SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

      3- Saia do SQLPlus:
      SQL> exit

      Pronto, agora é só parar o serviço e reiniciar.
      Depois disso, basta saber qual o IP deste servidor na rede e acessar pelo navegado: http://ipDoServidor:8080/apex

      Curtir

      1. Ola novamente, agradeço sua resposta, mas estou a alguns dias tentando instala-lo sem sucesso. Quando executo o comando “sudo /etc/init.d/oracle-xe configure” ao tentar configurar a database, no final aparece o erro “Database Configuration failed. Look into /u01/app/oracle/product/11.2.0/xe/config/log for details”. O arquivo de log não foi muito útil porque não mostrou nenhuma dica e encontrei muitas entradas com o código de erro “ORA-01034: ORACLE não disponível”, conseguiria me ajudar novamente?

        Agradeço desde ja.

        Curtir

      2. Olá, Hugo;

        Na outra pergunta, imaginei que já tivesse instalado o Oracle. Só conseguirá acessar o APEX depois de tudo funcionando. Mas, vamos à sua nova questão.

        Primeiramente, queria debater a seguinte frase: “O arquivo de log não foi muito útil porque não mostrou nenhuma dica”. São justamente dicas que estão no arquivo de log. Os códigos de erro são justamente a dica do que pesquisar e indicam a causa provável do problema.

        O ORA-01034 está aparecendo porque o serviço realmente não está disponível. Ele não foi iniciado. Não vi o seu arquivo de log, mas geralmente ele não inicia por algum fator esquecido durante a instalação. Pode ser que você se esqueceu de alguma variável PATH ou alguma permissão. Mas o mais provável é que você tenha tido problemas ao trabalhar com a memória, ou pulou algum item do Passo #05. Verifique o arquivo “60-oracle.conf”.

        Curtir

Deixe um comentário