1、概述
1.1 背景及目的 随着公司近几年所开拓的业务领域不断增强,同时也需要相应的业务软件平台作为后台支持,因此,信息中心所设计开发的软件规模近几年增长速度也很快。随之而来的数据库的容量和复杂程度也成倍增加。为了提高数据库的效率,实现标准化以及便于数据库的统一管理,制定本规范,旨在以统一的标准指导开发人员正确使用CONTEXT。 1.2 适用范围 本规范适用于开发人员、数据库管理人员。 1.3 术语和缩略语 此处请填入文档中的专业术语及解释。
序号 | 术语/缩略语 | 全称和说明 |
---|---|---|
1 | Context(上下文) | 全称为application context;是oracle FGA技术的一部分,用于存放用户的属性,也可以存放一些用户定制的信息,这些信息是session级的。 |
Context目前在平安的系统中使用的较少,目前发现的问题不多,主要的一个问题就是效率问题,本规范制定的原则就是解决效率问题常见的使用context的。
场景之一是:用于存放用户的um帐号,比如,用户使用um帐户通过公用的数据库用户登陆到了数据库系统中,为了跟踪用户在数据库中所做的操作,必须记录用户的um帐号,这个时候可以在用户登陆时将用户的um帐号设置到context中,在后续的跟踪时可以从context中获取um帐号名。 场景之二:如果系统中对用户做了区域性的权限划分,为了控制用户的权限,使得用户只能在允许的区域内进行相关操作,那么可以将用户所属区域写入到context中,在用户进行操作时,对其权限进行控制。
2、技术规范
2.1 设计要求规范2.1.1 关联CONTEXT 的package不能放到任何循环内调用
2.1.2 关联context的package必须独立,不可和其他功能的package共用,要避免pacakge功能复杂,调用频度过高,成为系统瓶颈。
2.1.3 如果会重复使用context,则应将context 赋值给一个变量,在package 中调用该变量以获取context值,避免context 重复调用。
附录
附录A 创建context
CREATE CONTEXT ctx_region_code USING lpp_region_code_context;
附录B 创建package
create or replace package lpp_region_code_context is --20071010 嘉峻 --********************************************************************************** --功能说明: 设置当前用户的region_code 2007.3.20 嘉峻 --调 用 者: --被调用者: --入口参数:p_region_code 当前用户的region_code --出口参数: --说 明: 用于设置在context中的当前用户region_code,用于权限控制(视图) --修改记录:20071010 新建过程 嘉峻 --********************************************************************************** procedure set_user_region_code(region_code varchar2); --********************************************************************************** --功能说明: 取当前用户的region_code 2007.3.20 嘉峻 --调 用 者: --被调用者:视图 --入口参数: --出口参数:存放于context的region_code --说 明: 用于获取设置在context中的region_code,用于权限控制(视图) --修改记录:20071010新建过程 嘉峻 --********************************************************************************** function get_user_region_code return varchar2; end lpp_region_code_context; create or replace package body lpp_region_code_context is --********************************************************************************** --功能说明: 设置当前用户的region_code 2007.3.20 嘉峻 --调 用 者: --被调用者: --入口参数:p_region_code 当前用户的region_code --出口参数: --说 明: 用于设置在context中的当前用户region_code,用于权限控制(视图) --修改记录:20071010 新建过程 嘉峻 --********************************************************************************** procedure set_user_region_code(region_code varchar2) is begin p_user_region_code:=region_code; end set_user_region_code; --********************************************************************************** --功能说明: 取当前用户的region_code 2007.3.20 嘉峻 --调 用 者: --被调用者:视图 --入口参数: --出口参数:存放于context的region_code --说 明: 用于获取设置在context中的region_code,用于权限控制(视图) --修改记录:20071010新建过程 嘉峻 --********************************************************************************** function get_user_region_code return varchar2 is v_region_code varchar2(10); begin if p_user_region_code is null then v_region_code:=0; else v_region_code:=p_user_region_code; end if; return v_region_code; end get_user_region_code; end lpp_region_code_context;