database - 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
在这一点上,我被困住了。
解决方案
显然正确的答案是这个......
jdbc:oracle:thin:@localhost:1521/ORCLPDB1.localdomain
然后我可以使用上述方法以 SYS 身份连接。如果我想以创建的用户身份连接,我还需要...
授予 myuser 创建会话;
然后,关闭 internal_logon jdbc 参数。
推荐阅读
- mongodb - 索引查询计数能否触发“Mongo 查询目标:扫描对象/返回”警报?
- csv - 双引号值不再转义 CSV 中的逗号
- java - Java ForkJoinPool 线程限制还是 Java 流替代?
- google-bigquery - 使用云控制台将 csv 文件加载到 BQ 表
- html - 如何在 CSS 伪元素之前/之后控制图像
- python-3.x - 未找到模块没有名为“安全”烧瓶的模块
- watchos - 在应用程序打开时在 watchOS 上检测新的一天
- pandas - 如何在 Pandas 中对面板数据集的行求和和平均?
- r - 如何使用闪亮和传单创建空间数据
- windows - SQLite 错误参数或其他 API 滥用