如何在 docker 容器内的 Oracle 数据库上使用 sqlplus?

问题描述 投票:0回答:7

我在我的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 命令,我收到“找不到命令”

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

我做错了吗? 我应该怎么做才能在我的 oracle 数据库上安装 sqlplus? 我找了找,但没有找到任何对我有帮助的东西。

如果相关的话,我有 mac

database oracle docker sqlplus unified-log
7个回答
4
投票

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

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

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

sqlplus user/password@ip:port/service-name
sqlplus system/oracle@//localhost:1521/xe 

如果您需要像这样连接为 sys:

sqlplus sys/oracle@//localhost:1521/xe as sysdba

3
投票

获取 .bashrc 应该可以作为 sysdba 连接到 sqlplus。

docker-compose exec db bash -c "source /home/oracle/.bashrc; sqlplus sys/Oradoc_db1@ORCLCDB as sysdba;"


3
投票

有了这个,你输入图像:

docker exec -it oracle /bin/bash

之后,您可以使用:

sqlplus sys as sysdba

1
投票

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

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


1
投票

对于 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://docs.oracle.com/en/database/oracle/oracle-database/21/deeck/index.html#DEEDK-GUID-EDA557B2-B0D6-45E1-8FBD-C1D756803982


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。


0
投票

你应该连接到oracle帐户

su -oracle
sqlplus / as sysdba
© www.soinside.com 2019 - 2024. All rights reserved.