Database 如何从CentOS 7使用即时客户端连接到Oracle云数据库?

Database 如何从CentOS 7使用即时客户端连接到Oracle云数据库?,database,oracle,ssl-certificate,oracle-cloud-infrastructure,oracleclient,Database,Oracle,Ssl Certificate,Oracle Cloud Infrastructure,Oracleclient,我正在尝试使用CentOS 7机器上的即时客户端连接到Oracle云数据库 我在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.

我正在尝试使用CentOS 7机器上的即时客户端连接到Oracle云数据库

我在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\u 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
这就是在joe回答后我如何改变以使其工作的方式

NAMES.DIRECTORY_PATH= (TNSNAMES)
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=yes
无需更改
目录
,诀窍在于

NAMES.DIRECTORY_PATH= (TNSNAMES)
希望这对别人有帮助

编辑2


我意识到,在我弹回机器后,我能够连接,可能是机器上的网络问题,或者是没有正确加载库。

我上周在中写下了这篇文章

如果默认
network/admin
目录中没有配置文件,则可以编辑sqlnet.ora。如果它们在该目录中,则不需要编辑它,因为预先提供的路径
“?/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

从钱包zip中提取
cwallet.so
,并将其粘贴到一个目录中(我使用了
/Users/cjones/Cloud/CJJSON
)。然后从wallet tnsnames.ora文件中找到主机、服务名、端口等,并建立轻松连接字符串。然后您可以“扔掉”zip文件,因为它不需要:)

我上周在中写了这篇文章

如果默认
network/admin
目录中没有配置文件,则可以编辑sqlnet.ora。如果它们在该目录中,则不需要编辑它,因为预先提供的路径
“?/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

从钱包zip中提取
cwallet.so
,并将其粘贴到一个目录中(我使用了
/Users/cjones/Cloud/CJJSON
)。然后从wallet tnsnames.ora文件中找到主机、服务名、端口等,并建立轻松连接字符串。然后您可以“扔掉”zip文件,因为它不需要:)

没有理由不使用EZ Connect。事实上,语法的扩展正是为了云的使用,请参阅科技文章。您是否有其他的sqlnet.ora文件也在被读取,并将目录路径设置为其他文件?我不记得在我打开的1k选项卡上我在哪里读到了ezconnect,很高兴您澄清了它,我将更新问题,以防止在stackoveflow上传播谎言,谢谢!没有理由不使用EZ Connect。事实上,语法的扩展正是为了云的使用,请参阅科技文章。您是否有其他的sqlnet.ora文件也在被读取,并将目录路径设置为其他文件?我不记得在我打开的1k选项卡上我在哪里读到了ezconnect,很高兴您澄清了它,我将更新问题,以防止在stackoveflow上传播谎言,谢谢!我从sqlnet.ora中删除了
名称.DIRECTORY\u PATH
,它仍然连接,现在我很困惑,因为文件没有更改,现在可以工作,但它们与以前完全相同,不工作,我想当我重新启动机器时,某些地方更新了,可能是这样的吗?你周围还有其他sqlnet.ora或~/.sqlnet.ora文件吗?我从sqlnet.ora中删除了
名称.DIRECTORY\u PATH
,但它仍然连接,现在我很困惑,因为这些文件没有改变,现在可以工作,但它们以前完全一样,不能工作,我想当我重新启动机器时,某个地方更新了一些东西,可能是这样吗?你有其他sqlnet.ora或~/.sqlnet.ora文件吗?