近日在给某家Tableau客户安装Tableau Serve测试环境时,遇到了Oracle驱动的问题,在官方说明基础上,额外增加了其他步骤最终完成。这里说明如下。
基于如下官方知识库增补。
Tableau知识库:连接到 Oracle 时出现“clntsh not found”错误
问题
加载连接到 Oracle 数据库的视图时,可能会出现以下错误:
The drivers necessary to connect to the database server ” are not properly installed on Tableau Server. Visit http://www.tableau.com/drivers to download driver setup files.
clntsh not found
Unable to connect to the server “[SERVER NAME]”. Check that the server is running and that you have access privileges to the requested database.
(Tableau Server 上未正确安装连接到数据库服务器 ” 所必需的驱动程序。请访问 http://www.tableau.com/zh-cn/drivers 下载驱动程序安装文件。
找不到 clntsh
无法连接到服务器“[服务器名称]”。请检查服务器是否正在运行,并且您具有所请求的数据库的访问权限。)
环境
- Tableau Server
- Linux
- Oracle
解决方案
步骤 1
确保安装了 Oracle 驱动程序。(包括超链接)
【喜乐君说明】这里按照官方驱动网站说明,下载了jdbc驱动,并放在了Linux指定路径下。但是并没有完全解决,后面会继续说明。

步骤 2
手动安装缺少的依赖项。
- 在 Tableau Server 计算机上,运行命令: ldd /opt/tableau/tableau_driver/oracle/libclntsh.so.12.1
- 在输出中,记下找不到哪些依赖项。
- 手动安装缺少的依赖项。
- 通过运行步骤 1 中相同的命令来验证是否安装了所有依赖项。
【喜乐君增补说明】
按照上面的做法,遇到的第一个问题是,没有找到 /opt/tableau/tableau_driver/oracle/libclntsh.so.12.1这个文件。
最后,我们不得不从其他安装过oracle完整驱动的地方,拷贝了一个来。如下所示:

之后就可以执行ldd命令了,发现两个缺失的依赖。

第二个问题是,安装缺失的依赖时,反复提示没有源。

迫不得已,我最后尝试从oracle官网下载完整版的oracle驱动,它针对odbc,不过似乎也包含jdbc的支持。官方截图如下:
官方地址如下 https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html

之后使用wget下载该驱动,然后yum安装。
虽然折腾了一段时间,尝试把缺少的文件转移到opt下,后来发现似乎是不需要的。
这个时候再去tableau server连接oracle,已经不再提示驱动错误了。可能与软连接有关吧。

步骤 3
确保已设置了所有必需的环境变量。
若要配置环境变量,请参见 Oracle 网站上的 Environment Variables Reference for Linux(Linux 环境变量参考)。
原因
缺少所需的 Oracle 驱动程序,并且/或者缺少一些依赖项或环境变量。
其他信息
安装依赖项:
大多数情况下,缺少的依赖项为 libaio。
若要在 Ubuntu 上安装缺少的依赖项,请在终端中运行以下命令:
sudo apt get install libaio1
来源:
Tableau知识库、喜乐君