什么鬼?主备同步正常,备库查询表空间使用结果却是空的?

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)
公众号:老苏畅谈运维
欢迎关注本人公众号,更多精彩与您分享。

"叮铃铃,叮铃铃”,一阵电话铃声响起,原来是客户打电话过来了,跟我说他在备库查看表空间使用情况,发现返回的结果是空的,但是在主库查询是正常的,让帮忙看看!挂掉电话,下意识是不是备库不正常了,数据不同步了?

查看主备同步情况

远程到客户的环境,查看了备库的alert日志,发现同步是正常的,也没有什么报错:

Mon Sep 23 15:33:38 2024
RFS[4]: Selected log 5 for thread 1 sequence 404 dbid 260591189 branch 1159358359
Mon Sep 23 15:33:38 2024
Archived Log entry 9 added for thread 1 sequence 403 ID 0x109c5354 dest 1:
Mon Sep 23 15:33:38 2024
Media Recovery Waiting for thread 1 sequence 404 (in transit)
Recovery of Online Redo Log: Thread 1 Group 5 Seq 404 Reading mem 0Mem# 0: /u01/oradata/dgora11g/stdredo02.log
Mon Sep 23 15:34:12 2024
Archived Log entry 10 added for thread 1 sequence 404 ID 0x109c5354 dest 1:
Mon Sep 23 15:34:12 2024
RFS[4]: Selected log 4 for thread 1 sequence 405 dbid 260591189 branch 1159358359
Mon Sep 23 15:34:12 2024
Media Recovery Waiting for thread 1 sequence 405 (in transit)
Recovery of Online Redo Log: Thread 1 Group 4 Seq 405 Reading mem 0Mem# 0: /u01/oradata/dgora11g/stdredo01.log
Mon Sep 23 15:34:29 2024
RFS[4]: Selected log 5 for thread 1 sequence 406 dbid 260591189 branch 1159358359
Mon Sep 23 15:34:29 2024
Archived Log entry 11 added for thread 1 sequence 405 ID 0x109c5354 dest 1:
Mon Sep 23 15:34:29 2024
Media Recovery Waiting for thread 1 sequence 406 (in transit)
Recovery of Online Redo Log: Thread 1 Group 5 Seq 406 Reading mem 0Mem# 0: /u01/oradata/dgora11g/stdredo02.log
Mon Sep 23 15:35:15 2024
RFS[4]: Selected log 4 for thread 1 sequence 407 dbid 260591189 branch 1159358359
Mon Sep 23 15:35:15 2024
Archived Log entry 12 added for thread 1 sequence 406 ID 0x109c5354 dest 1:
Mon Sep 23 15:35:15 2024
Media Recovery Waiting for thread 1 sequence 407 (in transit)
Recovery of Online Redo Log: Thread 1 Group 4 Seq 407 Reading mem 0Mem# 0: /u01/oradata/dgora11g/stdredo01.log

备库没问题,数据同步正常,alert日志也没报错。心里也有点疑惑,两边查出来的结果怎么不一样,难道遇到bug 了 ?

问题重现

于是找了客户,问了他用的什么语句查询,客户给的查询语句如下:

SELECT dt.tablespace_name as tablespace,dt.contents as type,dt.block_size * dtum.used_space as bytes,dt.block_size * dtum.tablespace_size as max_bytes,dt.block_size * (dtum.tablespace_size - dtum.used_space) as freeFROM dba_tablespace_usage_metrics dtum, dba_tablespaces dtWHERE dtum.tablespace_name = dt.tablespace_nameorder by tablespace;

上述语句,在主库查询进行查询,结果如下:

TABLESPACE		       TYPE	      BYTES  MAX_BYTES	     FREE
------------------------------ --------- ---------- ---------- ----------
GGTBS			       PERMANENT    4980736  275046400	270065664
SYSAUX			       PERMANENT  685047808  946135040	261087232
SYSTEM			       PERMANENT  801177600 1040506880	239329280
TBS			       PERMANENT    1048576  233103360	232054784
TEMP			       TEMPORARY	  0  282558464	282558464
UNDOTBS1		       UNDO	   20185088  301432832	281247744
USERS			       PERMANENT    1703936  235724800	2340208647 rows selected.

把它放到备库查询,确实返回的结果为空:

sys@dgora11g> SELECT dt.tablespace_name as tablespace,dt.contents as type,dt.block_size * dtum.used_space as bytes,dt.block_size * dtum.tablespace_size as max_bytes,dt.block_size * (dtum.tablespace_size - dtum.used_space) as freeFROM d  2    3    4    5    6  ba_tablespace_usage_metrics dtum, dba_tablespaces dtWHERE dtum.tablespace_name = dt.tablespace_nameorder by tablespace;  7    8  no rows selected

查找问题根源

查询语句比较简单,就是dba_tablespace_usage_metrics 和 dba_tablespaces 进行关联查找,在备库上查看这两个视图数据时,发现了问题:

sys@dgora11g> select count(*) from dba_tablespaces;COUNT(*)
----------7sys@dgora11g>  select count(*) from  dba_tablespace_usage_metrics;COUNT(*)
----------0

dba_tablespace_usage_metrics 这个视图查出来的数据为0,当然那个查询语句返回结果也为空了,去主库上查了dba_tablespace_usage_metrics是正常的。

主库的dba_tablespace_usage_metrics数据有7条

sys@ora11g> select count(*) from  dba_tablespace_usage_metrics;COUNT(*)
----------7

查看dba_tablespace_usage_metrics视图的定义:

sys@ora11g> set pagesize 500
sys@ora11g> set long 999999
sys@ora11g> select text from dba_views where view_name='DBA_TABLESPACE_USAGE_METRICS';TEXT
--------------------------------------------------------------------------------
SELECT	t.name,tstat.kttetsused,tstat.kttetsmsize,(tstat.kttetsused / tstat.kttetsmsize) * 100FROM	sys.ts$ t, x$kttets tstatWHEREt.online$ != 3 andt.bitmapped <> 0 andt.contents$ = 0 andbitand(t.flags, 16) <> 16 andt.ts# = tstat.kttetstsn
unionSELECT t.name, sum(f.allocated_space), sum(f.file_maxsize),(sum(f.allocated_space)/sum(f.file_maxsize))*100FROM sys.ts$ t, v$filespace_usage fWHEREt.online$ != 3 andt.bitmapped <> 0 andt.contents$ <> 0 andf.flag = 6 andt.ts# = f.tablespace_idGROUP BY t.name, f.tablespace_id, t.ts#
unionSELECT t.name, sum(f.allocated_space), sum(f.file_maxsize),(sum(f.allocated_space)/sum(f.file_maxsize))*100FROM sys.ts$ t, gv$filespace_usage f, gv$parameter paramWHEREt.online$ != 3 andt.bitmapped <> 0 andf.inst_id = param.inst_id andparam.name = 'undo_tablespace' andt.name = param.value andf.flag = 6 andt.ts# = f.tablespace_idGROUP BY t.name, f.tablespace_id, t.ts#

通过上面的代码,我们可以看到,DBA_TABLESPACE_USAGE_METRICS说能查询所有类型的表空间,其本质也是进行了3个union。其关键数据还是出自:v f i l e s p a c e u s a g e 视图。 v filespace_usage 视图。v filespaceusage视图。vfilespace_usage在备库是没有数据的,而主库是正常的。

sys@dgora11g> select count(*) from v$filespace_usage;COUNT(*)
----------0

由于物理备库通常处于只读模式,某些动态性能视图在物理备库中不会更新。官方的这个文档DBA_TABLESPACE_USAGE_METRICS content on Standby Databases (Doc ID 2420176.1) 提到DBA_TABLESPACE_USAGE_METRICS 只在主库上进行更新的,并不认为这是一个bug。

知道问题的所在,就让客户换一个查询语句,用DBA_DATA_FILES、DBA_FREE_SPACE去关联查询,就能正常查出来结果了,查询语句如下:

select dbf.tablespace_name "Tablespace Name",round(dbf.totalspace,2) "Total(M)",round(dbf.used - dfs.freespace,2) "Use(M)",round(nvl(dfs.freespace, 0) + dbf.totalspace - dbf.used,2) "Free(M)",round(((dbf.used - nvl(dfs.freespace, 0)) / dbf.totalspace) * 100,2) "Use%",round(((nvl(dfs.freespace, 0) + dbf.totalspace - dbf.used) /dbf.totalspace) * 100,2) "Free%"from (select t.tablespace_name,sum(greatest(t.maxbytes, t.bytes)) / 1024 / 1024 as totalspace,sum(t.bytes) / 1024 / 1024 as usedfrom dba_data_files tgroup by t.tablespace_name) dbfleft join (select tt.tablespace_name,sum(tt.bytes) / 1024 / 1024 freespacefrom dba_free_space ttgroup by tt.tablespace_name) dfson dbf.tablespace_name = dfs.tablespace_name;

关注我,学习更多的数据库知识!
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543767.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Centos Stream 9根目录扩容

要将 sda 的剩余空间扩展给 cs-root&#xff0c;可以按照以下步骤进行操作。假设你已经有剩余的未分配空间在 sda 上。 步骤 1&#xff1a;查看当前磁盘分区情况 首先&#xff0c;确保你有未分配的空间在 sda 上。 lsblk步骤 2&#xff1a;创建新的分区 使用 fdisk 或 par…

C++vector类的模拟实现

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 模拟实现vector类 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 前置说明 1. vecto…

数据结构2——单链表

目录 1.链表 1.1链表的概念及结构 1.2 链表的分类 ​编辑2.无头单链表的实现 1. 节点 2.遍历链表 3.动态增加新节点 4.查找&#xff08;修改&#xff09; 5.插入 5.1 尾插 5.2 头插 5.3 在pos之前插入x 5.4 在pos之后插入x 6.删除 6.1 尾删 6.2 头删 6.3 删除…

YOLOv10改进,YOLOv10损失函数更换为Powerful-IoU(2024年最新IOU),助力高效涨点

改进前训练结果: 改进后的结果: 摘要 边界框回归(BBR)是目标检测中的核心任务之一,BBR损失函数显著影响其性能。然而,观察到现有基于IoU的损失函数存在不合理的惩罚因子,导致回归过程中锚框扩展,并显著减缓收敛速度。为了解决这个问题,深入分析了锚框扩展的原因。针…

狂神说多线程01

线程实现&#xff08;重点&#xff09; 多线程三个方法 继承Thread类 ⭐️实现Runnable 实现callable&#xff08;了解&#xff09; 线程状态 出生-&#xff1f; 线程同步&#xff08;重点&#xff09; &#xff08;多个线程操作同一个对象&#xff0c;那个对象出现了不安…

RP2040 CXX SDK PIO应用例程

RP2040 CXX SDK PIO应用例程 &#x1f4cd;DS18B20 PIO参考项目例程&#xff1a;https://github.com/jondurrant/RP2040PIO-DS18B20&#x1f4cd;DHT11 PIO 参考项目例程&#xff1a;https://github.com/vmilea/pico_dht 在官方的SDK pico-examples中有关PIO的例程有20个&#…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Halo博客平台

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Halo博客平台 Halo博客平台是一款基于Java的开源博客系统&#xff0c;以其简单易用、功能强大、美观大方等特点而受到广泛欢迎&#xff0c;采用了多种先进的技术框架&#xff0c;包括Freemarker模板引擎、Vue.j…

【STM32】【rt-thread】startup_stm32f405xx.S文件解读

startup_stm32f405xx.S文件解读 一、代码全文 /********************************************************************************* file startup_stm32f405xx.s* author MCD Application Team* brief STM32F405xx Devices vector table for GCC based toolcha…

每日OJ题_牛客_ 游游的you(贪心+模拟)

目录 牛客_ 游游的you&#xff08;贪心模拟&#xff09; 解析代码 牛客_ 游游的you&#xff08;贪心模拟&#xff09; 游游现在有a个y&#xff0c;b个o&#xff0c;c个u&#xff0c;他想用这些字母拼成一个字符串。 三个相邻的字母是"you"可以获得2分&#xff0c…

室内院内常见的不知名蚊虫(昆虫)图鉴和防治方法

文章目录 蟑螂形态特征出现源头危害性防治方法 跳蚤形态特征出现源头危害性防治方法 臭虫&#xff0c;又名木蚤、床虱、壁虱形态特征出现源头危害性防治方法 尘螨形态特征出现源头危害性防治方法 蛾蚋&#xff08;ru&#xff09;&#xff0c;又名蛾蠓&#xff08;měng&#xf…

解密.baxia勒索病毒:.baxia勒索病毒的攻击手法及防护建议

导言 在当前网络安全形势日益严峻的背景下&#xff0c;勒索软件的威胁正不断升级&#xff0c;其中.baxia勒索病毒尤为突出。作为一种新型恶意软件&#xff0c;.baxia病毒通过加密用户的文件并要求支付赎金来获取解密密钥&#xff0c;对个人和企业的安全构成了严重威胁。随着其…

医院预约|基于springBoot的医院预约挂号系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日…

国庆节适合买什么东西?精选五款实用又优惠的多功能好物!

临近国庆&#xff0c;我猜很多朋友已经开始为假期做好准备&#xff0c;计划开启出游和购物的节奏了&#xff01;大家都希望在国庆期间&#xff0c;买到一些平时因为价格太贵而舍不得下单的好物&#xff01;作为一名家居兼数码博主&#xff0c;每年国庆的时候我都会疯狂采购各种…

Ansible流程控制-条件语句_循环语句

文章目录 Ansible流程控制条件语句且、或、非、是模糊条件when指令的详细使用方法 循环语句如何使用使用item变量结合with_items或loop指令item变量有固定子元素&#xff1f; 实例-服务器安装基础环境优化需求部分实现换指定新仓库安装基础软件包 Ansible流程控制 一、 1. 条件…

文件服务器FastDFS 消息队列中间件RabbitMQ

新标签页 (chinaunix.net) FastDFS - Browse Files at SourceForge.net 一、FastDFS Tracker和Storage&#xff1a; tracker用来管理所有的storage&#xff0c;只是管理服务器&#xff0c;负责负载均衡。 storage是存储服务器&#xff0c;每一个storage服务器都是一个单独的个…

Cilium + ebpf 系列文章-什么是ebpf?(一)

前言&#xff1a; 这篇非常非常干&#xff0c;很有可能读不懂。 这里非常非常推荐&#xff0c;建议使用Cilium官网的lab来辅助学习&#xff01;&#xff01;&#xff01;Resources Library - IsovalentExplore Isovalents Resource Library, your one-stop destination for ins…

828华为云征文|华为云Flexus云服务器X实例部署Xnote笔记应用

828华为云征文&#xff5c;华为云Flexus云服务器X实例部署Xnote笔记应用 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、Note Mark 介绍2.1 Xnote简介2.2 Xnote特点2.3 主要使用场景 三、本次实…

浅谈剩余电流动作保护装置的功能和应用

【摘要】介绍了剩余电流动作保护装置的组成、类型及功能&#xff0c;并针对设计中存在的问题&#xff0c;提出了在工程应用中需要注意的事项&#xff0c;进而结合相应的规范、标准和应用实际&#xff0c;分析了剩余电流动作保护装置在不同应用场所、不同电气环境下应如何正确选…

数据结构实验二之线性表(中)

实验题3:实现双链表的各种基本运算的算法 题目描述 编写一个程序dlinklist.cpp,实现双链表的各种基本运算和整体建表算法(偏 双链表的元素类型ElemType为int),并在此基础上设计一个程序exp2-3.cpp完成以 功能。 (1)初始化双链表h。 (2)依次采用尾插法插入元素a、b、c、d、e。 …

springboot itextpdf 形式导出pdf

先看效果(这里只设置了软件版本和 完成情况的勾选框) 导入pom依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version> </dependency> <!--itextpdf--> <d…