首页 > 解决方案 > Oracle 容器数据库 12c,使用 JDBC 连接

问题描述

我正在尝试学习如何使用 Oracle 容器数据库,并且只进行基本的 JDBC 连接。我安装了一个 dockerised 版本的 Oracle:

https://hub.docker.com/_/oracle-database-enterprise-edition

根据数据表,它配备了一个名为 ORCLCDB 的 CDB 数据库和一个名为 ORCLPDB1 的 PDB 数据库。

所以我发现我可以像这样连接它:

jdbc:oracle:thin:@localhost:1555:ORCLCDB

使用用户名 sys,密码 Oradoc_db1,并将特殊的 internal_logon jdbc 参数设置为等于“sysdba”以避免错误“本地 oracle CDB:ORA-28009:SYS 连接应为 SYSDBA 或 SYSOPER”

我发现我可以通过输入以下内容切换到 PDB:

更改会话集容器=ORCLPDB1

然后我可以创建一个新用户:

创建由 MYPASSWORD1 识别的用户 MYUSER

但后来我被困住了。我认为应该有某种方法可以使用 JDBC 连接字符串直接连接到 PDB。每次我在谷歌上搜索这个,它都会谈论 tnsnames blah blah,但是使用 JDBC 连接的人通常在服务器上使用 Tomcat,或者没有安装 Oracle 客户端。他们希望能够在安装瘦驱动程序的情况下连接到 Oracle,仅此而已。

我已经尝试了明显的使用:

jdbc:oracle:thin:@localhost:1555:ORCLPDB1 用户名 myuser 或 sys,但我总是得到:

ORA-12505, TNS: 监听器当前不知道连接描述符中给出的 SID

在这一点上,我被困住了。

标签: databaseoraclejdbcoracle12c

解决方案


显然正确的答案是这个......

jdbc:oracle:thin:@localhost:1521/ORCLPDB1.localdomain

然后我可以使用上述方法以 SYS 身份连接。如果我想以创建的用户身份连接,我还需要...

授予 myuser 创建会话;

然后,关闭 internal_logon jdbc 参数。


推荐阅读