Как подключиться к Oracle Cloud Database с помощью instant client из CentOS 7?

#database #oracle #ssl-certificate #oracle-cloud-infrastructure #oracleclient

#База данных #Oracle #ssl-сертификат #oracle-облачная инфраструктура #oracleclient

Вопрос:

Я пытаюсь подключиться к базе данных Oracle Cloud с помощью instant client с компьютера CentOS 7.

Я создал базы данных в интерфейсе OCI, загрузил файлы кошелька и создал одного пользователя с ролью DWROLE.

Я установил в системе следующие пакеты

 oracle-instantclient19.8-basic-19.8.0.0.0-1.x86_64.rpm
oracle-instantclient19.8-devel-19.8.0.0.0-1.x86_64.rpm
oracle-instantclient19.8-sqlplus-19.8.0.0.0-1.x86_64.rpm
oracle-instantclient19.8-tools-19.8.0.0.0-1.x86_64.rpm
  

Я создал набор нижеприведенных папок и установил переменные среды

 export ORACLE_HOME=/usr/lib/oracle/19.8/client64
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
  

затем я разархивировал файлы кошелька, чтобы TNS_ADMIN

 [root@workvm admin]# ll
total 40
-rw-r--r-- 1 root root 6733 Sep 17  2020 cwallet.sso
-rw-r--r-- 1 root root 6688 Sep 17  2020 ewallet.p12
-rw-r--r-- 1 root root 3276 Sep 17  2020 keystore.jks
-rw-r--r-- 1 root root  691 Sep 17  2020 ojdbc.properties
-rw-r--r-- 1 root root  317 Sep 17  2020 README
-rw-r--r-- 1 root root  114 Sep 17  2020 sqlnet.ora
-rw-r--r-- 1 root root 1813 Sep 16 14:18 tnsnames.ora
-rw-r--r-- 1 root root 3336 Sep 17  2020 truststore.jks
[root@workvm admin]# pwd
/usr/lib/oracle/19.8/client64/network/admin
  

В tnsnames.ora файлах определены некоторые автоматически созданные службы

 otakudb_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=...)
otakudb_low = (...)
otakudb_medium = (...)
  

Согласно тому, что я прочитал, я должен иметь возможность подключиться к базе данных, выполнив

 sqlplus metalbob@otakudb_high 
  

Однако, когда я запускаю его, соединение прерывается, а затем выдает ошибку со следующим сообщением

 [donhk@workvm ~]$ sqlplus metalbob@otakudb_high

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 16 14:01:52 2020
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.
Enter password:
ERROR: ORA-28791: certificate verification failure

[donhk@workvm ~]$ 
  

Какова правильная процедура подключения к удаленной базе данных?

Редактировать после ответа Джо:

Таким был мой sqlnet.ora файл до внесения изменений

 WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes
  

Вот как я изменил, чтобы заставить его работать после ответа Джо

 NAMES.DIRECTORY_PATH= (TNSNAMES)
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes
  

Нет необходимости менять DIRECTORY , хитрость заключалась в следующем

 NAMES.DIRECTORY_PATH= (TNSNAMES)
  

Надеюсь, это кому-то поможет!

Редактировать 2

Я понял, что после того, как я отскочил от компьютера, я смог подключиться, возможно, это была проблема с сетью на компьютере или библиотека загружена неправильно

Комментарии:

1. Нет причин не использовать EZ Connect. На самом деле синтаксис был расширен именно для использования в облаке, см. Техническую статью Oracle Database 19c Easy Connect Plus Настраиваемый синтаксис подключения к базе данных .

2. Есть ли у вас какие-либо другие файлы sqlnet.ora, которые также читаются и которые устанавливают directory_path на что-то другое?

3. Я не помню, где на открываемых мной вкладках 1k я прочитал о ezconnect, рад, что вы прояснили это, я обновлю вопрос, чтобы предотвратить распространение лжи в stackoveflow, спасибо!

Ответ №1:

Я писал об этом на прошлой неделе в Как подключиться к Oracle Autonomous Cloud Databases.

Вы можете отредактировать sqlnet.ora, если у вас нет файлов конфигурации в network/admin каталоге по умолчанию. Если они находятся в этом каталоге, вам не нужно его редактировать, потому что предварительно указанный путь "?/network/admin" соответствует network/admin подкаталогу, в котором находится libclntsh.so файл.

Другой альтернативой является использование синтаксиса «Easy Connect Plus», такого как:

 tcps://adb.ap-sydney-1.oraclecloud.com:1522/abc_cjjson_high.adb.oraclecloud.com?wallet_location=/Users/cjones/Cloud/CJJSON
  

Извлеките cwallet.so из zip-файла кошелька и вставьте его в каталог (который я использовал /Users/cjones/Cloud/CJJSON ). Затем найдите хост, имя службы, порт и т.д. в файле wallet tnsnames.ora и создайте строку easy connect. Затем вы можете «выбросить» zip-файл, поскольку он не нужен 🙂

Комментарии:

1. Я удалил NAMES.DIRECTORY_PATH из sqlnet.ora, и он все еще подключается, теперь я озадачен, поскольку файлы не изменились, и они работают сейчас, но они были точно такими же раньше, и они не работали, я думаю, что когда я перезапустил компьютер, что-то где-то обновилось, может ли это быть так?

2. Есть ли у вас какие-либо другие файлы sqlnet.ora или ~ /.sqlnet.ora?