2016-11-30 36 views
1

我在rancher操作系統上運行oracle-xe-11g。我想採取我的數據庫的數據備份。當我用命令如何從運行Docker容器獲取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.

+0

泊塢窗的主機,如果您在更換SH通過慶典你的命令? – user2915097

+0

我需要您的圖片名稱,以便我可以運行測試。 –

+0

docker run -d -name Oracle-DB -p 49160:22 -p 1521:1521 -e ORACLE_ALLOW_REMOTE = true wnameless/oracle-xe-11g 這是我爲Oracle db運行的命令db – Ritcha12

回答

2

的問題是: 當運行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

+1

完全相同的錯誤? –

+0

嘗試路徑獲取錯誤 未找到消息206;沒有產品= RDBMS的消息文件,f驗證是否正確設置了ORACLE_HOME 導出終止失敗 EXP-00000:未找到消息0;沒有消息文件的產品= RDBMS,facility = EXP [rancher @ ip-172-31-27-83〜] $ 然後試圖設置ORACLE_HOME也。但再次錯誤。 然後我寫容器內的腳本和它的運行成功。如果我嘗試與命令一起使用它不工作的命令 命令是:docker exec -it $ Container_Name bash -C「patth/to/script」 同上我得到的錯誤 – Ritcha12

+0

不,錯誤是 消息206不是發現;沒有產品= RDBMS的消息文件,facility = EXP:版本11.2.0.2。0 - 生產上週四12月1日十點40分55秒2016 版權所有(C)1982年,2009年,ORACL 導出實用程序名稱的格式無效 確認ORACLE_HOME是否正確設置 導出成功終止 EXP-00000 :消息0未找到;沒有消息文件的產品= RDBMS,facility = EXP [rancher @ ip-172-31-27-83〜 – Ritcha12

相關問題