如何在 docker 容器内的 Oracle 数据库上使用 sqlplus?
How to use sqlplus on Oracle database inside a docker container?
我在 docker 环境中安装了 oracle db version 12c。
我使用了以下命令:
docker run -d --name oracle -p 8080:8080 -p 1521:1521 quay.io/maksymbilenko/oracle-12c
我连接到数据库,一切顺利,但我想启用统一审计。
为此,首先您必须关闭数据库,并且在我发现的所有说明中都说要使用 sqlplus,如下所示:
sqlplus / as sysoper
SQL> shutdown immediate
SQL> exit
我使用下一个命令成功连接到数据库:
docker exec -it oracle "bash"
然后我 运行 sqlplus 命令,我收到了 "command not found"
[root@f30cc670f85f /]# sqlplus / as sysoper
bash: sqlplus: command not found
我做错了吗?
我应该怎么做才能在我的 oracle 数据库上安装 sqlplus?
我寻找它,但没有找到任何对我有帮助的东西。
如果相关mac我有
我对 docker 没有任何经验,但它看起来就像您正在进入 bash 环境一样,所以我们有坚实的基础。返回的错误 ("bash: sqlplus: command not found") 只是意味着在您的 PATH 环境变量中列出的任何目录中都找不到可执行文件 (sqlplus),因为它存在于您的 shell 环境中。您实际上需要设置三个变量: ORACLE_SID 需要设置为您的数据库名称的值。 ORACLE_HOME 需要设置为安装 oracle 二进制文件的目录的值。并且 PATH 需要添加 $ORACLE_HOME/bin :
export PATH=$ORACLE_HOME/bin:$PATH
显然,由于您在设置PATH时使用了ORACLE_HOME的值,因此需要先设置ORACLE_HOME。
我认为 Docker 图像 只是数据库 而 OS 到 运行 数据库就足够了。我认为它不包括客户端软件,例如 SQL*Plus.
您需要在 Mac 上安装 SQL*Plus。如果您还没有,请下载 the Oracle Instant Client for MacOS including the SQL*Plus extension. Or why not treat yourself and install the new-fangled sqlCL tool? It is easier to install and has all the SQL*Plus capabilities and a whole bunch more features. Find it here.
无论您选择什么客户端,一旦它安装在您的 Mac 上,您就可以 运行 它像任何其他应用程序一样:当提示连接时,您输入 the string Maksym provides:
system/oracle@//localhost:1521/xe
如果您需要以 sys 身份连接,如下所示:
sys/oracle@//localhost:1521/xe as sysdba
获取 .bashrc 应该可以作为 sysdba 连接到 sqlplus。
docker-compose exec db bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"
使用docker镜像时store/oracle/database-enterprise:12.2.0.1-slim sqlplus和sqlldr工具仅在容器启动后可用。
您不能在 Dockerfile 中执行以下操作:
RUN sqlplus sys/password AS SYSDBA @create_database.sql
容器映像可以在安装后和启动时配置为 运行 脚本。目前支持 sh 和 sql 扩展。
在您的 Dockerfile 中,将 SQL 脚本复制到启动目录中:
COPY create_database.sql /opt/oracle/scripts/setup/01_create_database.sql
数据库将在容器首次启动时创建。
有了这个,你输入图像:
docker exec -it oracle /bin/bash
之后,您可以使用:
sqlplus sys as sysdba
对于Windows OS:
在命令行中键入 docker ps
以显示 运行 个容器并检查容器 ID。
类型docker exec -it container_id //bin/bash
通过sqlplus
命令登录
或者最简单的方法
docker exec -it container_id bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"
更多信息在这里:https://hub.docker.com/u/cgmmathaw/content/sub-90f0c051-b514-4b7b-a0fe-fc9d6f2172fa
我在 docker 环境中安装了 oracle db version 12c。 我使用了以下命令:
docker run -d --name oracle -p 8080:8080 -p 1521:1521 quay.io/maksymbilenko/oracle-12c
我连接到数据库,一切顺利,但我想启用统一审计。 为此,首先您必须关闭数据库,并且在我发现的所有说明中都说要使用 sqlplus,如下所示:
sqlplus / as sysoper
SQL> shutdown immediate
SQL> exit
我使用下一个命令成功连接到数据库:
docker exec -it oracle "bash"
然后我 运行 sqlplus 命令,我收到了 "command not found"
[root@f30cc670f85f /]# sqlplus / as sysoper
bash: sqlplus: command not found
我做错了吗? 我应该怎么做才能在我的 oracle 数据库上安装 sqlplus? 我寻找它,但没有找到任何对我有帮助的东西。
如果相关mac我有
我对 docker 没有任何经验,但它看起来就像您正在进入 bash 环境一样,所以我们有坚实的基础。返回的错误 ("bash: sqlplus: command not found") 只是意味着在您的 PATH 环境变量中列出的任何目录中都找不到可执行文件 (sqlplus),因为它存在于您的 shell 环境中。您实际上需要设置三个变量: ORACLE_SID 需要设置为您的数据库名称的值。 ORACLE_HOME 需要设置为安装 oracle 二进制文件的目录的值。并且 PATH 需要添加 $ORACLE_HOME/bin :
export PATH=$ORACLE_HOME/bin:$PATH
显然,由于您在设置PATH时使用了ORACLE_HOME的值,因此需要先设置ORACLE_HOME。
我认为 Docker 图像 只是数据库 而 OS 到 运行 数据库就足够了。我认为它不包括客户端软件,例如 SQL*Plus.
您需要在 Mac 上安装 SQL*Plus。如果您还没有,请下载 the Oracle Instant Client for MacOS including the SQL*Plus extension. Or why not treat yourself and install the new-fangled sqlCL tool? It is easier to install and has all the SQL*Plus capabilities and a whole bunch more features. Find it here.
无论您选择什么客户端,一旦它安装在您的 Mac 上,您就可以 运行 它像任何其他应用程序一样:当提示连接时,您输入 the string Maksym provides:
system/oracle@//localhost:1521/xe
如果您需要以 sys 身份连接,如下所示:
sys/oracle@//localhost:1521/xe as sysdba
获取 .bashrc 应该可以作为 sysdba 连接到 sqlplus。
docker-compose exec db bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"
使用docker镜像时store/oracle/database-enterprise:12.2.0.1-slim sqlplus和sqlldr工具仅在容器启动后可用。 您不能在 Dockerfile 中执行以下操作:
RUN sqlplus sys/password AS SYSDBA @create_database.sql
容器映像可以在安装后和启动时配置为 运行 脚本。目前支持 sh 和 sql 扩展。
在您的 Dockerfile 中,将 SQL 脚本复制到启动目录中:
COPY create_database.sql /opt/oracle/scripts/setup/01_create_database.sql
数据库将在容器首次启动时创建。
有了这个,你输入图像:
docker exec -it oracle /bin/bash
之后,您可以使用:
sqlplus sys as sysdba
对于Windows OS:
在命令行中键入 docker ps
以显示 运行 个容器并检查容器 ID。
类型docker exec -it container_id //bin/bash
通过sqlplus
命令登录
或者最简单的方法
docker exec -it container_id bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"
更多信息在这里:https://hub.docker.com/u/cgmmathaw/content/sub-90f0c051-b514-4b7b-a0fe-fc9d6f2172fa