Невозможно подключиться к pdb от разработчика sql, пока cdb подключается Oracle 19c

Недавно я установил корпоративную версию Oracle 19c на виртуальную коробку с хостом в качестве Windows 10, а гостевую машину в Linux Oracle.

Я могу подключиться к базе данных CDB как из sqlplus (установленного на Virtualbox, то есть на гостевой машине), так и из SQLDeveloper, установленного в Windows 10.

Но я не могу подключиться к базе данных PDB из SQL Developer, хотя я могу подключить ее из SQL PLUS, то есть с гостевой машины, используя export ORACLE_PDB_SID=testpdb1

В SQLDeveloper я получаю сообщение об ошибке ниже.

  Status : Failure -Test failed: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
  (CONNECTION_ID=+zZy85nyTtSOaamzG3UnBw==)

введите здесь описание изображения

При использовании кнопки имени службы рейдо ниже появляется сообщение об ошибке:

Status : Failure -Test failed: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
  (CONNECTION_ID=H5R80kOxSAy+Cv74InS7MQ==)

Ниже мои Listener.ora и Tnsnames.ora

testcdb =
  (ADDRESS_LIST=
#   (ADDRESS=(PROTOCOL=tcp)(HOST=atif.localdomain)(PORT=1521))
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.29.71)(PORT=1521))
#   (ADDRESS=(PROTOCOL=tcp)(HOST=atif)(PORT=1521))
#   (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))
)   

# SID_LIST_<lsnr>
#   List of services the listener knows about and can connect 
#   clients to.  There is no default.  See the Net8 Administrator's
#   Guide for more information.
#
 SID_LIST_testcdb=
   (SID_LIST=
    (SID_DESC=
#           #BEQUEATH CONFIG
#          (GLOBAL_DBNAME=salesdb.mycompany)
          (SID_NAME=testcdb)            
         (ORACLE_HOME=/f01/app/oracle/product/19.3)
#           #PRESPAWN CONFIG
#         (PRESPAWN_MAX=20)
#     (PRESPAWN_LIST=
#           (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
#         )
        )
      )
STARTUP_WAIT_TIME_testcdb=0
CONNECT_TIMEOUT_testcdb=10
TRACE_LEVEL_testcdb=OFF
LOG_DIRECTORY_testcdb=/f01/app/oracle/product/19.3/network/admin
LOG_FILE_testcdb=testcdb
TRACE_DIRECTORY_testcdb=/f01/app/oracle/product/19.3/network/admin
TRACE_FILE_testcdb=testcdb
ADMIN_RESTRICTIONS_testcdb=ON
SUBSCRIBE_FOR_NODE_DOWN_EVENT_testcdb=OFF

Tnsnames.ora

testcdb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.29.71)(PORT = 1521))
#       (ADDRESS = (PROTOCOL = TCP)(HOST = atif)(PORT = 1521)
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testcdb)
#       (INSTANCE_NAME = testcdb)
     )
   )
testpdb1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.29.71)(PORT = 1521))
#       (ADDRESS = (PROTOCOL = TCP)(HOST = atif)(PORT = 1521)
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testpdb1)
#       (INSTANCE_NAME = testcdb)
     )
   )

person Atif    schedule 25.05.2021    source источник


Ответы (1)


Вы ДОЛЖНЫ использовать имя службы PDB при подключении к многопользовательской подключаемой базе данных.

SID также будет использоваться для возврата к базе данных контейнеров.

Измените переключатель на «Имя службы» с «SID».

person thatjeffsmith    schedule 25.05.2021
comment
Я уже пробовал то же самое. Обновлен мой вопрос с информацией об ошибке при использовании имени службы. - person Atif; 25.05.2021
comment
@Atif - версия SQLDev? - person thatjeffsmith; 25.05.2021
comment
Версия 20.4.1.407.0006. Просто обновление, теперь я могу подключиться после использования имени службы как testpdb1.localdomain - person Atif; 25.05.2021