如何列出 Oracle DB 中的所有上下文命名空间?

Posted

技术标签:

【中文标题】如何列出 Oracle DB 中的所有上下文命名空间?【英文标题】:How do I list all context namespaces in Oracle DB? 【发布时间】:2011-11-28 11:53:58 【问题描述】:

如果我创建一个上下文命名空间:-

CREATE OR REPLACE CONTEXT hr_security
    USING hr.pkg_security
    ACCESSED GLOBALLY;

如何列出所有此类命名空间并查找它们的属性。比如hr_security可以全局访问,可以从pkg_security包中设置。

【问题讨论】:

【参考方案1】:

您可以根据您的权限和正在查看的上下文查询DBA_CONTEXT(或[ALL_CONTEXT][1])视图。 ALL_CONTEXT 将列出在当前会话中设置了属性的所有上下文。 DBA_CONTEXT 列出数据库中的所有上下文。但是,您需要具有额外的权限才能查询DBA_CONTEXT 视图(SELECT ANY DICTIONARY 权限或SELECT_CATALOG_ROLE 角色已经绰绰有余,但您也可以专门被授予访问该视图的权限)

SELECT namespace,
       schema,
       package,
       type
  FROM dba_context

HR_SECURITY 命名空间将有一行显示它与PKG_SECURITY 包相关联,其中TYPEACCESSED GLOBALLY

【讨论】:

对我来说 DBA_CONTEXT 有效。 ALL_CONTEXT 几乎没有列出任何命名空间。【参考方案2】:

如果您缺少对 DBA_CONTEXT 的授权,您也可以使用 ALL_OBJECTS。 但是要列出由各个用户创建的所有全局上下文,需要额外的命名约定来区分谁创建了这个全局上下文(在您的示例中,对象的所有者将是 SYS 而不是 HR)

SELECT * FROM ALL_OBJECTS AO WHERE AO.OBJECT_TYPE = 'CONTEXT' AND AO.OBJECT_NAME LIKE 'HR%' AND AO.OWNER = 'SYS';

【讨论】:

以上是关于如何列出 Oracle DB 中的所有上下文命名空间?的主要内容,如果未能解决你的问题,请参考以下文章

Corba COS 命名服务列出所有节点

在 C# 代码中的 DB 中的 Linq 查询中包含空单元格

如何在 Oracle SQL 中列出模式中的所有表?

如何列出 MongoDB shell 中的所有集合?

如何列出 MongoDB shell 中的所有集合?

使用 SQL 列出 Postgres db 8.1 中的所有序列