【发布时间】:2021-04-15 20:36:36
【问题描述】:
我有两个疑问, 第一个获取表名和avg_row_len
select Table_name, AVG_ROW_LEN from all_tables
where Table_name = 'COMPU_ERROR_FACT';
然后我需要将 avg_row_len 传递给
SELECT COUNT(1) as "Number of Count",
ROUND(COUNT(1) * avg_row_len/1024/1024) AS "Size in MB" ,
TO_CHAR(CREATE_DATE, 'YYYY') AS YEAR,
'CREATE_DATE' AS DATTT
FROM COMPU_ERROR_FACT --table name
GROUP BY TO_CHAR(CREATE_DATE, 'YYYY')
order by 3;
我有超过 2k 个表,有没有办法一次性获取所有表的详细信息。
请推荐,
【问题讨论】:
-
您是否需要将其作为单个查询(您的问题暗示了这一点)?您可以使用 XMLQuery 做一些事情,但这往往是相当深奥的。或者您可以使用一些 PL/SQL,例如,将数据写入您稍后查询的表(您的标签暗示)?
-
好吧,除非这 2K 个表中的每一个都包含 CREATE_DATE 列,否则这会以某种方式失败。是吗?
-
是的,它们都有 Create_date
-
您想获取表格的大小吗?如果是,那么查看
ALL_SEGMENTS可能会更好。