如何使用 CentOS 7 的即时客户端连接到 Oracle 云数据库?
How to connect to Oracle Cloud Database with instant client from CentOS 7?
我正在尝试使用 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_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 answer
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
我发现我跳机后可以连上,可能是机器网络问题或者是库没加载好
我上周在 How to connect to Oracle Autonomous Cloud Databases 中写了这篇文章。
如果默认 network/admin
目录中没有配置文件,您可以编辑 sqlnet.ora。如果它们在该目录中,那么您不需要编辑它,因为 pre-supplied 路径 "?/network/admin"
映射到 libclntsh.so
文件所在的 network/admin
子目录。
另一种选择是使用“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
)。然后从钱包 tnsnames.ora 文件中找到主机、服务名称、端口等,并构建您的简易连接字符串。然后你可以 'throw away' zip 文件,因为它不需要 :)
我正在尝试使用 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_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 answer
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
我发现我跳机后可以连上,可能是机器网络问题或者是库没加载好
我上周在 How to connect to Oracle Autonomous Cloud Databases 中写了这篇文章。
如果默认 network/admin
目录中没有配置文件,您可以编辑 sqlnet.ora。如果它们在该目录中,那么您不需要编辑它,因为 pre-supplied 路径 "?/network/admin"
映射到 libclntsh.so
文件所在的 network/admin
子目录。
另一种选择是使用“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
)。然后从钱包 tnsnames.ora 文件中找到主机、服务名称、端口等,并构建您的简易连接字符串。然后你可以 'throw away' zip 文件,因为它不需要 :)