• oracle context


    context:上下文

    context的信息也就是当前会话中的环境变量,如:登录的session_id,用户名,语言等信息

    查看context中的属性信息。

    oracle默认的为我们创建了一个context叫userenv(user environment)

     

    SYS_CONTEXT('USERENV','TERMINAL') 

    SYS_CONTEXT('USERENV','LANGUAGE')

    SYS_CONTEXT('USERENV','SESSIONID') 

    SYS_CONTEXT('USERENV','INSTANCE')

    SYS_CONTEXT('USERENV','ENTRYID') 

    SYS_CONTEXT('USERENV','ISDBA') 

    SYS_CONTEXT('USERENV','NLS_TERRITORY') 

    SYS_CONTEXT('USERENV','NLS_CURRENCY')

    SYS_CONTEXT('USERENV','NLS_CALENDAR') 

    SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') 

    SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') 

    SYS_CONTEXT('USERENV','NLS_SORT') 

    SYS_CONTEXT('USERENV','CURRENT_USER')

    SYS_CONTEXT('USERENV','CURRENT_USERID') 

    SYS_CONTEXT('USERENV','SESSION_USER') 

    SYS_CONTEXT('USERENV','SESSION_USERID') 

    SYS_CONTEXT('USERENV','PROXY_USER') 

    SYS_CONTEXT('USERENV','PROXY_USERID') 

    SYS_CONTEXT('USERENV','DB_DOMAIN') 

    SYS_CONTEXT('USERENV','DB_NAME') 

    SYS_CONTEXT('USERENV','HOST') 

    SYS_CONTEXT('USERENV','OS_USER') 

    SYS_CONTEXT('USERENV','EXTERNAL_NAME') 

    SYS_CONTEXT('USERENV','IP_ADDRESS') 

    SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') 

    SYS_CONTEXT('USERENV','BG_JOB_ID') 

    SYS_CONTEXT('USERENV','FG_JOB_ID') 

    SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE')

    SYS_CONTEXT('USERENV','AUTHENTICATION_DATA')  

     

    例子:

    查看当前session的字符集信息

    SQL> select userenv('language') from dual;

    USERENV('LANGUAGE')                                             
    ----------------------------------------------------------------
    UTF8

    1 row selected.

    创建自定义oracle context

    Application Context是内存中的一组name-value对,application context从属于某个命名空间(namespace);

    用户只能通过一个自定义封装包或存储过程中调用dbms_session.set_context来设置application context的值;

    用户使用sys_context(<namespace>,<name>)来获取某个application context的值。

     

    语法:

     DBMS_SESSION.SET_CONTEXT

     ( namespaceVARCHAR2, attribute VARCHAR2, value VARCHAR2, username VARCHAR2, client_idVARCHAR2 );

     

    namespace context的命名空间 --必要参数

    attribute 属性值 --必要参数

    value --必要参数

    username 用户名(默认为Null) --可选参数

    client_id 指定的clientid --可选参数

    Application context分为三种

    dabase session-based application context --local application context

    global application context --global application context

    client session-based application context --通过OCI管理使用的,存储在客户端内存的context

    Local applicationcontext

    context存储在UGA中,本地context是session/server process级别的,当会话/serverprocess终止时,context也会结束

     

    Global application context

    context存储在SGA中,SGA消失,全局context也就会结束;它常常用于跨会话,应用于与会话无关的场景

    例子:

     

    1.创建一个context

    SQL> create context context_only using pkg_only;

    Context created.

    2.建立与上下文先关的包来封装(也就是上面的pkg_name)

    SQL> create package pkg_only

      2  as

      3  procedure put(key varchar2,value varchar2);

      4  end;

      5  /

     

    Package created.

     

    SQL> create package body pkg_only 

      2  as

      3  procedure put(key varchar2,value varchar2)

      4  as

      5  begin

      6  dbms_session.set_context('context_only',key,value);

      7  end;

      8  end;

      9  /

     

    Package body created.

    3.设置存储过程输入输出

    SQL> exec pkg_only.put('name','only');

    PL/SQL procedure successfully completed.

     

    4.调用context

    SQL> select sys_context('context_only','name') from dual;

    SYS_CONTEXT('CONTEXT_ONLY','NAME')

    --------------------------------------------------------------------------------

    only

    转自:https://blog.51cto.com/ionly/1605229

  • 相关阅读:
    第三方登录(QQ登录)开发流程详解
    编译PHP并与Ngnix整合
    Ngnix的日志管理和用定时任务完成日志切割
    Ngnix 安装、信号量、虚拟主机配置
    Redis命令操作详解
    Redis的安装和部署
    消息队列
    Ubuntu中Google Chrome安装
    关于双系统下Ubuntu不能访问Windows中某个盘的问题
    numpy.random.shuffle()与numpy.random.permutation()的区别
  • 原文地址:https://www.cnblogs.com/wangqianqiannb/p/14035954.html
Copyright © 2020-2023  润新知