我试图在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
从此描述:hostname:localhost port:1521 sid:xe username:system password:oracle
制作了一个url - jdbc:oracle:thin:@ 192.168.99.100:1521:xe
使用squirrel -sql时出错:class java.sql.SQLException:ORA-00604:递归SQL级别1发生错误ORA-12705:无法访问NLS数据文件或指定的无效环境
但是如果我尝试连接SQLplus就可以了:
docker exec -ti oracle_id sqlplus bash
sqlplus
2 回答
在登录之前,SquirrelSQL需要设置一些NLS变量 . 对于Docker连接,请注意在命令末尾有“bash” . 这不仅告诉连接你将使用bash shell,它还设置了使用bash_rc连接的环境(也可能是配置文件) . 您来自本地计算机而不是SSH,因此正在使用本地计算机而不是SSH .
我相信有一个squirrel-sql.bat文件可以取消设置然后设置环境或者更好,让我们在注册表中取消它,让本地连接顺其自然:在你的Windows机器上:
在注册表中搜索NLS_LANG子项:\ HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE,重命名,保存更改,重新启动并重试 .
我不熟悉Squirrel SQL,但您可能也错过了正确的jar文件设置 . 查看并查看您的jar文件是否配置正确,具体取决于您的版本,它看起来像这样:
%Oracle_ \ JDBC \ LIB \ ojdbc.jar