GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Instalando o Oracle 19c em um container Docker

Oracle 19c em um container Docker

Olá camaradas !

Hoje estou de volta para mostrar a vocês como rodar um container com o Oracle 19c no Docker. Tudo isso rodando no meu bom e velhor Ubuntu 20.04.4 LTS.

Para isso, iremos utilizar o repositório github oficial da Oracle. Lá você encontrará os dockerfiles e exemplos necessários para instalar diferentes produtos.

Primeiramente, escolha um diretório em sua máquina, para fazermos a clonagem do projeto de nosso interesse. Para isso, utilize o comando abaixo:

git clone https://github.com/oracle/docker-images

Agora vá para o diretório docker-images

cd docker-images

Observe que temos disponível a imagem de vários produtos. Vamos a aquele que nos interessa, o Oracle 19c.

cd OracleDatabase/SingleInstance/dockerfiles/19.3.0

Faça o download do 19c através do link abaixo:

https://www.oracle.com/br/database/technologies/oracle19c-linux-downloads.html

Copie para o mesmo diretório

Vamos agora limpar o arquivo db_inst e retirar o comentário e as linhas em branco. Para isso, use o comando abaixo:

grep -v ^# db_inst.rsp | grep -v ^$

Faça o mesmo com o dbca.

grep -v ^# dbca.rsp.tmpl | grep -v ^$

Voltemos ao diretório dockerfiles e executemos o comando:

./buildContainerImage.sh -v 19.3.0 -e

Ops, algo deu errado…vamos verificar o erro:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix /var/run/docker.sock: connect: permission denied
./buildContainerImage.sh: line 94: [: : integer expression expected

Sem permissão para acessar o docker… 🙁

Para resolver esse problema é simples ! Basta executar o comando abaixo:

sudo chmod 666 /var/run/docker.sock

Caso você não tenha tomado esse erro, basta ignorar essa parte.

Vamos tentar novamente.

Sem erros e dando um build na imagem. 🙂

Ao lancar o setup wizard, a minha instalacao acusou alguns WARNINGs.

O importante é que essa etapa termine com a seguinte mensagem:

Successfully Setup Software with warning(s)

Após esse ponto, se tudo ocorrer bem até o final, deverá aparecer como na tela abaixo:

Imagem gerada com sucesso !!!! 🙂

Build completed in 2016 seconds.

Agora é hora de rodarmos o nosso container. Para isso, usaremos o comando abaixo:

docker run \
--name oracle19c \
-p 1521:1521 \
-p 5500:5500 \
-e ORACLE_PDB=orcl \
-e ORACLE_PWD=<coloque a sua senha aqui> \
-e ORACLE_MEM=2000 \
-v /opt/oracle/oradata \
-d \
oracle/database:19.3.0-ee

Observe que ele executa o docker run com alguns parâmetros. Ele nomeia o container (–name), libera as portas necessárias para o funcionamento e acesso do banco de dados (-p), seta algumas variáveis necessárias para a instalação (-e). define um volume para o oradata (-v) e executa como detach (-d).

Como executamos como detach, a saída não sera mostrada. Para acompanhar a instalação, você poderá usar o comando abaixo:

sudo docker logs -f oracle19c

Ou utilizar alguma GUI para Docker. Eu utilizo o excelente portainer.

E a instalação continua até a sua finalização…

Instalação concluída com sucesso !!!

Agora vamos verificar se o listener esta no ar. Primeiramente, precisamos acessar o interactive shell do container. Para isso, execute o comando abaixo:

sudo docker exec -it oracle19c /bin/bash

Pra verificar o listener, execute o comando abaixo:

lsnrctl status

Banco e listener no ar !!!

Agora vamos abrir o SQL Developer e testar a conexão.

Se você não possui o SQL Developer instalado e não sabe como fazê-lo, leia o meu artigo abaixo que explica sobre todos os passos necessários para o SQL Developer rodar no seu Ubuntu.

Abrindo uma conexão com o Oracle 19c.

Failure -Test failed: IO Error: Got Minus one from a read call

O erro acima é resultado de um bug da versão 19.3.0 que afeta exclusivamente as conexões via JDBC. Felizmente, há um workaround para que o SQL Developer possa contornar esse problema.

Para isso, precisaremos alterar o arquivo ide.conf e incluir o seguinte AddVMOption nele:

AddVMOption -Doracle.net.disableOob=true

Na minha instalação, ele fica no diretório /opt/sqldeveloper/ide/bin

Salvemos o arquivo, iniciemos uma nova sessão do SQL Developer e tentemos novamente abrir uma conexão com nosso Oracle 19c.

Sucesso !!!!!

Meus parabéns ! O seu banco de dados Oracle 19c está completamente no ar e acessível !!!

Uma última dica. Caso você queira fazer alguma alteração no sqlnet.ora ou no listener.ora ANTES de criar a sua imagem, basta alterar o arquivo createDB.sh que fica no diretório /docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0 e incluir as opções que desejar nesses dois arquivos.

Bom pessoal, é isso ! Espero que este artigo seja de grande ajuda a aqueles que estão iniciando os seus estudos com Docker e Oracle.

Referências

Share

You may also like...

1 Response

  1. Alfredo disse:

    Muito bom Sergio

Deixe um comentário

O seu endereço de e-mail não será publicado.