zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 1272 小希的迷宫 (并查集)
    HDU 5723 Abandoned country (最小生成树 + dfs)
    HDU 5744 Keep On Movin (贪心)
    探索Redis设计与实现2:Redis内部数据结构详解——dict
    探索Redis设计与实现1:Redis 的基础数据结构概览
    重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践
    重新学习MySQL数据库12:从实践sql语句优化开始
    重新学习MySQL数据库11:以Java的视角来聊聊SQL注入
    重新学习MySQL数据库10:MySQL里的那些日志们
    重新学习MySQL数据库9:Innodb中的事务隔离级别和锁的关系
  • 原文地址:https://www.cnblogs.com/wangqianqiannb/p/14035954.html
Copyright © 2011-2022 走看看