如何在Oracle中找到对象的所有者? [英] How can I find the OWNER of an object in Oracle?

查看:73
本文介绍了如何在Oracle中找到对象的所有者?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想查找表的外键,但是可能有多个用户/模式具有相同名称的表.如何找到当前登录用户正在查看的用户?是否有赋予其所有者的功能?如果有公共同义词怎么办?

I want to find the foreign keys of a table but there may be more than one user / schema with a table with the same name. How can I find the one that the currently logged user is seeing? Is there a function that gives its owner? What if there are public synonyms?

推荐答案

您可以查询ALL_OBJECTS视图:

You can query the ALL_OBJECTS view:

select owner
     , object_name
     , object_type
  from ALL_OBJECTS
 where object_name = 'FOO'

要查找同义词:

select *
  from ALL_SYNONYMS
 where synonym_name = 'FOO'

仅需澄清一下,如果 user 用户的SQL语句引用了没有模式限定(例如'FOO')的对象名称,则Oracle FIRST会在用户的模式中检查该名称的对象(包括同义词)在该用户的模式中).如果Oracle无法从用户的架构中解析引用,则Oracle将检查是否有公共同义词.

Just to clarify, if a user user's SQL statement references an object name with no schema qualification (e.g. 'FOO'), Oracle FIRST checks the user's schema for an object of that name (including synonyms in that user's schema). If Oracle can't resolve the reference from the user's schema, Oracle then checks for a public synonym.

如果您要特别查找对特定table_name的约束:

If you are looking specifically for constraints on a particular table_name:

select c.*
  from all_constraints c 
 where c.table_name = 'FOO'
 union all
select cs.*
  from all_constraints cs
  join all_synonyms s 
    on (s.table_name = cs.table_name
     and s.table_owner = cs.owner 
     and s.synonym_name = 'FOO'
       )

HTH

-附录:

如果授予用户访问DBA_视图的权限(例如,如果授予用户SELECT_CATALOG_ROLE权限),则可以在前面的SQL示例中用"DBA_"代替"ALL_". ALL_x视图仅显示已被授予特权的对象. DBA_x视图将显示所有数据库对象,无论您是否拥有这些对象的权限.

If your user is granted access to the DBA_ views (e.g. if your user has been granted SELECT_CATALOG_ROLE), you can substitute 'DBA_' in place of 'ALL_' in the preceding SQL examples. The ALL_x views only show objects which you have been granted privileges. The DBA_x views will show all database objects, whether you have privileges on them or not.

这篇关于如何在Oracle中找到对象的所有者?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆