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

时间:2022-05-19 23:18:29
请问在ORACLE中怎么实现获得一个库中的所有表中的全部记录数?有什么简便方法吗?

10 个解决方案

#1


EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;

#2


EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;


===========================
oldwain
---------------------------
http://www.itpub.net/index.php?referrerid=32 
http://www.linuxforum.net/ 
http://www.oraclefan.net/ 

#3


oldwain(老斗):请问
EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;
这两句话如何在SQL*PLUS里用语句一次实验啊?

#4


"一次实验"? 什么意思?

#5


oldwain(老斗):
EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
单独执行报错,
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;
这两句话是否应编成一个小函数,在SQL*PLUS里用作为一个整体执行啊?
如果是,这段函数怎么写?

#6


执行EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
报错如下:
BEGIN DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE'); END;

*
エラー行: 1: エラーが発生しました。
ORA-20000: You have insufficient privileges for an object in this database.
ORA-06512: at "SYS.DBMS_UTILITY", line 360
ORA-06512: at line 1

#7


学习!!

#8


http://www.csdn.net/Expert/Topic/480/480749.shtm
http://www.csdn.net/Expert/TopicView.asp?id=483248

#9


KingSunSha(弱水三千):能与我联系吗?
你给我的两个地址我都看啦。
是不是需要analyze的方法不大精确啊?
我想知道精确的存储过程方法。
能告诉我怎么实现吗?
hareljx@263.net
非常感谢 

#10


如果你的用户没有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

#1


EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;

#2


EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;


===========================
oldwain
---------------------------
http://www.itpub.net/index.php?referrerid=32 
http://www.linuxforum.net/ 
http://www.oraclefan.net/ 

#3


oldwain(老斗):请问
EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;
这两句话如何在SQL*PLUS里用语句一次实验啊?

#4


"一次实验"? 什么意思?

#5


oldwain(老斗):
EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
单独执行报错,
SELECT OWNER, TABLE_NAME, NUM_ROWS FROM ALL_TABLES;
这两句话是否应编成一个小函数,在SQL*PLUS里用作为一个整体执行啊?
如果是,这段函数怎么写?

#6


执行EXECUTE DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE');
报错如下:
BEGIN DBMS_UTILITY.ANALYZE_DATABASE('COMPUTE'); END;

*
エラー行: 1: エラーが発生しました。
ORA-20000: You have insufficient privileges for an object in this database.
ORA-06512: at "SYS.DBMS_UTILITY", line 360
ORA-06512: at line 1

#7


学习!!

#8


http://www.csdn.net/Expert/Topic/480/480749.shtm
http://www.csdn.net/Expert/TopicView.asp?id=483248

#9


KingSunSha(弱水三千):能与我联系吗?
你给我的两个地址我都看啦。
是不是需要analyze的方法不大精确啊?
我想知道精确的存储过程方法。
能告诉我怎么实现吗?
hareljx@263.net
非常感谢 

#10


如果你的用户没有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