Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle中查找表的架构名称_Oracle - Fatal编程技术网

如何在oracle中查找表的架构名称

如何在oracle中查找表的架构名称,oracle,Oracle,我应该在这个给定的查询中添加什么来获取表的模式名 SELECT DS.TABLESPACE_NAME AS schema_name, SEGMENT_NAME AS table_name, a.num_rows AS row_count, ROUND(SUM(DS.BYTES) * 8 * 1024) AS total_space_bytes, ROUND(SUM(DS.BYTES) * 8) AS total_space_kilobytes, ROUND(

我应该在这个给定的查询中添加什么来获取表的模式名

 SELECT DS.TABLESPACE_NAME AS schema_name, 
   SEGMENT_NAME AS table_name,
   a.num_rows AS row_count, 
   ROUND(SUM(DS.BYTES) * 8 * 1024) AS total_space_bytes, 
   ROUND(SUM(DS.BYTES) * 8) AS total_space_kilobytes,
   ROUND(SUM(DS.BYTES) / (1024/1000)) AS total_space_megabytes,
   CASE WHEN a.partitioned='NO' THEN 0 WHEN a.partitioned='YES'THEN 1 ELSE 
   0 END AS is_table_partitioned 
   FROM DBA_SEGMENTS 
   DS JOIN (SELECT table_name,tablespace_name,owner,num_rows,partitioned 
   FROM all_tables)a ON a.table_name=DS.SEGMENT_NAME AND 
   DS.TABLESPACE_NAME = a.tablespace_name 
   WHERE  
   segment_type='TABLE'  AND SEGMENT_NAME IN (SELECT TABLE_NAME FROM 
   DBA_TABLES)    

   GROUP BY DS.TABLESPACE_NAME,
   SEGMENT_NAME,a.num_rows,a.partitioned ORDER BY SEGMENT_NAME

添加
dba_segments.owner
列(不要忘记将其也包括在
groupby
子句中):


谢谢,它正在工作,不客气。“选择DS.TABLESPACE\u NAME作为schema\u NAME”是非常误导人的。表空间名称绝对不是架构名称。“schema name”只是表/段的所有者。给定的TS可以很好地拥有属于多个所有者/模式的段。
  SELECT ds.tablespace_name AS schema_name,
         ds.owner,                                     --> this
         segment_name AS table_name,
         a.num_rows AS row_count,
         ROUND (SUM (ds.bytes) * 8 * 1024) AS total_space_bytes,
         ROUND (SUM (ds.bytes) * 8) AS total_space_kilobytes,
         ROUND (SUM (ds.bytes) / (1024 / 1000)) AS total_space_megabytes,
         CASE
            WHEN a.partitioned = 'NO' THEN 0
            WHEN a.partitioned = 'YES' THEN 1
            ELSE 0
         END AS is_table_partitioned
    FROM dba_segments ds
         JOIN
         (SELECT table_name,
                 tablespace_name,
                 owner,
                 num_rows,
                 partitioned
            FROM all_tables) a
            ON     a.table_name = ds.segment_name
               AND ds.tablespace_name = a.tablespace_name
   WHERE     segment_type = 'TABLE'
         AND segment_name IN (SELECT table_name FROM dba_tables)
GROUP BY ds.owner,
         ds.tablespace_name,
         segment_name,
         a.num_rows,
         a.partitioned
ORDER BY segment_name