【问题标题】:Count number of tables in Oracle计算Oracle中的表数
【发布时间】:2011-07-01 01:45:34
【问题描述】:

就像 MySQL 有 "SHOW TABLES" 一样,你如何计算 Oracle DB 中的表。一点点研究给了我这个查询:

select owner, count(*) from dba_tables

就像 MySQL 有一个标准命令一样,Oracle 也有一个吗?

【问题讨论】:

  • 阻止你,执行它看看?
  • 我的机器上没有oracle,我运行mysql

标签: oracle select count


【解决方案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 非常适合在各种数据库类型上进行测试。

                    【讨论】:

                    • 绝妙的答案!谢谢!! :)
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-12-17
                    • 1970-01-01
                    相关资源
                    最近更新 更多