1. 前言

需求:用BI平台抓取Oracle的数据进行实时展示

一般的平台都预置了Mysql、Sql Server等主流数据库的连接,基本只是输入账号密码的事情,但是Oracle普遍需要一些额外操作。

PowerBI无法很好的支持Oracle数据库的数据,而Grafana需要付费购买lisence,考察下来开源BI平台Superset能实现基本的需求,下面开始搭建过程记录。

2. 搭建指南

2.1 搭建Superset

Superset推荐用Docker进行搭建,下面是linux的过程
官网地址:官网
Github地址:Github
DockerHub地址:DockerHub

# 拉镜像
$ docker pull apache/superset

# 建容器
$ docker run -d -p 8080:8088 --name superset apache/superset

# 一些初始化设置
# With your local superset container already running...
# Setup your local admin account
$ docker exec -it superset superset fab create-admin \
              --username admin \
              --firstname Superset \
              --lastname Admin \
              --email admin@superset.com \
              --password admin

# Migrate local DB to latest
$ docker exec -it superset superset db upgrade

# Load Examples
$ docker exec -it superset superset load_examples

# Setup roles
$ docker exec -it superset superset init

# Login and take a look -- navigate to http://localhost:8080/login/ -- u/p: [admin/admin]

建好之后如果登录 ip:8080即可登录搭建好的superset

2.2 安装Oracle客户端

superset官网提示,连接Oracle数据库需要安装一个python的oracle库叫cx_Oracle
然后如果要连接Oracle数据库,需要在容器内安装Oracle客户端,注意,是 容器内

先去官网下载Oracle客户端的安装包 Oracle Instant Client
我下的是21.6:
oracle-instantclient-basic-21.6.0.0.0-1.el8.x86_64.rpm
oracle-instantclient-devel-21.6.0.0.0-1.el8.x86_64.rpm
oracle-instantclient-sqlplus-21.6.0.0.0-1.el8.x86_64.rpm
oracle-instantclient-tools-21.6.0.0.0-1.el8.x86_64.rpm
下面开始敲命令

# 偷懒,就直接在容器里安装库了,或者你也可以写在dockerfile里,也能用compose,都行。
# 进入容器
$ docker exec -u 0 -it [containserID] /bin/bash  # 0 表示root

# 安装cx_Oracle库
$ pip3 install cx_Oracle

# 如果报错,安装对应的依赖就行(虽然下面的命令写的是强制...)
$ apt-get install libaio1

# 安装Oracle
$ rpm -ivh oracle-instantclient-basic-21.6.0.0.0-1.el8.x86_64.rpm  --nodeps --force
$ rpm -ivh oracle-instantclient-devel-21.6.0.0.0-1.el8.x86_64.rpm  --nodeps --force
$ rpm -ivh oracle-instantclient-sqlplus-21.6.0.0.0-1.el8.x86_64.rpm  --nodeps --force
$ rpm -ivh oracle-instantclient-tools-21.6.0.0.0-1.el8.x86_64.rpm  --nodeps --force

# 创建network/admin目录,用于存放tsn文件
$ mkdir -p /usr/lib/oracle/21/client64/network/admin

# 创建TNS文件
$ cd /usr/lib/oracle/21/client64/network/admin
$ vi tnsnames.ora

# 添加以下代码 
oradatadb=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = Oracle数据库IP)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = 数据库名)
    )
  )

# 配置环境变量
$ vi /etc/profile
添加以下内容
export  ORACLE_HOME=/usr/lib/oracle/21/client64
export  TNS_ADMIN=$ORACLE_HOME/network/admin
export  NLS_LANG=AMERICAN_AMERICA.UTF8
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib
export  PATH=$ORACLE_HOME/bin:$PATH
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

# 生效环境变量
$ source /etc/profile
$ echo $OARCLE_HOME

# 安装完成

2.3 重启superset容器

# 重启容器
$ docker restart [containerID]

3. 配置superset的database

oracle+cx_oracle://username:password@ip:1521/?service_name=数据名

以上。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐