Oracle Net Services

Oracle Net é uma camada, layer, que roda em cima do protocolo de rede utilizado, geralmente o TCP, e é proprietário da Oracle. O Oracle net estabelece e controla a conexão entra a estrutura cliente-servidor.

Devemos nos lembrar que nenhum user process se conecta diretamente ao banco. Mas ele se conecta a um server process, no o user process qual envia as instruções SQL e é esse server process que se comunica com o banco e envia de volta os resultados da instrução. Ou seja, cada user process se conecta a um server process. Quanto mais user process existir mais server process irá existir. Isso é que chamamos de dedicated server, Um server process para cada user process. E é o Oracle Net quem inicia o server process quando necessário.

Para que o cliente possa se conectar com o banco, é necessário que ele consiga identificar o banco no qual ele quer conectar, e o banco do lado dele tem que provê essa identificação. Um modo de fazer isso é pelo service name.

Do lado do banco, o Oracle Net Listener é o processo que escuta, listens, por requisições de conexões dos clientes. Existe o arquivo de configuração padrão do listener, o listener.ora que é localizado em $ORACLE_HOME/network/admin. Nesse arquivo, que é opcional, devemos ter a configuração de pelo menos um listener(sim, podemos ter mais de um). Nessa configuração temos apenas algumas informações básicas, como o protocolo, a porta e o endereço, veja um exemplo abaixo.

LISTENER =
  (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oca.terciocosta)(PORT = 1521))
  )

Percebemos que esta escutando, listens, por requisições na porta 1521(padrão), com o protocolo TCP, que pode ser o IPv4 ou IPv6, no endereço oca.terciocosta. O nome do listener é LISTENER. Essa seria a mesma configuração padrão, default, se não tivessemos esse arquivo opcional. Mas é sempre bom ter por motivos de documentação. Nesse arquivo podemos outros listeners escutando em outras portas diferentes conforme desejado.

O banco tem que se registrar no listener, para que assim o listener saiba da existência dos bancos disponíveis para conexão. Podemos escrever no arquivo listener.ora todas as instâncias disponíveis, mas essa não é considerada uma boa prática. Devemos deixar que o dynamic service registration faça isso(sem escrever no arquivo, mas apenas se registrar).

Quando o instância inicia, ela irá tentar encontrar automaticamente o listener na porta padrão, 1521, no endereço que o hostname esta sendo resolvido. Assim ele irá registrar um service name, que geralmente é o mesmo nome do banco, deixando banco disponível para conexões. Quando se executa um shutdown, o processo contrário ocorre, removendo esse service name do listener Esse é o processo de registro dinâmico.

Quem faz todo esse processo o LREG process. Depois de registrar a primeira vez ele também ficará tentando registrar de tempos em tempos, caso o listener seja parado e iniciado novamente e assim perca a lista dos bancos disponíveis.

Agora que já vimos o lado do servidor, onde ele tem uma lista de bancos disponíveis e o listener que fica escutando por conexões, vejamos como fazemos do lado do cliente, para identificar qual banco desejamos conectar e onde ele se encontra.

O cliente ao solicitar uma conexão, irá informar um usuário, a senha e um identificador de conexão. Esse identificar pode ser o próprio descritor de conexão(com endereço do host, porta e service name ou o SID) ou esse identificar de conexão pode resolver para um mapeamento que tenha a informação armazenada, do descritor de conexão, utilizando um método de nomenclatura. Esse método de nomenclatura é um método em que o cliente utiliza para resolver um identificador de conexão à um descritor de conexão. Existe mais de um método.

O método mais simples é o Easy Connect que consiste apenas do string de conexão, com ip ou hostname, porta e service name do banco. Veja o exemplo abaixo:

]$ sqlplus terciocosta/oracle@192.168.0.103:1521/orcl

SQL*Plus: Release 12.2.0.1.0 Production on Fri Jun 21 16:08:16 2019

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Fri Jun 21 2019 16:07:48 -03:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

Após o nome de usuário e a senha, temos o identificador de conexão, o easy connect. É o string do conexão após o @. Esse string tem o seguinte modelo:

"host[:port][/service_name][:server][/instance_name]"

Vimos aqui o host, no qual utilizei o ip. A porta que usei a padrão, a 1521. Service Name, o orcl. Logo depois temos o tipo de server, onde temos as opções de dedicated, que é um server process para cada users process, temos o tipo shared também, onde temos um server process para mais de um client process, e temos também o pooled que iremos falar mais tarde. Se a opção for omitida ele vai tentar usar o shared se estiver configurado, se não estiver, vai usar o dedicated. Por último tem o instance_name que é o nome da instância.

Um outro método de nomenclatura é o local naming que armazena o descritor de conexão em um arquivo de configuração conhecido como tnsnames.ora. Esse arquivo fica em ORACLE_HOME/network/admin. Você pode utilizar o Net Configuration Assistant para adicionar novos descritores ou editar manualmente o arquivo. Veja o exemplo abaixo o descritor para o identificador ORCL.

[oracle@oraclegb ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oraclegb)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

[oracle@oraclegb ~]$ sqlplus terciocosta/oracle@ORCL

SQL*Plus: Release 12.2.0.1.0 Production on Fri Jun 21 17:49:12 2019

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

Last Successful login time: Fri Jun 21 2019 16:08:16 -03:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

Perceba que o identificador tem o descritor com os dados do protocolo, host, porta, service_name e o tipo de server. E para utilizar na hora de conectar é somente utilizar o @ seguido com o nome do identificador.

No próximo post veremos um pouco mais sobre a arquitetura de shared server.

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação OCA 12c, Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , ,
Publicado em Sem categoria

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Sou um
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação OCA 12c, Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 166.540 Visualizações
%d blogueiros gostam disto: