首批通过分布式安全可靠测评,为关键业务系统打造
CREATE CONTEXT
更新时间:2026-07-15 20:56:58
描述
CREATE CONTEXT 语句可以为上下文(一组应用程序定义的属性,用于验证和保护应用程序)创建命名空间,还可以将命名空间与外部创建的用来设置该上下文的包相关联。
用户使用指定包中的 DBMS_SESSION.SET_CONTEXT 过程来设置或重置上下文的属性。
注意
要创建上下文命名空间,您必须具有 CREATE ANY CONTEXT 系统权限。
语法
CREATE [ OR REPLACE ] CONTEXT namespace
USING [ schema. ] package_name
[ INITIALIZED { EXTERNALLY | GLOBALLY }
| ACCESSED GLOBALLY
] ;
语法说明
| 关键字 | 说明 |
|---|---|
| OR REPLACE | 使用不同的包重新定义现有的上下文命名空间。 |
| namespace | 指定要创建或修改的上下文命名空间的名称。 上下文命名空间始终存储在 SYS Schema 中。 |
| schema | 指定该包所在的 Schema。 如果省略 Schema,则数据库使用当前的 Schema。 |
| package_name | 指定在用户当前会话的命名空间下设置或重置上下文属性的 PL 包。 |
| ACCESSED GLOBALLY | 表示命名空间中设置的任何应用程序上下文都可以在整个实例中被访问。 此设置允许多个会话共享应用程序属性。 |
示例
创建上下文命名空间
dev_context。obclient> CREATE OR REPLACE CONTEXT dev_context USING SYS.DBMS_SESSION ACCESSED GLOBALLY; Query OK, 0 rows affected使用
SYS_CONTEXT函数基于此上下文控制数据访问。如下示例中,emp_mgmt包已将属性deptno定义为指定的部门标识符。您可以通过创建一个基于deptno值的视图来限制访问基表员工数据。obclient> CREATE VIEW dev_emp_view AS SELECT * FROM emp WHERE deptno = SYS_CONTEXT('dev_context', 'deptno'); Query OK, 0 rows affected