计算Oracle中的表数
Posted
技术标签:
【中文标题】计算Oracle中的表数【英文标题】:Count number of tables in Oracle 【发布时间】:2011-07-01 01:45:34 【问题描述】:就像 mysql 有 "SHOW TABLES" 一样,你如何计算 Oracle DB 中的表。一点点研究给了我这个查询:
select owner, count(*) from dba_tables
就像 MySQL 有一个标准命令一样,Oracle 也有一个吗?
【问题讨论】:
阻止你,执行它看看? 我的机器上没有oracle,我运行mysql 【参考方案1】:如果你想知道属于某个模式/用户的表的数量,你也可以使用类似于这个的SQL:
SELECT Count(*) FROM DBA_TABLES where OWNER like 'PART_OF_NAME%';
【讨论】:
【参考方案2】:请在下面找到 - 这是我使用的最简单的一个:
select owner, count(*) from dba_tables group by owner;
【讨论】:
【参考方案3】:REM setting current_schema is required as the 2nd query depends on the current user referred in the session
ALTER SESSION SET CURRENT_SCHEMA=TABLE_OWNER;
SELECT table_name,
TO_NUMBER (
EXTRACTVALUE (
xmltype (
DBMS_XMLGEN.getxml ('select count(*) c from ' || table_name)),
'/ROWSET/ROW/C'))
COUNT
FROM dba_tables
WHERE owner = 'TABLE_OWNER'
ORDER BY COUNT DESC;
【讨论】:
【参考方案4】:如果您想要所有者列表以及每个所有者的表数,请尝试:
SELECT distinct owner, count(table_name) FROM dba_tables GROUP BY owner;
【讨论】:
【参考方案5】:此查询将查找特定模式中的所有对象计数
select owner, object_type, count(*) from dba_objects where owner='owner_name' group by owner, object_type order by 3 desc;
【讨论】:
【参考方案6】:Select count(*) FROM all_tables where owner='schema_name'
【讨论】:
【参考方案7】:select COUNT(*) from ALL_ALL_TABLES where OWNER='<Database-name>';
.....
【讨论】:
【参考方案8】:使用这个查询,它会给你关于表所有者的实际计数
SELECT COUNT(*),tablespace_name FROM USER_TABLES group by tablespace_name;
【讨论】:
【参考方案9】:这些文档描述了数据字典视图:
所有表:http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4473.htm#REFRN26286
user_tables:http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091
dba_tables:http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_4155.htm#i1627762
您可以在这些视图上运行查询来计算您需要什么。
为@Anurag Thakre 的回答添加更多内容:
使用这个查询,它会给你关于计数的实际数量 业主
SELECT COUNT(*),tablespace_name FROM USER_TABLES group by tablespace_name;
或由表所有者:
SELECT COUNT(*), owner FROM ALL_TABLES group by owner;
表空间本身并不识别唯一的对象所有者。多个用户可以在同一个表空间中创建对象,单个用户可以在不同的表空间中创建对象。 将表和索引分成不同的表空间是一种常见的做法。
【讨论】:
【参考方案10】:是的,只要稍微修改一下,您的查询就可以正常工作。在这里寻找参考:http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/statviews_2105.htm#i1592091
运行这个:
SELECT TABLE_NAME FROM DBA_TABLES;
获取表格列表。
然后运行:
SELECT Count(*) FROM DBA_TABLES;
获取表格数量。
【讨论】:
或SELECT TABLE_NAME, COUNT(*) OVER () FROM DBA_TABLES
获取两者。
如果您没有 DBA 访问权限或您的 DBA 已限制您将需要发出此命令:SELECT COUNT(*) FROM USER_TABLES;【参考方案11】:
尝试:
SELECT COUNT(*) FROM USER_TABLES;
我的机器上没有 oracle,我运行 mysql(OP 注释)
在撰写本文时,this site 非常适合在各种数据库类型上进行测试。
【讨论】:
绝妙的答案!谢谢!! :)以上是关于计算Oracle中的表数的主要内容,如果未能解决你的问题,请参考以下文章
使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理