请问在ORACLE中怎么实现获得一个库中的所有表中的全部记录数?

时间:2021-08-07 23:19:20
如果你的用户没有dba权限, 并且只想查看本用户的所有表的记录数(注意: 不是你说的"库中的所有表"), 改为:

EXECUTE DBMS_UTILITY.ANALYZE_SCHEMA('MYUSERNAME', 'COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM USER_TABLES;

注意: MYUSERNAME是你的用户名, 用大写.

之所以不把它做成一个函数, 是因为在数据量大时, ANALYZE是个很耗时的工作. 如果不是必须要求精确数字, 第二次及以后的统计可以使用前面的ANALYZE结果.


另一种方法:

SET ECHO OFF
SET HEAD OFF
SET LINESIZE 200
SET PAGESIZE 0
select 'SELECT ''' || TNAME || ''' TABNAME, COUNT(1) FROM ' || TNAME || ';' FROM TAB;
SPOOL C:\COUNTALL.SQL
/
SPOOL OFF

然后执行生成的COUNTALL.SQL