首页 > 解决方案 > 如何在 Apache Superset 上安装 Oracle 驱动程序(没有 Internet 访问权限)

问题描述

我打开了这个问题,因为很多人都无法在 Apache Superset 上安装 Oracle 驱动程序,无论是否有互联网访问。

标签: oraclecx-oracleapache-supersetinstantclient

解决方案


要在 Apache Superset(没有 Internet 访问权限)上安装 Oracle 驱动程序,您需要:

  • 在 docker 容器上安装 cx_Oracle python 包
  • 在 docker 容器上安装 Oracle 客户端库

1.如何在docker容器上安装cx_Oracle python包(不能上网)

  • 下载 docker 容器 python 版本和架构的 cx_Oracle python 包 (WHL) ( cx_Oracle-8.2.1-cp37-cp37m-manylinux1_x86_64.whl ) 并将您的文件移动到/superser/docker/文件夹中。
  • /superset/docker/文件夹上创建一个requirements-local.txt并在其中添加/app/docker/cx_Oracle-8.2.1-cp37-cp37m-manylinux1_x86_64.whl
  • 就这样。当您使用docker-compose up命令时,该软件包将安装在 docker 容器上。

2.如何在docker容器上安装Oracle客户端库(不能上网)

  • 使用docker-compose down命令。
  • 从 Debian 网站下载libaio1_0.3.112-3_amd64.deb软件包。
  • 从 Oracle 网站 ( oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm )下载 Oracle 客户端库rpm包。
  • 在 linux 计算机上安装外星人( sudo apt-get install alien)。
  • 通过alien --to-deb oracle-instantclient-basic-21.1.0.0.0-1.x86_64.rpm命令,使用 alien 将你的rpm包转换为deb包。
  • 使用 docker -compose up命令启动 Apache Superset 。
  • 使用 docker container ls命令识别 Apache Superset docker 容器的 id 。
  • 使用 docker cp libaio1_0.3.112-3_amd64.deb [CONTAINER_ID]:/app/命令将您的libaio1_0.3.112-3_amd64.deb包移动到您的容器中。
  • 使用docker cp oracle-instantclient-basic-21.1.0.0.0-2_amd64.deb [CONTAINER_ID]:/app/命令将您的 Oracle 客户端库包移动到您的容器中。
  • 使用docker exec [CONTAINER_ID] dpkg -i /app/libaio1_0.3.112-3_amd64.deb命令在 docker 容器上安装软件包。
  • 使用docker exec [CONTAINER_ID] dpkg -i /app/oracle-instantclient-basic-21.1.0.0.0-2_amd64.deb命令在 docker 容器上安装软件包。
  • 就这样。您现在可以将 Apache Superset 连接到您的 Oracle 数据库。

推荐阅读