暂无图片
Oracle SYS.X$KTFBFE 关联查询无法获取 con_id
我来答
分享
章芋文
2024-09-24
Oracle SYS.X$KTFBFE 关联查询无法获取 con_id

CDB模式下,在监控表空间时,关联查询基表SYS.X$KTFBFE,无法获取con_id

SYS.X$KTFBFE 自带一个字段con_id,但是默认值都是0

在CDB或者PDB下查询如下两个SQL的结果都是一样的

SQL> SELECT * FROM CONTAINERS(SYS.X$KTFBFE) F WHERE KTFBFETSN=1; ADDR INDX INST_ID CON_ID KTFBFETSN KTFBFEFNO KTFBFEBNO KTFBFEBLKS ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 00007F0FD8EE2C28 0 1 0 1 4 9392 8 00007F0FD8EE2C28 1 1 0 1 4 16368 8 00007F0FD8EE2C28 2 1 0 1 4 34144 8 00007F0FD8EE2C28 3 1 0 1 4 43744 32 00007F0FD8EE2C28 4 1 0 1 4 43904 2176 SQL> SELECT * FROM SYS.X$KTFBFE F WHERE KTFBFETSN=1; ADDR INDX INST_ID CON_ID KTFBFETSN KTFBFEFNO KTFBFEBNO KTFBFEBLKS ---------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- 00007F0FD8EE2C28 0 1 0 1 4 9392 8 00007F0FD8EE2C28 1 1 0 1 4 16368 8 00007F0FD8EE2C28 2 1 0 1 4 34144 8 00007F0FD8EE2C28 3 1 0 1 4 43744 32 00007F0FD8EE2C28 4 1 0 1 4 43904 2176 SQL> desc SYS.X$KTFBFE Name Null? Type ----------------------------------------------- -------- -------------------------------- ADDR RAW(8) INDX NUMBER INST_ID NUMBER CON_ID NUMBER KTFBFETSN NUMBER KTFBFEFNO NUMBER KTFBFEBNO NUMBER KTFBFEBLKS NUMBER SQL>

在与SYS.TS、SYS.FILE关联时,如果不限定con_id,每个PDB下的TS#都是从0开始自增,那么像这些表空间就会重复计算,导致结果错误,直接查询CDB_FREE_SPACE又很慢,不知是否有解?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
吾亦可往

在 Oracle CDB 模式下,关联查询 SYS.X$KTFBFE 无法获取正确的 con_id 可能是由于以下原因:

  1. 视图和基表的问题:有时候使用视图可能会出现一些不预期的结果。可以尝试直接查询基表而不是通过视图进行查询,不过这需要对数据库内部结构有较深入的了解,并且要谨慎操作,以免影响数据库的稳定性。
  2. 数据字典的不一致性:检查数据字典是否存在不一致的情况。可以通过运行数据库的验证工具来检查数据字典的完整性,例如使用 DBVERIFY 工具或者 ANALYZE TABLE 语句来检查相关表的结构和数据完整性。
  3. 数据库版本问题:不同版本的 Oracle 数据库可能在 CDB 模式下的行为有所不同。确保你使用的是稳定的、经过充分测试的数据库版本,并且查看官方文档中关于该版本在 CDB 模式下的特定行为和限制。
  4. 权限问题:确认你具有足够的权限来查询这些系统表和视图。有时候权限不足可能导致无法获取正确的数据。
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏