2013-07-16 26 views
0

在甲骨文公司在其对象人数最大增加的模式,我需要找到具有通过使用分析功能在它的对象数量的最大增幅在1年的每周一次的基础架构发现其中有1年

我做了这样的事情:

SELECT OWNER, TRUNC(CREATED,'w') WEEK_OF, count(*) 
FROM dba_objects 
WHERE CREATED BETWEEN ADD_MONTHS(SYSDATE, -12) AND SYSDATE 
group by TRUNC(CREATED,'w'),OWNER 
ORDER BY 3 DESC; 

你们可以想办法在我可以使用LAG函数?

+0

不可能的,因为Oracle不存储对象的“历史记录”。所以你不能检索过去的对象数量。 –

+0

在dba_objects表中有创建的字段 – Ege

+0

如何检测丢弃的表? –

回答

0

定义'对象'的含义 - 表,触发器,视图,任何特定的?无论如何,有一个pseudotable DBA_OBJECTS已经列上创建的每一个对象在DB:

SELECT * FROM dba_objects 

所以,我想最简单的方法就是这样的:

SELECT OWNER, COUNT(1) FROM dba_objects WHERE CREATED BETWEEN ADD_MONTHS(SYSDATE, -12) AND SYSDATE 
GROUP BY OWNER 
ORDER BY 2 DESC 
+0

我说的对象是指所有的对象类型。没有特别的表等 – Ege

+0

@Ege那么,上面的查询应该做的伎俩 - 它会给你在上一年内创建的每个模式的任何对象的数量。 – Mikhail

+0

谢谢你有趣:)你正在做的事实是正确的,但我试图找到像让我们说一个用户在一周内创建了40个表,但没有创建任何其他,因为..和其他创建像1星期...根据你所做的,他们可能在今年的en看起来是平等的,但我试图找到那个40值 – Ege