Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

Como se conectar a bases de dados conectáveis no Oracle RAC 12cR1?

Summary: Nossa missão é oferecer soluções que simplificam a TI ao fornecer soluções de banco de dados, desenvolvimento personalizado, datacenters dinâmicos e computação flexível

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Symptoms

Aplica-se a:

Banco de dados Oracle – Oracle 12cR1 12.1.0.1.0 Enterprise Edition

Sistemas operacionais – Oracle Linux 6.4 com kernel 2.6.39-400.109.17.1.el6uek.x86-64 e                                          
Red Hat Enterprise Linux com kernel 2.6.32-431.el6.x86_64

Plataformas de armazenamento – Dell EqualLogic PS 5000 e Dell EqualLogic PS 6110

Problema:

Como se conectar a bancos de dados conectáveis no Oracle RAC 12cR1?

Solução:

Há quatro maneiras possíveis de estabelecer uma conexão com bancos de dados conectáveis (PDBs).
  1. Usando o serviço padrão com o mesmo nome do nome da PDB, que é criado automaticamente pelo software da base de dados.
  2. Usando serviços definidos pelo usuário, criados com a propriedade PDB pelo utilitário SRVCTL que associa o serviço a bases de dados conectáveis
  3. Usando o comando ‘session’ e configurando o contêiner para o contêiner desejado
  4. Usando o Enterprise Manager Express
 1. Usando o serviço padrão para estabelecer conexão com o PDB

Para estabelecer uma conexão com o PDB usando o serviço padrão, realize o seguinte procedimento.
  •    Deve-se fazer uma entrada no arquivo tnsnames.ora que defina os endereços de bases de dados para permitir estabelecer uma conexão com a base de dados.
  •    O status da PDB precisa ser alterado de “montado” para o modo de gravação e leitura.
 Entrada a ser feita no arquivo tnsnames.ora:

No caso do Oracle RAC 12c, embora um serviço padrão com o mesmo nome do banco de dados conectável seja automaticamente criado pelo software do banco de dados, o arquivo tnsnames.ora é gerado apenas com uma única entrada, pertencente ao banco de dados global. Por exemplo, no caso do Oracle RAC 12c de dois nós, em que cpdb é o banco de dados global, pdb1 e pdb2 são dois bancos de dados conectáveis criados e cpdb1 e cpdb2 são duas instâncias, a entrada padrão no arquivo tnsnames.ora é igual à exibida abaixo:-

CPDB =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

Dessa forma, as entradas relevantes precisam ser criadas para o nome de serviço padrão dos bancos de dados conectáveis no arquivo tnsnames.ora, conforme mostrado abaixo:

PDB1 =

(DESCRIPTION =                                                             

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb1.dbase.lab)

   )

)

PDB2 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb2.dbase.lab)

   )

)

Alterando o status do banco de dados conectável:

Quado os pdbs são criados, o open_mode só pode ser "Mounted", por padrão. Isso pode ser verificado da seguinte forma:

SQL> select name, open_mode from v$pdbs;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

O seguinte comando abre todos os bancos de dados conectáveis em um modo de leitura e gravação.

SQL> Alter pluggable database all open;

Depois, essa conexão pode ser estabelecida com o banco de dados usando sqlplus da seguinte maneira:

[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba

SQL*Plus: Versão: 12.1.0.1.0 – Produção: terça-feira, 8 de outubro, 11:23:32 de 2013

Copyright (c) 1982, 2013, Oracle. Todos os direitos reservados.

Conectado a:

Oracle Database 12c Enterprise Edition versão 12.1.0.1.0 – Produção de 64 bits. Com as opções Particionamento, Real Application Clusters, Automatic Storage Management, OLAP, Lógica analítica avançada e Teste de aplicativos reais

 2. Usando o serviço definido pelo usuário para estabelecer conexão com o PDB

 O serviço padrão descrito acima deve ser usado apenas para fins administrativos e não deve ser usado para aplicativos. Os serviços sempre definidos pelo usuário precisam ser utilizados para aplicativos, pois os serviços definidos pelo usuário podem ser personalizados para atender aos requisitos dos aplicativos. Para estabelecer uma conexão usando os serviços definidos pelo usuário, deve-se realizar as seguintes etapas:
  1. Crie um serviço de base de dados com a propriedade PDB usando o utilitário SRVCTL
  2. Crie uma entrada no arquivo tnsnames.ora para o serviço criado
  3. Iniciar o serviço
  4. Conecte-se à base de dados usando o serviço com a propriedade PDB, criada na etapa A
a. Crie um serviço de banco de dados com a propriedade PDB usando o utilitário SRVCTL

Os seguintes comandos que usam o utilitário SRVCTL criam dois serviços de banco de dados, hr1 e sales1, os quais serão associados ao banco de dados conectável pdb1:

[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -preferred cpdb1 -available cpdb2

[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -preferred cpdb1 -available cpdb2

 A propriedade PDB pode ser visualizada na exibição do dicionário de dados all_services.

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

O comando $ srvctl config service –db <databasename> também relaciona os serviços disponíveis.

b. Crie uma entrada no arquivo tnsnames.ora para o serviço de banco de dados criado

 Podemos criar HR_PDB1 e SALES_PDB1, nomes de serviços de rede que o aplicativo hr e o aplicativo sales podem usar, respectivamente, para estabelecer conexão com o banco de dados conectável, pdb1, da seguinte maneira:

 HR_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = hr1.dbase.lab)

   )

)

SALES_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = sales1.dbase.lab)

   )

)

 c. Inicie o serviço

[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1

Service hr1 is not running

 [oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1

Iniciar o serviço associado a um PDB abre automaticamente o PDB em um modo de leitura e gravação.

d. Estabeleça conexão com o serviço de banco de dados 

Um usuário se conecta ao PDB usando um serviço de banco de dados com a propriedade PDB.

Por exemplo, o usuário SYS pode se conectar ao pdb1 usando o serviço de banco de dados HR_PDB1 associado ao pdb1, da seguinte maneira:

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3. Usando o comando Alter Session para estabelecer conexão com o PDB

Por padrão, ao estabelecer conexão com a instância RAC, você se conecta a CDB$ROOT. Cada instância de RAC abre a PDB como um todo, e uma única imagem do sistema é disponibilizada. Quando você quiser alterar a sessão para uma PDB, pode fazer isso alterando a sessão e definindo o contêiner para o contêiner desejado. A consulta, show con_name, pode ser usada para verificar o nome do contêiner atual.

[oracle@node1 bin]$ sqlplus / as sysdba

SQL*Plus: Versão: 12.1.0.1.0 – Produção: quarta-feira, 9 de outubro, 13:56:27 de 2013

Copyright (c) 1982, 2013, Oracle. Todos os direitos reservados. 

Conectado a:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 – Produção de 64 bits

Com as opções Particionamento, Real Application Clusters, Automatic Storage Management, OLAP,

Lógica analítica avançada e Teste de aplicativos reais

SQL> show con_name;

CON_NAME

CDB$ROOT

SQL> ALTER SESSION SET CONTAINER = PDB1;

Session altered.

SQL> SHOW CON_NAME;

CON_NAME

PDB1

 SQL> ALTER SESSION SET CONTAINER = PDB2;

Session altered.

SQL> SHOW CON_ID;

CON_ID

4

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Session altered.

 SQL> SHOW CON_NAME;

CON_NAME

CDB$ROOT

 As descrições de ID do contêiner são as seguintes:
ID do contêiner Descrição
0 CDB completa
1 CDB$ROOT
2 PDB$SEED
3 a 254 PDBs
Tabela 1:  Descrições do ID do contêiner

Neste exemplo específico, con_id 3 representa o pdb1 e con_id 4 representa o pdb2.

[grid@node1 bin]$ echo $ORACLE_HOME

/u01/app/12.1.0/grid

 [grid@node1 bin]$ echo $ORACLE_SID

+ASM1

[grid@node1 bin]$ sqlplus / as sysdba

 SQL*Plus: Versão: 12.1.0.1.0 – Produção: quarta-feira, 9 de outubro, 13:51:39 de 2013

Copyright (c) 1982, 2013, Oracle. Todos os direitos reservados.

Conectado a:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 – Produção de 64 bits

Com as opções Real Application Clusters e Automatic Storage Management

 SQL> show con_id;

CON_ID

0

 SQL> show con_name;

 CON_NAME

Non Consolidated

 4. Usando o Enterprise Manager (EM) Express para estabelecer conexão com o PDB

Quando o banco de dados é criado com o Database Configuration Assistant (DBCA), no momento da conclusão, a URL do EM Express é fornecida pelo DBCA. A URL tem o formato http://<hostname>:portnumber/em com 5500 como o ID de porta padrão.

 Antes de usar a URL para acessar o EM Express, é preciso emitir a seguinte declaração SQL para confirmar a porta para o EM Express:

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

Se o resultado for conforme mostrado acima, será possível se conectar à URL exibida pelo DBCA.

No entanto, se a saída for nula, como

GETHTTPSPORT

será preciso executar o procedimento PL/SQL, DBMS_XDB_CONFIG.SETHTTPSPORT para definir a porta HTTPS para no EM Express. Por exemplo:

SQL> exec dbms_xdb_config.sethttpsport(5500);

PL/SQL procedure successfully completed.

Depois desse comando, tente acessar o EM Express usando a URL.

 Uma porta HTTP também pode ser configurada para o EM Express, conforme mostrado abaixo:

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

Para definir a porta EM Express para o pdbs, é preciso alterar o contêiner para o respectivo pdbs e executar o procedimento PL /SQL para definir a porta para o contêiner.

Depois de fazer isso, é possível verificar a porta HTTP para o cpdb, pdb1 e pdb2, da seguinte maneira:

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8080

SQL> alter session set container = pdb1;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

 GETHTTPPORT

       8081

SQL> alter session set container = pdb2;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8082 
SLN310924_en_US__1icon NOTA: Se você ainda não conseguir se conectar à URL do EM Express, recarregue o controle de escuta como um usuário de grade e tente novamente.

Article Properties


Last Published Date

21 Feb 2021

Version

3

Article Type

Solution