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')

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

AMERICAN_AMERICA.AL32UTF8

创建自定义oracle context

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

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

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

语法:

DBMS_SESSION.SET_CONTEXT

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

namespacecontext的命名空间--必要参数

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

dbms_session.set_context有两个默认值为NULL的参数:username、client_id

username= null , client_id=null。所有用户都能访问。

username= null, client_id=。只要session 的client_id =,而不管username,都能访问。

username= , client_id=null。只要session使用指定的oracle schema登陆,不管client_id,都能访问。

username= , client_id=. 常用于statless web session ,如http。

username= , client_id= . 该username将用于数据库连接池的owner。

整理自网络

oracle查看context,oracle context(上下文)相关推荐

  1. oracle 查看crs,Oracle如何查询当前的crs/has自启动状态

    我们知道在某些停机测试场景,是需要人为禁用crs/has的自启动的,防止过程中主机反复重启对数据库集群造成影响. 使用crsctl disable/enable crs命令可以禁用/启用crs的自启动 ...

  2. oracle查看历史oracle database数据库版本并下载

    1.访问https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 2.搜索框查找"Oracle Database 12c" ...

  3. oracle 查看用户日志,Oracle查看用户操作sql语句以及数据库日志

    --查看日志文件 select member from v$logfile; --查看表空间使用情况 SELECT SUM(bytes) / (1024 * 1024) AS free_space, ...

  4. 201921 oracle查看当前oracle版本及补丁版本

    好久不写博客... 其实所有的写作,都是为了给自己备个档,给自己一次记忆,顺便,帮助了别人而已~ 所以,要多写~ 其实还有一个感悟,所有的知识来自于书本,这样才能成体系. 所有零散的技巧和知识点都不能 ...

  5. oracle 查看并行数据库,Oracle数据库并行查询出错的解决方法

    Oracle的并行查询是使用多个操作系统级别的Server Process来同时完成一个SQL查询,本文讲解Oracle数据库并行查询出错的解决方法如下: 1.错误描述 ORA-12801: 并行查询 ...

  6. oracle查看dlink,oracle创建dlink方法

    当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据.下面讲介绍如何在本地数 ...

  7. Oracle查看SQL执行计划的方式

    Oracle查看SQL执行计划的方式 获取Oracle sql执行计划并查看执行计划,是掌握和判断数据库性能的基本技巧.下面案例介绍了多种查看sql执行计划的方式: 基本有以下几种方式: 1.通过sq ...

  8. Oracle 查看 SQL执行计划

    Oracle 查看 SQL执行计划 SQL性能分析 执行计划可以用来分析SQL的性能 一.查看执行计划的方法 1. 设置autotrace set autotrace off: 此为默认值,即关闭au ...

  9. Oracle查看执行计划的几种方法

    Oracle查看执行计划的几种方法 一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRA ...

最新文章

  1. 旷视张祥雨:高效轻量级深度模型的研究和实践 | AI ProCon 2019
  2. pandas使用shift函数对数数据进行向上偏移(-1)或者向下偏移(1)、索引不移动,移动之后无值的赋值为NaN、将原数据列与偏移后的数据列相加生成新的数据列
  3. 差点吓尿,手贱不要乱点support native debug
  4. Java 构造方法中super()的作用以及使用
  5. python文本分词_【Python】使用jieba对文本进行分词
  6. php+控制器+数据库,Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法_PHP...
  7. Serverless 实战 —— 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
  8. ORACLE中的自治事务
  9. 电脑用电量_为什么换了智能电表后,我家用电量一下子多了这么多呢?
  10. java求阶乘不内存溢出_java - Java阶乘GUI - 堆栈内存溢出
  11. 【问题记录】git报错:[remote rejected] (pre-receive hook declined)
  12. linux下mysql修改时区,linux修改系统时区
  13. git撤回上一次push
  14. 小程序中关于敏感词汇检测
  15. 【CAPL】CAPL的简单介绍及变量
  16. 最大公约数和最小公倍数,你知道有几种求法吗?
  17. 用Python基础创建一个简单的注册登录系统
  18. 每日一道Leetcode算法——Fibonacci Number——2019.02.01
  19. 这个假期有这些游戏就不怕无聊了
  20. 面试大盘点,面了12家软件公司测试岗位,我真的尽力了...

热门文章

  1. Centos出现-bash: unzip: command not found的解决办法
  2. HSF服务注册失败,项目启动后,EDAS列表无法发现注册的服务
  3. 学习笔记之数据可视化(二)——页面布局(中)
  4. 微信小程序---实现弹窗效果
  5. regedit或child_process添加注册表
  6. JavaScript-获得和设置表单的值
  7. html-表单初级验证
  8. python中idle怎么打开_为什么我的python脚本只打开IDLE?
  9. linux创建定时任务命令,linux设置定时任务的方法步骤
  10. 猫眼java开发暑期实习_校招|猫眼 Android日常实习一面面经