Um experimento bacana para seu ambiente de desenvolvimento
Cenário
Imagine um cenário onde utiliza-se Oracle como SGDB e ao iniciar o projeto ainda não foi provisionado um banco de dados de desenvolvimento, além de não conseguir também instalar o banco localmente devido a políticas da empresa. Apesar de ser um grande revés, existe uma alternativa temporária para contornar o problema: baixando a imagem do Oracle e a colocando em um container.
Não é o melhor cenário certamente mas pode quebrar um galho (para efeitos de desenvolvimento).
Existe uma versão do Oracle Enterprise edition para Developer tier no Dockerhub, baixa procurar e executar o Docker pull da imagem.
Imagem docker — execute o comando: docker pull store/oracle/database-enterprise:12.2.0.1
Conectando de fora do container
Para conectar na base fora do container (no caso via SQL Developer), precisamos rodar o container, informar um nome para o banco e informar qual porta acessaremos. No caso, deixei na porta 1521 para acesso externo e 1521 que é a porta padrão do listener do Oracle (se não me engano).
O comando é:
docker run -d -it — name <Oracle-DB> -p 1521:1521 store/oracle/database-enterprise:12.2.0.1
Substitua o nome do banco e portas a seu gosto!
Agora, vamos logar na base via SQL PLUS para criar um usuário edar permissão para ele. Para isso, execute o comando abaixo:
docker exec -it <NOME-DA-BASE> bash -c “source /home/oracle/.bashrc; sqlplus /nolog”
Obs: Até a base subir, esse processo pode retornar um erro: “bash: sqlplus: command not found” — normalmente após algum tempo o command line do SQL fica disponível.
Nesse momento, estamos conectados na base Oracle. Agora, teremos que executar algumas comandos SQL para conectar como sysdba, alterar a sessão para possibilitar scripts, criar um usuário e dar permissão total ao mesmo.
Os comandos SQL são:
- connect sys as sysdba;
- alter session set “_ORACLE_SCRIPT”=true;
- create user raycarneiro identified by raycarneiro; — — usuário e senha
- GRANT ALL PRIVILEGES TO raycarneiro;
Acessando via Oracle SQL Developer
Supondo que você já tenho baixado o SQL Developer, basta agora conectar no banco.
Crie uma nova conexão e informe o usuário de banco criado previamente, sua senha e especifique os detalhes da conexão.
A porta precisa ser a mesma cadastrada como externa do container, o SID não foi alterado (por padrão é xe) e o nome do serviço é ORCLCDB.localdomain
Feito isso, teste a conexão. Se funcionou, será solicitado sua senha novamente.
Se autenticado com sucesso, você terá uma base disponível para desenvolvimento dentro de um container Docker.
Conclusão
Esse artigo retrata uma solução que encontrei para rodar um banco Oracle dentro de um container, dada a situação que não tinha uma infra pronta e nem disponibilidade de instalar o banco localmente no equipamento do cliente. Como eu já tinha o Docker instalado no sistema operacional, essa foi uma solução paleativa para resolver o problema.