我从官方 dockerfile运行 Oracle Database 12.2.0.1。据我所知,如果我这样做
docker stop <container_id>
Run Code Online (Sandbox Code Playgroud)
数据库的当前状态丢失,下次它将做一些干净的启动。
如何正确关闭数据库并停止容器,但保存当前状态?
如果我做
./sqlplus sys as sysdba
SHUTDOWN IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
容器仍在运行并且仍然消耗 11GB 的 16GB RAM,所以据我所知,为了停止容器,我可能应该杀死一些进程,但不清楚我应该什么时候做
docker commit <container_id>
Run Code Online (Sandbox Code Playgroud)
所以理想情况下我需要类似 shutdown_oracle_and_commit_container.sh 的东西。
在 docker 容器中,oracle 实例以 runOracle.sh 启动,但没有 stopOracle.sh
您应该使用 docker卷将数据库中的数据存储在容器外。因此,使用该-v选项并将您喜欢的任何路径安装到/opt/oracle/oradata容器内以存储数据。
从文档:
-v /opt/oracle/oradata
用于数据库的数据量。
容器内的Unix“oracle”(uid:54321)用户必须可写!
如果省略,数据库将不会在容器重新创建时持久化。
所以根据那个运行:
docker run -v /path/to/your/datastore/:/opt/oracle/oradata oracle/database
Run Code Online (Sandbox Code Playgroud)
数据库中的数据现在存储在容器外。如果您使用docker stop <container_id>甚至docker rm <container_id>并且您再次重新创建容器,您的数据将是相同的。有关更多信息和配置参数,请参阅文档。
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |