通过登录到Oracle架构产品,我运行了以下两个查询以获得所需的详细信息:
查询-1:在产品模式中查找开始日期在01-11月-2020年之前的所有会话号。
select SESSION_NO, SESSION_BEG
from APP_SESSION
where SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
order by SESSION_BEG; 查询-2:在产品模式中查找所有表及其大小,其中表名由会话号357924160组成,这是我从查询-1输出中得到的许多会话号中的一个。
select SEGMENT_NAME,
BYTES/1024/1024 as "SIZE in MB"
from USER_SEGMENTS
where SEGMENT_TYPE='TABLE' and
SEGMENT_NAME like '%357924160%'
order by "SIZE in MB" desc;由于在两个表USER_SEGMENTS和APP_SESSION之间没有公共列,而且从Query-1输出到检查中有许多会话编号(千),所以我必须对每个会话号一次又一次地运行查询-2。
我想知道在Oracle中是否有任何方法将query-1和query-2连接在一起,以找到所有大小为表名的表,其中任何会话号的开始日期在01-11月-2020年之前?
发布于 2021-08-19 12:53:54
你可以这样做:
select ap.SESSION_NO,
ap.SESSION_BEG,
us.SEGMENT_NAME,
us.BYTES/1024/1024 AS "SIZE in MB"
from APP_SESSION ap
INNER JOIN USER_SEGMENTS us
ON us.SEGMENT_TYPE = 'TABLE' AND
us.SEGMENT_NAME LIKE '%' || ap.SESSION_NO || '%'
where ap.SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
order by ap.SESSION_BEG,
"SIZE in MB"发布于 2021-08-19 13:01:05
你可以试试这个:
select SEGMENT_NAME,
BYTES/1024/1024 as "SIZE in MB"
from USER_SEGMENTS, APP_SESSION
where SEGMENT_TYPE='TABLE' and
SESSION_BEG < to_date('2020-11-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and
SEGMENT_NAME like '%' || SESSION_NO || '%'
order by "SIZE in MB" desc;https://stackoverflow.com/questions/68848054
复制相似问题