连接到 Oracle 数据库
由于驱动程序是为 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