gpt4 book ai didi

docker - 如何从运行的Docker容器中获取Oracle-xe-11g备份

转载 作者:行者123 更新时间:2023-12-02 19:10:07 26 4
gpt4 key购买 nike

我在rancher os上运行oracle-xe-11g。我要备份数据库的数据。当我尝试使用命令

docker exec -it $Container_Name /bin/bash

然后我输入:
exp userid=username/password file=test.dmp

它工作正常,并创建了 test.dump文件。

但是我想用 docker exec命令本身运行该命令。当我尝试此命令时:
docker exec $Container_Name sh -C exp userid=username/password file=test.dmp

我收到此错误消息: sh: 0: Can't open exp.

最佳答案

问题是:
当使用bash开关运行-c时,它不是作为交互式或登录shell运行的,因此bash将不会读取相同的启动脚本。 /etc/profile~/.bash_profile~/.bash_login~/.profile中设置的任何内容都将被跳过。

解决方法:

使用以下命令运行容器:

sudo docker run -d --name Oracle-DB -p 49160:22 -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true -e ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe -e PATH=/u01/app/oracle/product/11.2.0/xe/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -e ORACLE_SID=XE -e SHLVL=1 wnameless/oracle-xe-11g

我正在做的是使用 docker指定容器中设置的环境变量。

现在用于生成备份文件:
sudo docker exec -it e0e6a0d3e6a9 /bin/bash -c "exp userid=system/oracle file=/test.dmp"

请注意,该文件将在容器内创建,因此您需要通过 docker cp command将其复制到Docker主机

关于docker - 如何从运行的Docker容器中获取Oracle-xe-11g备份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40884394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com