步骤是首先在dockers容器内 写一个dump.sh的脚本。用于exp 数据库文件。然后在宿主机里新建一个oracle.sh脚本,用于调用容器内的dump.sh脚本 和 将容器内exp导出的dump文件复制到宿主机里,用crontab 设置定时调用oracle.sh文件。现在宿主机内的oracle.sh手动是可以运行的,crontab也可以看出是定时运行。但是目录里就是没有最新的dump文件
定时备份Docker容器内Oracle失败的原因可能有以下几个:
Docker容器内的Oracle实例无法被定时任务访问。定时任务是在宿主机上运行的,默认情况下无法访问Docker容器内的服务和资源。需要在启动Docker容器时使用--privileged=true选项,或映射宿主机和容器内的Oracle数据目录实现访问。
cron任务的用户没有权限访问Docker或相关目录。定时任务如果使用root用户则一般没有这个问题,但如果使用普通用户需要确保用户有访问Docker和相关文件的权限。这可能需要进行用户组设置或权限修改。
脚本语法错误或定时任务设置错误。需要检查oracle.sh脚本是否可以正确调用容器内脚本以及传输文件,也需要检查crontab的配置语法和时间设置是否正确。cron的时间设置容易出错,建议使用crontab -e命令修改而不是直接编辑crontab文件。
网络问题导致Docker容器或Oracle实例无法访问。如果策略设置不当,可能会造成定时任务、Docker和Oracle之间的网络访问出现问题,这也会导致备份失败。
Docker容器或Oracle数据目录满了。如果硬盘空间满了则会无法正常写文件,导致备份失败。需检查磁盘使用空间以及数据目录的可用空间。
所以,排查定时备份Dockers Oracle失败的步骤可以是: