如何对数据导入 (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,但是您可以验证您的案例的正确进程名称是什么。