我正在使用docker映像通过docker-compose文件启动和运行Oracle数据库。我还创建了应用程序的dmp文件,并能够使用docker exec -it
命令将其导入docker上的oracle服务器。
但是,每次我重新启动Docker容器时,数据都会丢失,并且我需要通过在Docker容器中的Oracle服务器上执行bash来再次完成导入dmp文件的整个过程。
有什么方法可以将数据保存到在Docker容器上运行的Oracle数据库服务器中?我尝试了docker commit,但是没有用。
我需要使用这些volume
位吗?
您是正确的,将需要卷。这是在我的设置中工作的完整示例。
我的体积映射为: -v /Users/klrice/workspace/dockerdb/data:/opt/oracle/oradata
然后是oracle目录: DIRECTORY docker_vol AS '/opt/oracle/oradata';
来自主机的expdp cmd: docker exec -it db_193 expdp klrice/klrice@xe tables=t1 directory=docker_vol dumpfile=klrice.dmp logfile=klrice_exp.log
结果文件位于主机映射的位置: /Users/klrice/workspace/dockerdb/data
docker run --name db_193 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \
-p 1521:1521 \
-p 8000:8000 \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=xe \
-e ORACLE_PWD=oracle \
-e ORACLE_CHARACTERSET=UTF8 \
-v /Users/klrice/workspace/dockerdb/data:/opt/oracle/oradata \
oracle/database:19.3.0-ee
kriss-MacBook-Pro:dockerdb klrice$ sql system/oracle@//localhost:1521/xe
SQLcl: Release 19.4 Production on Mon Nov 11 11:44:47 2019
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Mon Nov 11 2019 11:44:48 -05:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> CREATE OR REPLACE DIRECTORY docker_vol AS '/opt/oracle/oradata';
Directory DOCKER_VOL created.
SQL> GRANT READ, WRITE ON DIRECTORY docker_vol TO klrice;
Grant succeeded.
SQL>
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
kriss-MacBook-Pro:dockerdb klrice$ docker exec -it db_193 expdp klrice/klrice@xe tables=t1 directory=docker_vol dumpfile=klrice.dmp logfile=klrice_exp.log
Export: Release 19.0.0.0.0 - Production on Mon Nov 11 16:45:01 2019
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Starting "KLRICE"."SYS_EXPORT_TABLE_01": klrice/********@xe tables=t1 directory=docker_vol dumpfile=klrice.dmp logfile=klrice_exp.log
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
Processing object type TABLE_EXPORT/TABLE/TABLE
. . exported "KLRICE"."T1" 6.680 MB 1000000 rows
Master table "KLRICE"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for KLRICE.SYS_EXPORT_TABLE_01 is:
/opt/oracle/oradata/klrice.dmp
Job "KLRICE"."SYS_EXPORT_TABLE_01" successfully completed at Mon Nov 11 16:45:15 2019 elapsed 0 00:00:13
kriss-MacBook-Pro:dockerdb klrice$ ls /Users/klrice/workspace/dockerdb/data/klrice*
/Users/klrice/workspace/dockerdb/data/klrice.dmp /Users/klrice/workspace/dockerdb/data/klrice_exp.log
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句