达梦数据库表数量查询与实际情况不一致?看看是不是有特殊表名

在把Oracle迁移至达梦后,对比源端和目的端对象,有时会发现达梦比oracle多出很多表。

或者在查询达梦数据库表数量或表名的时候,发现 select * from user_tables;查出来的表数量与实际的表数量不一致,存在个别表名并非真正的表的情况,这些表在管理工具的模式下是看不到的。

出现这种情况的原因主要是由于以下几种情况:

  1. 达梦创建位图索引时,会创建一张表,表名为:

    BM$_+位图索引对象id
  2. 达梦创建外键,该外键关联的字段是本表的字段时,会创建3张临时表,表名为:

    SREF_CON_TAB+外键约束id+_LEVEL
    SREF_CON_TAB+外键约束id+_REFING
    SREF_CON_TAB+外键约束id+_REFED
  3. 达梦数据库创建全文索引时,会创建四张表,表名为:

    CTI$+全文索引名+$I
    CTI$+全文索引名+$P
    CTI$+全文索引名+$D
    CTI$+全文索引名+$N

因此,查询达梦数据库的实际的表可以使用以下SQL:

--查看指定模式的所有表数量
SELECT
        count(*)
FROM
        SYSOBJECTS
WHERE
        SCHID =
        (
                SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME ='模式名'
        )
    AND TYPE$   ='SCHOBJ'
    AND SUBTYPE$='UTAB'
    AND NAME NOT LIKE 'CTI%'
    AND NAME NOT LIKE 'SREF_CON_TAB%'
    AND NAME NOT LIKE 'BM$';
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保定公民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值