#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?