Muitas aplicações antigas estão configuradas
para utilizar o SID para conectar no banco de dados. No Oracle Database 12c, na
arquitetura multitenant, devemos
conectar em um PDB utilizando o SERVICE_NAME. Então o que acontece caso
venhamos a plugar um non-cdb em um CDB
e a aplicação tente conectar utilizando o SID?
A resposta é simples, irá ocorrer o seguinte
erro:
Para resolver esse problema, foi introduzido
um novo parâmetro que pode ser configurado no listener.ora, o USE_SID_AS_SERVICE_listener=on.
Isso permitirá que o SID usado no
descritor de conexão seja interpretado como um nome de serviço quando um
usuário tentar uma conexão com o banco de dados.
Lista de PDBs:
CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDB1 READ WRITE
4 PDB2 MOUNTED
Como estão configurados os arquivos tnsnames.ora dos clientes que acessam a aplicação:
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
)
(CONNECT_DATA =
(SID = pdb1)
)
)
Ao tentar conectar no banco de dados
utilizando esta string de conexão:
SQL*Plus: Release 12.1.0.1.0 Production on Mon Jun 2 09:47:10 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-12505: TNS:listener does not currently know of SID given in connect
descriptor
Conteúdo atual do listener.ora:
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
)
)
Agora adicionando o novo parâmetro:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle01)(PORT = 1521))
)
)
[oracle@oracle01 admin]$ lsnrctl reload
LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 02-JUN-2014 09:54:24
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully
Com o novo parâmetro ativado, é possível
conectar na PDB utilizando o SID:
SQL*Plus: Release 12.1.0.1.0 Production on Mon Jun 2 09:57:08 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Last Successful login time: Mon Jun 02 2014 09:56:58 +01:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
SQL> show con_name
CON_NAME
------------------------------
PDB1
Referências:
Oracle
Net 12c: How to enable Clients using SID to connect to PDB? (Doc ID 1644355.1)
Abraço,
Alex Zaballa.
0 comentários:
Postar um comentário