我试图在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
根据此描述: 主机名:localhost 端口:1521 sid:xe 用户名:system 密码:oracle
创建了一个网址-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
答案 0 :(得分:0)
在登录之前,SquirrelSQL需要设置一些NLS变量。对于Docker连接,请注意,命令末尾有“ bash”。这不仅告诉连接您将使用bash shell,还设置了使用bash_rc(也可能是配置文件)进行连接的环境。您来自本地计算机而不是SSH,因此使用的是本地计算机而不是SSH。
我相信有一个squirrel-sql.bat文件可以取消设置,然后设置环境或更佳的环境,让我们在注册表中取消设置,让本地连接正常进行: 在Windows机上:
在注册表中搜索NLS_LANG子项:\ HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE,对其进行重命名,保存更改,重新启动并重试。
答案 1 :(得分:0)
我对Squirrel SQL不熟悉,但是您可能还缺少对jar文件的正确设置。查看并查看您的jar文件是否配置正确(取决于您的版本),看起来像这样:
%Oracle_ \ jdbc \ lib \ ojdbc.jar