暂无图片
oracle如何统计两个库相同用户下所有对象和表的记录数呢?
我来答
分享
且听风吟
2022-08-16
oracle如何统计两个库相同用户下所有对象和表的记录数呢?
暂无图片 10M

oracle 11g单机环境,请问oracle如何统计两个库相同用户下所有对象和表的记录数呢?

能把对象名称,对象类型,对象状态,以及表记录数列出来吗?小白不懂

刚从A库把一个用户迁移到B库下,领导想核对下表记录以及对象是否完全一致,要做个表。

现在两边库都没有接入应用,是完全静止的

我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
布衣
暂无图片
-- 使用下面语句生成表的收集统计信息语句,然后再执行。 select 'exec dbms_stats.gather_table_stats(ownname=>'||''''||owner||''''||',tabname=>'||''''||table_name||''''||');' from all_tables where owner='用户';
复制

image.png

– 最后创建2个库的dblink
– 最后做两个库的:user_tables的关联

select table_name,num_rows from user_tables;
复制

比对表的个数及数据量,大致按这个思路就行。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
且听风吟
题主
2022-08-16
请问,直接收集用户统计信息也可以吧,不用一个表一个表的收集吧
刘贵宾

SQL Developer工具能够比对两个库的信息



暂无图片 评论
暂无图片 有用 0
打赏 0
且听风吟
题主
2022-08-16
您好,两套库网络环境不通,一套在内网,一套在外网的。
刘贵宾

SELECT '' || owner || '' owner, object_type object_type, count(*) obj_count FROM dba_objects d WHERE owner IN ('你要比对的用户') GROUP BY owner, object_type ORDER BY owner, object_type;

暂无图片 评论
暂无图片 有用 0
打赏 0
刘贵宾

https://www.modb.pro/db/100273

还有这个,都可以看看

暂无图片 评论
暂无图片 有用 0
打赏 0
薛晓刚

收集统计信息,不一定是100%的。如果要求大概的也可以。

如果要求对比两个是不是要什么其他背后的隐情呢?怀疑恢复丢失,还是传输不一致?

暂无图片 评论
暂无图片 有用 0
打赏 0
布衣
暂无图片

收集用户的操作我没有研究过,但收集表应该是100%的。
其实我这思路就是把表的记录统计到一张表里方便比对,你也可以写一个过程,每个表count(*) 一下,然后插入到一个汇总表里。

暂无图片 评论
暂无图片 有用 0
打赏 0
张sir

数据校验的话需要从以下几个维度校验数据,利用统计信息进行统计不太准确。

1、校验用户数量。======================》确认没有遗漏的业务用户。

select username from dba_users;

2、校验用户下对象的数量。=================》确认业务用户下总对象个数一致

SELECT D.OWNER,COUNT(1)
FROM dba_objects d
WHERE d.OWNER in ('USER1','USER2')
AND NOT EXISTS (SELECT 1 FROM DBA_RECYCLEBIN B WHERE B.object_name=D.OBJECT_NAME AND D.OWNER=B.owner)
GROUP BY D.OWNER
ORDER BY D.OWNER ;

3、每个用户下各个对象的数量   ===================》确认各业务用户下各个对象类别的数量一致

select OWNER,OBJECT_TYPE,count(*) from dba_objects where owner in ('USER1','USER2')
group by OWNER,OBJECT_TYPE order by owner;

https://blog.csdn.net/baoyuhang0/article/details/110235675

4、对比表的行数。 ===========================》确认各业务用户下各表的行数一致。

参考http://blog.chinaunix.net/uid-23672197-id-3137954.html 里面的脚本,对每个用户的每个表进行校验。

暂无图片 评论
暂无图片 有用 0
打赏 1
且听风吟
题主
2022-08-17
谢谢您!有心了,还是选择收集统计信息
回答交流
Markdown


请输入正文
提交
相关推荐
万里开源和创意信息什么关系?
回答 2
万里开源是创意信息控股的子公司,创意信息技术股份有限公司(股票代码:300366)成立于1996年,2014年在深交所创业板上市,是国内领先的大数据产品及综合解决方案提供商,已形成数据采集汇聚、数据处
请教一下。lob字段应该怎么迁移呢
回答 1
可以使用exp/expdpdump数据导出,然后再dump导入
哪些第三方工具可以优化 SQL 语句的执行计划?
回答 4
已采纳
这个软件可以了解一下: https://www.tosska.cn/tosskasqltuningexperttseoraclefreedownloadzh/ 复杂SQL,&nbs
为什么oracle界面弹不出来?
回答 1
已采纳
这个简单看报错是缺包:yumgroupinstally"ServerwithGUI"yuminstallybc\binutils\compatlibcap1\compatlibstdc33\gcc\g
Oracle 中怎么样查看opt是挂在哪个分区下?
回答 1
dfh没有opt分区信息的话就在/下
AWR分析报告问题求助:老师,您好。585v0k5xt580g的版本数达到4256个,绑定变量有4个,不过这个SQL操作的表近亿级别,问题,SQL的版本数这么多是怎么造成的,怎么解决
回答 5
这个高版本的SQL问题,不是这个AWR报告的主要问题。这个SQL的执行次数为空,不是没有执行完成,而是当版本高于200时,数据库不再统计执行次数,避免过大的资源消耗。针对你的问题,这个SQL的版本数高
如何进行 Oracle10gRAC关闭及启动
回答 1
停止rac服务以及实例crsctlstopcrs启动rac服务以及实例crsctlstartcrs
如果文件系统损坏了,Oracle数据库是如何正常运行的?是不是造成临时表空间无法扩展的原因?
回答 1
如果像你说的损坏了,那么只能说你现在数据都在内存中。你重启数据库可能起不来了。临时表空间无法扩展,也有可能,看具体报错了。是空间不足,还是文件达到了最大。还是无法识别等等。
oracle在insert数据的过程中,可以resize表空间大小吗?
回答 4
已采纳
可以
请问oracle中如何查那些表加了表级附加日志?
回答 2
两种方法参考https://www.modb.pro/db/655998