【问题标题】:How to health check oracle docker container where import (impdp) of data is running如何对运行数据导入(impdp)的oracle docker容器进行健康检查
【发布时间】:2021-05-27 17:15:36
【问题描述】:

我有一个 oracle docker 容器,其中转储的导入必须使用 impdp 命令运行。导入成功完成且没有错误后,容器应该变得健康并且应该开始下一个过程。有没有办法定义一些查询/命令来告诉导入已完成 -> 容器是健康的。

到目前为止我已经尝试过:

    healthcheck:
        test: ["CMD", "bash", "-c", "echo 'SELECT * FROM V\$VERSION;' | sqlplus / as sysdba"]
        interval: 20s
        timeout: 20s
        retries: 60

但问题是,当导入仍在执行时,容器变得健康。实际上,我只想在导入成功完成时将容器的健康状态关联为“健康”,否则不健康。

【问题讨论】:

  • 假设impdp 进程在容器内运行,听起来您希望您的测试是您是否看到该可执行文件运行而不是针对数据库的查询。
  • 可以查询datapump状态:dba_datapump_jobs

标签: oracle docker docker-compose impdp


【解决方案1】:

一种方法是尝试将impdp 的标准监控用作described in oracle forumin this blog,并从中构建健康检查。

您可以使用count(*) 来查看有多少数据泵进程正在运行,一旦计数为0,您就很健康。在一行中完成这将是冗长和复杂的,因此编写为小脚本(bash、python、...)会有所帮助。

为了使检查更加稳健,请等待数据导入过程开始 (count > 0),然后等待完成 (count = 0),以避免在数据导入开始之前脚本已运行的情况。

作为替代方案,您可以使用ps 检查进程是否仍在运行。基于this blog,进程名称将是expdp,但是您可以验证您的案例的正确进程名称是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多