Explorando as Variáveis de Ambiente no Oracle Database
Você já se perguntou por que certos comandos no Oracle Database funcionam magicamente? Ou por que alguns scripts parecem saber exatamente onde estão os arquivos críticos do sistema? Neste artigo, vamos desvendar esses mistérios com muitos exemplos práticos e uma abordagem descontraída.
Antes de mergulharmos nos exemplos, vamos entender o que são variáveis de ambiente. Imagine que seu sistema operacional seja uma grande empresa. De forma simplória as variáveis de ambiente são como o CEP da sua casa, com um número de 8 dígitos consegue identificar seu endereço. Elas configuram o ambiente de trabalho, assegurando que cada processo saiba onde encontrar o que precisa.
Algumas variáveis de ambiente são particularmente importantes.
1. ORACLE_HOME
- Indica o diretório onde o Oracle Database está instalado.
- Define o caminho para os binários e arquivos de configuração do Oracle.
2. ORACLE_SID
- Define o SID (System Identifier) do banco de dados.
- Identifica a instância específica do Oracle Database.
3. ORACLE_PDB_SID
- Define o SID de um PDB (Pluggable Database) dentro de um CDB (Container Database).
- Necessário para operações dentro de um PDB específico.
4. TNS_ADMIN
- Indica o diretório dos arquivos de configuração de rede, como `tnsnames.ora`.
- Permite personalizar a configuração de rede do Oracle.
5. PATH
- Contém os diretórios onde o sistema busca executáveis.
- Inclui o diretório bin do Oracle, permitindo a execução de comandos Oracle no terminal.
Vamos a um exemplo prático, com o comando ‘sqlplus / as sysdba’. Este comando serve para nos conectarmos com o banco com o usuário SYS.
Vejamos a coisa na prática.
$ sqlplus / as sysdba
O executar o camando ‘sqlplus / as sysdba’ é gerado um erro, não deveria mas deu o erro vamos detalhar o que está acontecendo.
O banco se comporta como um PET que não sabe que tem que correr e trazer o graveto quando é jogado. E não é porque não está conectado a rede, não é por isso não.
Reparem na imagem abaixo que é feito um ‘PING’ com o número do IP da máquina retorna que existe conexão, ou seja, o PET está vivo, mas não sabe o que fazer.
Agora na sequência vemos na prática que foi configurado as variáveis de ambientes e com isso a conexão aconteceu com sucesso.
orcl
É como seu adestrássemos o PET a buscar o graveto, e percebam que o banco sabe o que queremos dizer quando executamos o comando: ‘sqlplus / as sysdba’ e assim ele se conecta ao banco.
Quando você executa . oraenv, o ponto (.) na frente do comando indica ao shell que ele deve “fonte” o script. Isso significa que as variáveis de ambiente definidas no script serão aplicadas ao shell atual, e não a um novo processo de shell. Em outras palavras, as configurações feitas pelo script afetarão diretamente o ambiente de trabalho que você está usando.
Vamos abrir uma nossa sessão para visualizarmos uma nova prática
Agora se você como eu acha desagradável ter que ficar digitando ‘. oraenv’ é preciso entender seu motivo e sua origem, o ‘. oraenv’ é um apelido pois na verdade por trás deste comando ele está executando o seguinte sintaxe:
$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
$ export ORACLE_SID=orcl
$ export PATH=$ORACLE_HOME/bin:$PATH
$ sqlplus / as sysdba
Vamos entender o que a imagem acima acabou de fazer para acessar o banco:
1. Defina o ORACLE_HOME: Este é o diretório onde o Oracle Database está instalado.
2. Defina o ORACLE_SID: Este é o identificador do seu banco de dados.
3. Atualize o PATH: Adicione o diretório bin do Oracle ao PATH.
A imagem acima mostra, em destaque vermelho, cada caminho onde o banco deve buscar as informações. Isso não foi feito anteriormente, quando foi executado o comando ‘sqlplus / as sysdba’ sem especificar onde o banco deveria buscar as informações, o que resultou em erro. Agora, não houve erro, pois o sistema sabia onde deveria buscar as informações.
E, melhor ainda, vemos que o que está destacado são três comandos separados. O comando ‘. oraenv’ substitui esses três comandos de forma simples! Então, saiba que, ao digitar ‘. oraenv’, de forma indireta, estão sendo executados os três comandos destacados na imagem.
Sim, é possível configurar seu ambiente manualmente, mas, ao usar o script ‘. oraenv’, o processo é mais rápido e eficiente, como se você tivesse um especialista treinado. Ou seja, é possível configurar manualmente as variáveis de ambiente, mas com o script ‘oraenv’, tudo se torna bem mais prático.
Vamos abrir uma nossa sessão para visualizarmos uma nova prática
Vejamos outro aspecto quando vamos nos conectar a um PDB.
$ sqlplus hr/hr@ORCLPDB
A imagem acima demonstra que estou usando o usuário HR e quero entrar no banco direto no contêiner PDB, e vejam que uso corretamente o ‘. oraenv’ mas gera um erro:
Erro ORA-12514 indica que o listener do Oracle não conhece o serviço que você está tentando acessar. Isso geralmente significa que o nome do serviço especificado não corresponde a nenhum serviço conhecido pelo listener.
O listener é essencial para que o Oracle Database aceite conexões dos clientes. Ele escuta na rede, gerencia solicitações e direciona-as ao banco de dados correto. O listener é um componente essencial no Oracle Database que atua como um “intermediário” entre o cliente (como SQL*Plus) e o banco de dados.
Para facilitar a didática vamos visualizar o status do listener com o comando:
$ lsnrctl status
Bom, mesmo sem saber muito de banco o tanto de mensagem em vermelho percebemos que a coisa não está boa.
E é por isso que quando executamos o comando:
$ sqlplus hr/hr@ORCLPDB
Lá atrás não tivemos sucesso. Para termos sucesso na conexão de usuários ao banco é necessário adestrarmos o banco, precisamos dizer onde está o ‘LISTENER’ que é a lista dos moradores, assim o ‘lsnrctl é como o porteiro que tem a lista de moradores.
Como todo bom porteiro é preciso acorda-lo. Todas as vezes que iniciamos o banco precisamos acordar o porteiro com o comando:
$ lsnrctl start
O porteiro foi acordado, e o banco entende onde está o LISTENER. A partir de agora, quando a entrada de qualquer outro usuário cadastrado for solicitada, o acesso será permitido.
É necessário explicar o que acontece por trás do comando:
$ sqlplus hr/hr@ORCLPDB
Detalhamento do comando
‘sqlplus hr/hr@ORCLPDB’
Ponto 1:
‘sqlplus’ é o cliente que você usa para se conectar ao Oracle Database.
‘hr/hr’ são as credenciais: ‘hr’ é o nome de usuário, e ‘hr’ é a senha.
‘@ORCLPDB’ especifica o serviço de banco de dados ao qual você deseja se conectar.
Ponto 2:
O cliente ‘SQL*Plus’ procura uma entrada chamada ‘ORCLPDB’ no arquivo ‘tnsnames.ora’. A imagem abaixo demonstra uma entrada com o nome ‘ORCLPDB’. O cliente usará a string de conexão direta fornecida, como ‘//localhost:1521/ORCLPDB’. Para facilitar a compreensão, apresento-lhes o senhor ‘tnsnames.ora’.
cat $ORACLE_HOME/network/admin/listener.ora
Ou seja, quando digita ‘sqlplus hr/hr@ORCLPDB’ é a mesma coisa que digitar:
sqlplus hr/hr@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle19c.localdomain)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orclpdb.localdomain)))'
E mais uma vez no detalhe fica mais fácil executar o comando simplificado.
Mas a família conexão tem mais um membro que é o ‘listener’.
cat $ORACLE_HOME/network/admin/listener.ora
‘LISTENER’: Nome do listener que está ouvindo na porta 1521 no ‘localhost’.
‘ADDRESS’: Detalhes de onde o listener está configurado para aceitar conexões (‘PROTOCOL’, ‘HOST’, ‘PORT’).
E todos estes detalhes está na imagem acima.
Como um resumo os passos que acabamos de ver foi:
Quando você executa sqlplus hr/hr@ORCLPDB, o SQL*Plus usa a entrada ORCLPDB do arquivo tnsnames.ora para encontrar o listener apropriado.
Encontrar o Listener:
O SQL*Plus consulta o listener configurado para o serviço ORCLPDB usando as informações de endereço fornecidas.
Ele envia uma solicitação para o listener no localhost na porta 1521.
Autenticação e Conexão:
O listener encaminha a solicitação de conexão para o banco de dados com o SERVICE_NAME ORCLPDB.
O banco de dados então autentica o usuário HR com a senha hr.
Estabelecimento da Sessão:
Após autenticação bem-sucedida, uma sessão é estabelecida com o banco de dados ORCLPDB.
Depois desta narração deu até vontade de gritar goooooool!
Conclusão
As variáveis de ambiente são ferramentas poderosas que simplificam a administração do Oracle Database. Elas garantem que seu ambiente de trabalho esteja sempre configurado corretamente, permitindo que você se concentre no que realmente importa: gerenciar e otimizar seu banco de dados.
Exploramos algumas das variáveis de ambiente mais importantes no Oracle Database e como elas são usadas na prática. Cada variável tem um papel crucial, ajudando a configurar e operar seu ambiente Oracle de forma eficiente. Lembre-se, o domínio dessas variáveis pode fazer uma grande diferença na sua produtividade e na gestão eficaz do seu banco de dados.
Espero que tenha gostado dessa viagem pelas variáveis de ambiente do Oracle Database. Continue explorando e experimentando — o poder está em suas mãos!