计算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中的表数的主要内容,如果未能解决你的问题,请参考以下文章

计算 SQL Server 数据库中的表数 [重复]

phpmyadmin 中数据库中的表数 4

使用头文件cfloat中的符号常量获知浮点类型数据的表数范围---gyy整理

WIN10 计算器 计算 表数范围小的可以向表数范围大 数据丢失

PostgreSQL 对连接中的表数有限制吗?

使用头文件climits中的符号常量获知整型数据的表数范围---gyy整理