如何在Oracle中获取用户创建的所有对象?

时间:2014-11-15 22:43:52

标签: sql oracle

我需要获取仅由用户创建(不拥有)的对象的所有源代码,因此我创建了此查询:

SELECT s.owner,
       s.name,
       s.TYPE,
       s.line,
       s.text
  FROM sys.dba_source s, sys.dba_users u
 WHERE s.owner = u.username
   AND u.default_tablespace NOT IN ('SYSTEM', 'SYSAUX')

但我仍然发现从oracle自动创建的对象,例如我的用户有一个TRIGGER calle APEX $ _WE_ROWS ...,我从未创建过。 APEX应该是Oracle Express提供的SUFIX。

有什么想法吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

据我所知,Oracle没有在字典中保留创建者。但您可以使用dba_objects

中的信息
SELECT s.owner,
       s.name,
       s.TYPE,
       s.line,
       s.text,
       o.created,
       o.last_ddl_time
  from sys.dba_source s, sys.dba_users u,
       sys.dba_objects o
 where s.owner = u.username   
   and u.default_tablespace not in ('SYSTEM', 'SYSAUX')
   and s.owner = o.owner and s.name = o.object_name and s.type = o.object_type;

createdlast_ddl_time可以帮助您区分系统代码和用户代码。