连接到 Oracle 数据库

来自 Alpine Linux

由于驱动程序是为 GNU libc 编译的且是专有的,因此似乎无法直接连接到 Oracle 数据库。但是,可以使用 Docker 连接到数据库。镜像也是专有的,因此需要 docker login,并且必须完成 https://hub.docker.com/_/oracle-instant-client 上的“Proceed to Checkout”(继续结账)。

创建环境

首先,创建容器并挂载当前目录

docker run --name okcli -v ${PWD}:/data -d -e LC_CTYPE=en_US.UTF-8 store/oracle/database-instantclient:12.2.0.1 sh -c "yum update -y && yum install -y python3-pip util-linux vim && pip3 install okcli && tail -f /dev/null"

您可以通过运行以下命令检查安装是否完成

docker logs -f okcli

现在,每当您需要连接到数据库时,运行以下命令

docker restart okcli && docker exec -it okcli sh -c "cd /data && sh"

选项 1:使用 okcli 连接

okcli 是一个自由的 CLI,用于访问 Oracle 数据库。您现在可以通过在上面的提示符中输入以下命令来使用它进行连接

okcli 'myusername/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=141.62.75.20)(Port=1521))(CONNECT_DATA=(SID=DB1)))'

您可以像这样在您上面挂载的目录中运行脚本

okcli 'myusername/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=141.62.75.20)(Port=1521))(CONNECT_DATA=(SID=DB1)))' -@ myscript.sql

选项 2:使用 SQL Plus 连接

SQL Plus 是专有的 CLI,用于访问 Oracle 数据库。您现在可以通过在上面的提示符中输入以下命令来使用它进行连接

sqlplus 'myusername/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=141.62.75.20)(Port=1521))(CONNECT_DATA=(SID=DB1)))'

您可以像这样在您上面挂载的目录中运行脚本

sqlplus 'myusername/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=141.62.75.20)(Port=1521))(CONNECT_DATA=(SID=DB1)))' @myscript.sql