8

我在我的 docker 环境中安装了 oracle db 版本 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 命令,我收到“找不到命令”

[root@f30cc670f85f /]#   sqlplus / as sysoper
bash: sqlplus: command not found

我做错了吗?为了在我的 oracle DB 上安装 sqlplus,我应该怎么做?我寻找它并没有找到任何对我有帮助的东西。

如果相关,我有 mac

4

6 回答 6

3

我认为 Docker 映像只是数据库和足够的操作系统来运行数据库。我认为它不包括诸如 SQL*Plus 之类的客户端软件。

您需要在 Mac 上安装 SQL*Plus。如果您还没有,请下载适用于 MacOS 的 Oracle Instant Client,包括 SQL*Plus 扩展。或者为什么不善待自己并安装新奇的 sqlCL 工具呢?它更易于安装并具有所有 SQL*Plus 功能和一大堆更多功能。在这里找到它

无论您选择什么客户端,一旦它安装在您的 Mac 上,您就可以像任何其他应用程序一样运行它:当提示连接时,您提供Maksym 提供的字符串

system/oracle@//localhost:1521/xe 

如果您需要以 sys 身份连接,则如下所示:

sys/oracle@//localhost:1521/xe as sysdba
于 2019-11-14T14:08:09.347 回答
3

采购 .bashrc 应该可以作为 sysdba 连接到 sqlplus。 docker-compose exec db bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"

于 2020-06-22T23:12:38.097 回答
1

使用 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

数据库将在容器第一次启动时创建。

于 2021-02-11T16:59:31.800 回答
0

我对 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。

于 2019-11-14T13:15:02.480 回答
0

有了这个,你输入图像:

docker exec -it oracle /bin/bash

之后,您可以使用:

sqlplus sys as sysdba
于 2021-09-17T14:26:43.797 回答
0

对于 Windows 操作系统

键入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

于 2022-02-18T11:25:51.823 回答