如果我创建了一个上下文命名空间: -
CREATE OR REPLACE CONTEXT hr_security
USING hr.pkg_security
ACCESSED GLOBALLY;
如何列出所有此类命名空间并查找其属性。例如,hr_security
可以全局访问,可以从pkg_security
包设置。
答案 0 :(得分:8)
您可以查询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
包关联TYPE
ACCESSED GLOBALLY
。
答案 1 :(得分:1)
如果您缺少 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';