【问题标题】:Cant connect to oracle db in docker with squirrel-sql无法使用 squirrel-sql 连接到 docker 中的 oracle db
【发布时间】:2018-12-18 13:26:07
【问题描述】:

我尝试在 docker (https://hub.docker.com/r/sath89/oracle-xe-11g/) 中连接到 oracle db 11。

使用命令启动docker:

docker run -d -p 8080:8080 -p 1521:1521 -e DEFAULT_SYS_PASS=sYs-p@ssw0rd sath89/oracle-xe-11g

从这个描述: 主机名:本地主机 端口:1521 sid: xe 用户名:系统 密码:甲骨文

做了一个网址 - jdbc:oracle:thin:@192.168.99.100:1521:xe

使用 squirrel-sql 有错误: 类 java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 发生错误 ORA-12705: 无法访问 NLS 数据文件或指定的环境无效

但如果我尝试连接 SQLplus 就可以了:

docker exec -ti oracle_id sqlplus bash

sqlplus

【问题讨论】:

标签: database oracle docker squirrel-sql


【解决方案1】:

SquirrelSQL 需要在登录前设置一些 NLS 变量。对于 Docker 连接,请注意命令末尾有“bash”。这不仅告诉连接您将使用 bash shell,它还设置环境以使用 bash_rc 进行连接(也可能是配置文件)。您来自本地计算机而不是 SSH,因此使用本地计算机而不是 SSH。

我相信有一个 squirrel-sql.bat 文件可以取消设置然后设置环境,或者更好,让我们在注册表中取消设置,让本地连接顺其自然: 在您的 Windows 机器上:

在注册表中搜索 NLS_LANG 子项:\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,重命名,保存更改,重新启动并重试。

【讨论】:

  • 感谢您的回复。我无法在注册表中搜索 NLS_LANG 子项:\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE。 NLS_LANG 仅在 Session Manager\Environment 中,我无法重命名。
【解决方案2】:

我不熟悉 Squirrel SQL,但您也可能缺少正确设置 jar 文件。看看你的 jar 文件是否配置正确,取决于你的版本,它看起来像这样:

%Oracle_\jdbc\lib\ojdbc.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多