How to Connect DBeaver to Oracle Autonomous Database by JDBC Thin Driver

之前介绍了如何使用SQL Developer使用PL/SQL Developer连接Oracle Autonomous Database。

但是实际上在macOS系统中,我更喜欢使用DBeaver这个GUI客户端来操作数据库,DBeaver是一款用Java编写的免费数据库工具,可以连接几十种数据库,包括RDBS,NoSQL,时序数据库,图数据库等等,非常丰富。

NewImage

在DBeaver中连接Oracle ADB,需要使用Oracle JDBC驱动。这个解决方案是在Stackoverflow中找到的,有意思的是回答者是Jeff Smith,而Jeff是Oracle SQL Developer,Oracle SQL Developer Web,Oracle SQLcl等工具的产品经理。

下载最新的JDBC驱动

需要使用18.3版本以上的JDBC驱动,可以是18.3,也可以是19.3。下载地址分别是:
Oracle Database 18c (18.3) drivers
Oracle Database 19c (19.3) drivers

我们以18.3 JDBC Driver为例,下载ojdbc8-full.tar.gz,这个压缩包中包括ojdbc8.jar等一系列使用wallet连接Oracle ATP所必须的jar包。解压以后包含以下这些文件。

$ ls -l
total 16640
-rw-r--r--@ 1 Kamus  staff     2595  8 21  2018 README.txt
-rwxr-xr-x@ 1 Kamus  staff    11596  8  3  2018 ojdbc.policy
-rw-r--r--@ 1 Kamus  staff  4161744  8  3  2018 ojdbc8.jar
-rw-r--r--@ 1 Kamus  staff   144428  8  3  2018 ons.jar
-rw-r--r--@ 1 Kamus  staff   307817  8  3  2018 oraclepki.jar
-rw-r--r--@ 1 Kamus  staff  1661545  8  3  2018 orai18n.jar
-rw-r--r--@ 1 Kamus  staff   205152  8  3  2018 osdt_cert.jar
-rw-r--r--@ 1 Kamus  staff   306854  8  3  2018 osdt_core.jar
-rw-r--r--@ 1 Kamus  staff    29103  8  3  2018 simplefan.jar
-rw-r--r--@ 1 Kamus  staff  1398331  8  3  2018 ucp.jar
-rw-r--r--@ 1 Kamus  staff   262415  8  3  2018 xdb6.jar

下载连接ADB的wallet文件

在Oracle Cloud管理后台下载连接ATP需要的wallet压缩文件,这一步在之前的文章中都有提及。
NewImage
下载以后解压到任意目录。

在Beaver中增加连接驱动

在菜单项Database->Driver Manager中,点击New按钮。
NewImage

  1. 点击“Add File”按钮,将之前下载的JDBC Driver文件ojdbc8.jar添加进来
  2. 点击“Find Class”按钮,会自动找到类名,选择类名以后,上方的Class Name处会自动填入
  3. 填写URL Template,这是最重要的一步,具体的文档介绍,可以参看Oracle官方文档-Using a JDBC URL Connection String with JDBC Thin Driver。其中的关键点是修改dbname_high为下载的ADB wallet文件解压后包括的tnsnames.ora中的连接串名字,TNS_ADMIN是ADB wallet文件解压后的目录路径
  4. 填写Default Port,这个端口对于Oracle ADB来说是1522,在tnsnames.ora中也可以看到

在DBeaver中创建数据库连接

在菜单项Database->New Database Connection中,选择上述创建的连接驱动,然后填入数据库用户名和密码。点击Test Connection。
NewImage

如果一切正常,会显示连接成功。

至此,可以成功用这个新建的连接登入到Oracle ADB中了。
NewImage

Enjoy the Oracle Cloud always free tier. 😀

How to Connect PL/SQL Developer to Oracle Autonomous Transaction Processing (ATP)

之前写过一篇如何使用SQL Developer连接Oracle Autonomous Database,那么如果主要使用的客户端并非Oracle SQL Developer,而是PL/SQL Developer的话,该如何连接呢?

首先,下载Oracle instant client,目前的最新版本是19.3。解压到任何目录都可以。如果你的Windows机器中已经安装了Oracle数据库软件,比如Oracle Database 18c (18.3) for Microsoft Windows x64,或者是Oracle客户端,比如Oracle Database 18c Client (18.3) for Microsoft Windows x64,那么可以跳过这一步。

其次,假设你已经按照我之前的那篇文章,下载了连接Oracle自治数据库服务的wallet zip文件,需要将该zip文件解压(在使用SQL Developer连接ATP或者ADW的时候无需解压zip文件)。

解压之后的目录中 包含了以下这些文件。

PS C:\oracle\Wallet_DB201909261518> dir


    目录: C:\oracle\Wallet_DB201909261518


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019/10/12      3:40           6661 cwallet.sso
-a----       2019/10/12      3:40           6616 ewallet.p12
-a----       2019/10/12      3:40           3243 keystore.jks
-a----       2019/10/12      3:40             87 ojdbc.properties
-a----       2019/10/12     12:54            130 sqlnet.ora
-a----       2019/10/12      3:40           1776 tnsnames.ora
-a----       2019/10/12      3:40           3335 truststore.jks

需要修改sqlnet.ora文件,将WALLET_LOCATION的位置修改为解压之后的目录的绝对地址。在我的机器上,修改以后如下:

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="C:\oracle\Wallet_DB201909261518")))
SSL_SERVER_DN_MATCH=yes

然后,设置Windows系统的环境变量TNS_ADMIN到wallet文件解压目录,设置方法不再赘述。设置完毕以后echo命令显示如下:

C:\oracle\Wallet_DB201909261518>echo %TNS_ADMIN%
C:\oracle\Wallet_DB201909261518

最后,启动PL/SQL Developer,新增Connection。

新增Connection时候的Database处,填写wallet文件解压目录里tnsnames.ora文件中的任何一个连接串名称。

如果你的PL/SQL Developer没有自动探测到Oracle instant client的安装位置,那么可以在配置中手工指定。

现在,可以在PL/SQL Developer中访问ATP或者ADW服务了。

Enjoy the Oracle Cloud always free tier. 😀

How to Connect SQL Developer to Oracle Autonomous Transaction Processing (ATP)

Autonomous Transaction Processing简称为ATP,是Oracle自治数据库在云上的一种表现形式,另外一种是Autonomous Data Warehouse,简称ADW。目前这两种Oracle数据库的云服务都在最新发布的Always Free Services中,也就是只需要在Oracle Cloud网站中注册一个免费用户,就可以永久免费使用一定规格的这两种服务。

实际上Oracle云的Always Free Services中包含的不仅仅是数据库,还提供了计算资源、存储资源和网络资源。使用这一整套永久免费的云服务,搭建一套完整的企业应用是OK的,完全可以用于研发环境、测试环境,甚至是最初的产品环境。
NewImage

那么具体到永久免费的数据库云服务,我们可以使用到的规格是:
1. 可以最多创建两个数据库环境,只有数据库,并不能接触到数据库在运行的主机,因为实际上只是两个PDB;
2. 每个PDB可以使用到最多1个OCPU,8GB内存,20GB存储容量;
3. 有一个额外的限制,最大的同时运行会话数不能超过20.

NewImage

具体的规格描述可以参看官方文档:https://docs.cloud.oracle.com/iaas/Content/FreeTier/resourceref.htm

好了,假设我们已经创建好了一个ATP数据库。那么首先要解决的是如何连接到这个数据库中,说Oracle是全球对于数据库安全最看重的公司其实不为过,连接Oracle ATP数据库(或者ADW数据库也一样)并没有像其它云中的数据库那么简单,只要开一个防火墙端口,给一个连接串就能连接上了。

实际上用Oracle SQL Developer连接原本是最简单的,但是会有一些错误要解决。

  • 下载最新的Oracle SQL Developer 19.2.1
  • 在Oracle Cloud管理后台下载连接ATP需要的wallet压缩文件。Oracle Cloud的UI做的是如此之复杂,入口繁多,期望你们能顺利找到这个页面。
    NewImage

点击“数据库连接”之后,会出现下载页面。
NewImage

点击“下载”按钮,会要求设置密码,实际上在使用SQL Developer连接数据库的时候并不需要此密码。因此可以随便设置。
下载的zip文件无需解压,将之放到任何一个合适的目录中即可。我放在了用户目录下的oracle目录中。

# Kamus @ Kamus-MacBook-Pro-2016 in ~/oracle [17:54:09]
$ ls *zip
Wallet_DB201909261518.zip
  • 打开SQL Developer,新增数据库连接,在连接类型中选择Cloud Wallet。如果你的SQL Developer不是最新版本,可能不是这样的称呼,所以还是请下载使用最新版本。
    NewImage
  • 如果你的机器安装的JAVA 8或者更早的版本,那么很可能会遇到这个错误。
    NewImage

点击错误中显示的链接地址,下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy文件,这个文件非常小,下载完毕以后解压,然后将解压出来的两个jar包:local_policy.jar和US_export_policy.jar,覆盖掉原JAVA环境中的同名文件。原来的文件位置在:$JAVA_HOME/jre/lib/security 中。比如在我的机器上,这个文件位于:

# Kamus @ Kamus-MacBook-Pro-2016 in /Library/Java/JavaVirtualMachines/jdk1.8.0_71.jdk/Contents/Home [18:08:58]
$ find . -name local_policy.jar
./jre/lib/security/local_policy.jar
  • 如果一切正常,再次打开SQL Developer并新增数据库连接,选择Cloud Wallet类型,就会出现以下界面了。
    NewImage

在(1)处直接选择在第2步中下载的wallet zip文件,在(2)处输入默认的管理用户ADMIN,和之前创建ATP服务时要求输入的ADMIN密码,期望你还记得。

  • 实际上如果我们解压wallet zip文件,就可以看到其中包含了tnsnames.ora,这其中Oracle Cloud为所有的数据库连接都预先定义好了5种连接串。
    NewImage

这5种不同的连接串,是联系到不同的resource manager计划中的,但是在我们目前初步连接数据库的时候,每种连接都是可以的。因此可以直接使用最上面的“_high”连接。

  • 保存然后连接数据库。
    NewImage

最后,ATP的官方文档链接在这里。关于连接数据库的部分在这里