zCloud 中 Oracle 实例状态未知问题记录

大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。

@TOC

前言

使用 zCloud 纳管 Oracle 数据库后,发现是 <实例可连接状态> 一直都是 未知 状态:

首先排除数据库本身问题,使用本地使用客户端连接:

bash 复制代码
## 可以正常连接,没有问题
[oracle@rhel8:/home/oracle]$ sqlplus system/oracle@192.168.6.220/lucifer

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Aug 20 10:24:23 2024
Version 19.24.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

system@LUCIFER 2024-08-20 10:24:24>

出于好奇在群里寻找官方咨询后,得出答案是因为 zCloud 容器内部缺少依赖包:libaio,以下记录一下问题分析过程,如有遇到相同问题的可以参照以下方式进行解决。

问题分析

首先,查看 Prometheus:在浏览器输入,IP:8093:

查看 oracle-hr:

本来是想通过 http://172.18.0.2:8203/metrics-hr2 查看日志,但是由于是容器内部的网络,Proxy 里面的oracle-exporter 没有放开,所以无法在外部打开,所以需要进入容器内部,去查看 oracle-exporter 的日志,看看是什么原因导致数据库确实链接不上。

进入 zCloud 容器内部:

bash 复制代码
## 查看容器
[root@zcloud ~]# docker ps -a
CONTAINER ID   IMAGE                     COMMAND                  CREATED        STATUS                  PORTS                                                                                                                                                                                                                                                                                                                                                 NAMES
79d21622a6c6   zcloud_with_mysql:6.2.1   "/bin/sh -c $HOME/in..."   21 hours ago   Up 21 hours (healthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8093->8093/tcp, :::8093->8093/tcp, 0.0.0.0:8100-8101->8100-8101/tcp, :::8100-8101->8100-8101/tcp, 0.0.0.0:8200-8201->8200-8201/tcp, :::8200-8201->8200-8201/tcp, 0.0.0.0:8215->8215/tcp, :::8215->8215/tcp, 0.0.0.0:8500->8500/tcp, :::8500->8500/tcp, 0.0.0.0:8761->8761/tcp, :::8761->8761/tcp   zcloud
b1064b92f817   mysql_for_z:5.7.44        "/home/mysql/init.sh"    21 hours ago   Up 21 hours (healthy)   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp                                                                                                                                                                                                                                                                                                             mysql_for_zcloud
## 进入 zCloud 容器内部
[root@zcloud soft]# docker exec -it zcloud bash
[zcloud@79d21622a6c6 ~]$

找到 oracle-exporter 日志:

bash 复制代码
[zcloud@79d21622a6c6 ~]$ ls
check.sh  config.properties  data  dbaas  init  init.sh  libs  proxy  rpms  sqls
[zcloud@79d21622a6c6 ~]$ cd proxy/
[zcloud@79d21622a6c6 proxy]$ ls
chisel  common  exporters        insight         log   notRootMonitor          notRoot.sh  proxy            rceEngine    root.sh       winrm              zcloud_proxy_nginx        zcloud_zdbmon_collector
chitu   config  firewallPort.sh  java-io-tmpdir  logs  notRootProxyOperate.sh  obClient    proxyOperate.sh  redisClient  updateEnv.sh  zcloud_mysql_soar  zcloud_slowmon_collector  zcloud_zoramon
[zcloud@79d21622a6c6 proxy]$ cd log
[zcloud@79d21622a6c6 log]$ ls
chisel.log            proxy_info.log                        zcloud_custom_sql_exporter_info_2024-08-19.0.log.zip  zcloud_db2_exporter.log      zcloud_mysql_exporter.log                  zcloud_oracle_exporter.log        zcloud_redis_exporter.log     zcloud_zoramon_collector.log
monitor.log           zcloud_commondb_exporter.log          zcloud_custom_sql_exporter_info.log                   zcloud_mongodb_exporter.log  zcloud_node_exporter_2024-08-19.0.log.zip  zcloud_postgres_exporter.log      zcloud_slowmon_collector.log
proxy_info.1.log.zip  zcloud_custom_sql_exporter_error.log  zcloud_custom_sql_exporter_warn.log                   zcloud_mssql_exporter.log    zcloud_node_exporter.log                   zcloud_rce_engine_20240819_1.log  zcloud_zdbmon_collector.log

打开 oracle-exporter 日志,发现是 Docker 里面缺少一个依赖(BUG):

bash 复制代码
## 报错消息,提示:libclntsh.so: cannot open shared object file: No such file or directory
time=2024-08-20 10:33:20 level=info  file=oracle_common.go:584    msg=97189ea4-17b7-412a-a6a7-a51b0d7959a2->6876,query connection count failed
time=2024-08-20 10:33:20 level=error file=oracle_exporter.go:696  id=97189ea4-17b7-412a-a6a7-a51b0d7959a2 instance=lucifer type=exporter_hr2 msg=97189ea4-17b7-412a-a6a7-a51b0d7959a2->6876,collect connectCount error:ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "/home/zcloud/proxy/common/instantclient_12_1/lib/libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help

需要在 zCloud 容器内部安装缺少的依赖包 libaio 进行修复。

解决方案

上传并安装 libaio 依赖包:

libaio 依赖包下载地址:libaio-0.3.109-13.el7.x86_64.rpm

bash 复制代码
## 上传 libaio 依赖包
[root@zcloud ~]# cd /soft/
[root@zcloud soft]# ll libaio-0.3.109-13.el7.x86_64.rpm
-r--r--r--. 1 root root      24744 Aug 20 10:32 libaio-0.3.109-13.el7.x86_64.rpm
drwxr-xr-x. 3 root root        180 Aug 19 13:35 zCloud_6.2.1.1_For_Personal_mysql_X86_20240809_1504
-rw-r--r--. 1 root root 4133808651 Aug 18 23:05 zCloud_6.2.1.1_For_Personal_mysql_X86_20240809_1504.tar.gz
drwxr-xr-x. 3 root root        180 Aug  5 09:33 zCloud_6.2.1_For_Personal_mysql_X86_20240730_1657
-rwxr-xr-x. 1 root root 4123537621 Aug  5 09:30 zCloud_6.2.1_For_Personal_mysql_X86_20240730_1657.tar.gz
## 拷贝到 zCloud 容器内部
[root@zcloud soft]# docker cp /soft/libaio-0.3.109-13.el7.x86_64.rpm zcloud:/tmp/libaio-0.3.109-13.el7.x86_64.rpm
Successfully copied 26.6kB to zcloud:/tmp/libaio-0.3.109-13.el7.x86_64.rpm
## 执行安装
[root@zcloud soft]# docker exec -u root -it zcloud rpm -ivh /tmp/libaio-0.3.109-13.el7.x86_64.rpm
warning: /tmp/libaio-0.3.109-13.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:libaio-0.3.109-13.el7            ################################# [100%]

安装完成后,再次查看实例状态(已恢复正常,显示可连接):

查看 oracle-exporter 日志:

bash 复制代码
## 没有报错日志出现
time=2024-08-20 10:46:14 level=info  file=oracle_common.go:323    msg=97189ea4-17b7-412a-a6a7-a51b0d7959a2->99183,period:lr2,instance:[97189ea4-17b7-412a-a6a7-a51b0d7959a2],permit to create long connection
time=2024-08-20 10:46:14 level=info  file=oracle_common.go:340    msg=97189ea4-17b7-412a-a6a7-a51b0d7959a2->99183,period:lr2,instanceUUID:97189ea4-17b7-412a-a6a7-a51b0d7959a2,isHr2:[false],create connection , start...

至此,问题已解决,该 BUG 暂时可以按以上方式进行临时处理,会在下个 zCloud 更新版本中完全修复。


往期精彩文章推荐

一篇文章让你彻底掌握 Python 🔥 一篇文章让你彻底掌握 Shell 🔥 Oracle 监控 EMCC 13.5 安装部署超详细教程 🔥 Oracle 一键巡检自动生成 Word 报告 🔥 Oracle一键安装脚本的 21 个疑问与解答 🔥 Oracle一键巡检脚本的 21 个疑问与解答 🔥 全网首发:Oracle 23ai 一键安装脚本 🔥 Oracle 19C 最新 RU 补丁 19.24 ,一键安装! 🔥 Oracle Linux 6 一键安装 Oracle 11GR2 RAC Oracle Linux 7.9 一键安装 Oracle 19C Oracle Linux 8.9 一键安装 Oracle 19C RAC Oracle Linux 9.4(aarch64) 一键安装 Oracle 19C 🔥 openEuler 20.03 LTS SP4 一键安装 Oracle 19C 🔥 openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC RHEL 7.9 一键安装 Oracle 19C 19.23 RAC Redhat 8.4 一键安装 Oracle 11GR2 RedHat 9.4(aarch64) 一键安装 Oracle 19C 龙蜥 Anolis 7.9 一键安装 Oracle 19C 19.23 龙蜥 Anolis OS 8.8 一键安装 Oracle 19C SUSE 15 SP5 一键安装 Oracle 19C 统信 UOS V20 1070(a) 一键安装 Oracle 11GR2 Ubuntu 22.04 一键安装 Oracle 19C Ubuntu 14.04 一键安装 Oracle 19C 银河麒麟 Kylin V10 SP3 一键安装 Oracle 19C 🔥 银河麒麟 Kylin V10 SP3 一键安装 Oracle 11GR2 RAC Oracle DataGuard GAP 修复手册 🔥 优化 Oracle:最佳实践与开发规范 DBA 必备:Linux 软件源配置全攻略 🔥 Linux 一键配置时钟同步全攻略 🔥 Starwind 配置 ISCSI 共享存储 SUSE 15 SP3 安装 Oracle 19C RAC 数据库 达梦 8 数据库安装手册 🔥 Oracle 12CR2 RAC 安装避坑宝典 Linux7 安装 Oracle 19C RAC 详细图文教程 🔥 Oracle ADG 搭建 RAC to Single 详细教程 Oracle DataGuard GAP 修复手册 🔥 Oracle 分区表之在线重定义 AutoUpgrade 快速升级 Oracle 数据库 Oracle 数据库巡检命令手册 🔥 Oracle 数据坏块的 N 种修复方式 🔥 数据库 SQL 开发入门教程 超全 Linux 基础命令总结 🔥 VMware 虚拟机安装 Linux 系统 Linux 安装 MySQL 详细教程 教你玩转 SQLPLUS,工作效率提升 200%


感谢您的阅读,这里是 Lucifer三思而后行 ,欢迎 点赞+关注,我会持续分享数据库知识、运维技巧。


📚 推荐阅读:DBA 学习之路

如果这篇文章对你有帮助,推荐访问我的 Oracle DBA 系统学习站点,涵盖 100 天完整学习路线:

  • 🔧 Oracle 安装部署 · RMAN 备份恢复 · Data Pump 数据迁移
  • 🏗️ RAC 高可用 · DataGuard 容灾 · 多租户架构
  • 🔍 故障排查 · 升级迁移 · GoldenGate 数据同步

👉 立即访问 ora100.com →

相关推荐
稷下元歌11 分钟前
七天学会plc 加机器视觉完整笔记:S7-1200 数据类型、存储区与寻址方式(I/Q/M/DB 详解)。
网络·数据库·笔记
潮起鲸落入海18 分钟前
mysql 5.x源码安装
数据库·mysql
phltxy32 分钟前
MCP 从协议到 Spring AI 实战
人工智能·spring·oracle
睡不醒男孩0308231 小时前
第一篇:多云与多模态时代的企业级数据库云管理平台(DBaaS)选型指南
数据库·clup·中启乘数
小二·1 小时前
向量数据库实战
数据库
炘爚1 小时前
Phase 5:MySQL 连接池
数据库·mysql
j_xxx404_2 小时前
MySQL库操作硬核解析:字符集、校验规则、大小写比较、备份恢复与连接排查
运维·服务器·数据库·人工智能·mysql·ai·oracle
minji...2 小时前
MySQL数据库 (五) MySQL表的约束(上),非空约束,默认值约束,零填充约束,主键约束,符合主键
数据库·mysql·表的约束·主键约束·非空约束·复合主键·零填充约束
拾贰_C2 小时前
【python | installation 】python 安装 | Windows | 命令使用
linux·数据库·ubuntu
贺今宵2 小时前
Vue 3 + Capacitor 使用jeep-sqlite,web端使用本地sqlite数据库
前端·数据库·vue.js·sqlite·web