如何对数据导入 (impdp) 运行 的 oracle docker 容器进行健康检查
How to health check oracle docker container where import (impdp) of data is running
我有一个 oracle docker 容器,其中转储的导入必须 运行 使用 impdp 命令。导入成功完成且没有错误后,容器应该变得健康,下一个过程应该开始。有没有办法定义一些 query/command 来表明导入已完成 -> 容器是健康的。
到目前为止我已经尝试过:
healthcheck:
test: ["CMD", "bash", "-c", "echo 'SELECT * FROM V$VERSION;' | sqlplus / as sysdba"]
interval: 20s
timeout: 20s
retries: 60
但问题在于,容器在导入仍在执行时变得健康。实际上我只想在导入成功完成时将容器的健康状态关联为“健康”,否则不健康。
一种方法是尝试使用 impdp 的标准监控作为 described in oracle forum or in this blog 并从中构建健康检查。
您可以使用 count(*)
查找 运行ning 的数据泵进程数,一旦计数为 0
,您就健康了。在一行中完成这将是冗长而复杂的,所以写成小脚本(bash、python、...)会有所帮助。
为了使检查更可靠,等待数据导入过程开始 (count > 0
),然后等待完成 (count = 0
) 以避免脚本有 运行 在数据导入开始之前。
作为替代方案,您可以使用 ps
检查进程是否仍在 运行ning。根据 this blog,进程名称将是 expdp
,但是您可以验证您的案例的正确进程名称是什么。
我有一个 oracle docker 容器,其中转储的导入必须 运行 使用 impdp 命令。导入成功完成且没有错误后,容器应该变得健康,下一个过程应该开始。有没有办法定义一些 query/command 来表明导入已完成 -> 容器是健康的。
到目前为止我已经尝试过:
healthcheck:
test: ["CMD", "bash", "-c", "echo 'SELECT * FROM V$VERSION;' | sqlplus / as sysdba"]
interval: 20s
timeout: 20s
retries: 60
但问题在于,容器在导入仍在执行时变得健康。实际上我只想在导入成功完成时将容器的健康状态关联为“健康”,否则不健康。
一种方法是尝试使用 impdp 的标准监控作为 described in oracle forum or in this blog 并从中构建健康检查。
您可以使用 count(*)
查找 运行ning 的数据泵进程数,一旦计数为 0
,您就健康了。在一行中完成这将是冗长而复杂的,所以写成小脚本(bash、python、...)会有所帮助。
为了使检查更可靠,等待数据导入过程开始 (count > 0
),然后等待完成 (count = 0
) 以避免脚本有 运行 在数据导入开始之前。
作为替代方案,您可以使用 ps
检查进程是否仍在 运行ning。根据 this blog,进程名称将是 expdp
,但是您可以验证您的案例的正确进程名称是什么。