Oracle创建上下文 SYS_CONTEXT
Oracle创建上下文 SYS_CONTEXT
1. 系统默认的一些参数
set heading off
select SYS_CONTEXT('USERENV', 'TERMINAL') terminal,
SYS_CONTEXT('USERENV', 'LANGUAGE') language,
SYS_CONTEXT('USERENV', 'SESSIONID') sessionid,
SYS_CONTEXT('USERENV', 'INSTANCE') instance,
SYS_CONTEXT('USERENV', 'ENTRYID') entryid,
SYS_CONTEXT('USERENV', 'ISDBA') isdba,
SYS_CONTEXT('USERENV', 'NLS_TERRITORY') nls_territory,
SYS_CONTEXT('USERENV', 'NLS_CURRENCY') nls_currency,
SYS_CONTEXT('USERENV', 'NLS_CALENDAR') nls_calendar,
SYS_CONTEXT('USERENV', 'NLS_DATE_FORMAT') nls_date_format,
SYS_CONTEXT('USERENV', 'NLS_DATE_LANGUAGE') nls_date_language,
SYS_CONTEXT('USERENV', 'NLS_SORT') nls_sort,
SYS_CONTEXT('USERENV', 'CURRENT_USER') current_user,
SYS_CONTEXT('USERENV', 'CURRENT_USERID') current_userid,
SYS_CONTEXT('USERENV', 'SESSION_USER') session_user,
SYS_CONTEXT('USERENV', 'SESSION_USERID') session_userid,
SYS_CONTEXT('USERENV', 'PROXY_USER') proxy_user,
SYS_CONTEXT('USERENV', 'PROXY_USERID') proxy_userid,
SYS_CONTEXT('USERENV', 'DB_DOMAIN') db_domain,
SYS_CONTEXT('USERENV', 'DB_NAME') db_name,
SYS_CONTEXT('USERENV', 'HOST') host,
SYS_CONTEXT('USERENV', 'OS_USER') os_user,
SYS_CONTEXT('USERENV', 'EXTERNAL_NAME') external_name,
SYS_CONTEXT('USERENV', 'IP_ADDRESS') ip_address,
SYS_CONTEXT('USERENV', 'NETWORK_PROTOCOL') network_protocol,
SYS_CONTEXT('USERENV', 'BG_JOB_ID') bg_job_id,
SYS_CONTEXT('USERENV', 'FG_JOB_ID') fg_job_id,
SYS_CONTEXT('USERENV', 'AUTHENTICATION_TYPE') authentication_type,
SYS_CONTEXT('USERENV', 'AUTHENTICATION_DATA') authentication_data
from dual;
-- 另一种展示方式
set serveroutput on
exec dbms_output.put_line(sys_context('USERENV','CURRENT_USER'));
2. 自定义上下文属性
create user king identified by king;
grant dba to king;
connect king/king
create table emp as select * from scott.emp;
create context emp_user using current_emp;
-- 创建包current_emp
CREATE OR REPLACE PACKAGE current_emp IS
PROCEDURE set_emp_info;
END;
/ CREATE OR REPLACE PACKAGE BODY current_emp IS
PROCEDURE set_emp_info IS
v_sal emp.sal%TYPE;
v_job emp.JOB%TYPE;
v_hiredate emp.HIREDATE%TYPE;
BEGIN
SELECT sal, JOB, HIREDATE
INTO v_sal, v_job, v_hiredate
FROM emp
WHERE ename = SYS_CONTEXT('USERENV', 'SESSION_USER');
DBMS_SESSION.SET_CONTEXT('emp_user', 'sal', v_sal);
DBMS_SESSION.SET_CONTEXT('emp_user', 'job', v_job);
DBMS_SESSION.SET_CONTEXT('emp_user', 'hiredate', v_hiredate);
DBMS_SESSION.SET_CONTEXT('emp_user', 'ename', SYS_CONTEXT('USERENV', 'SESSION_USER'));
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
END;
/
-- 创建触发器
CREATE or REPLACE TRIGGER emp_logon
AFTER LOGON ON DATABASE
BEGIN
current_emp.set_emp_info;
END;
/
-- 验证
exit
sqlplus king/king
SET SERVEROUTPUT ON
EXEC dbms_output.put_line(sys_context('emp_user', 'SAL'));
EXEC dbms_output.put_line(sys_context('emp_user', 'job'));
EXEC dbms_output.put_line(sys_context('emp_user', 'hiredate'));
SELECT sys_context('emp_user', 'SAL') FROM DUAL;
--列出当前session 的所有上下文属性
sqlplus king/king
SET ECHO OFF
SET SERVEROUTPUT ON
DECLARE
list dbms_session.AppCtxTabTyp;
cnt number;
BEGIN
dbms_session.list_context(list, cnt);
IF cnt = 0 THEN
dbms_output.put_line('No contexts active.');
ELSE
FOR i IN 1 .. cnt LOOP
dbms_output.put_line(list(i).namespace || ' ' || list(i).attribute ||
' = ' || list(i).value);
END LOOP;
END IF;
END;
/
--查询
SELECT *
FROM dba_context
WHERE namespace = 'EMP_USER';
参考
【诗檀学院】ORACLE 11g OCM考试学习材料-手动实操课程
Oracle创建上下文 SYS_CONTEXT的更多相关文章
- 利用Oracle创建表空间和用户
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217152.html 第一步,创建表空间 以SYS/sys账户和SYSDBA身份登录 ...
- 利用Oracle创建数据库
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6217151.html 数据库的创建 打开"所有程序"-" ...
- Oracle创建数据库
Oracle创建数据库有三种方式:一.使用DBCA(Database Configuration Assistant 数据库配置助手):二.使用 create database指令:三.在安装数据库软 ...
- oracle创建表之前判断表是否存在,如果存在则删除已有表
Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...
- oracle创建数据库和用户
以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...
- ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限
Oracle创建用户.表空间.导入导出....命令 //创建临时表空间 create temporary tablespace ext_temptempfile 'D:\oracle\product\ ...
- Oracle创建表空间和表
创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablesp ...
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
引用自 :http://www.2cto.com/database/201307/224836.html Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍 先假设有这么一个表 ...
- Oracle创建用户并给用户授权查询指定表或视图的权限
MSV31账户登录数据库进行如下操作: CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT TABLESPACE "TBS_DN ...
随机推荐
- 配置Apache运行在event事件驱动模式下
(1)启用MPM Include conf/extra/httpd-mpm.conf (2)配置evnet MPM参数 <IfModule event.c> #default 3 Ser ...
- 安卓 adb命令
获取包名 aapt d badging C:\Users\600844\Desktop\beijingtoon.apk "package launchable-activity" ...
- 粒子系统与雨的效果 (DirectX11 with Windows SDK)
前言 最近在学粒子系统,看这之前的<<3D图形编程基础 基于DirectX 11 >>是基于Direct SDK的,而DXSDK微软已经很久没有更新过了并且我学的DX11是用W ...
- vscode常用插件小结
工欲善其事,必先利其器. 个人用过的代码编辑器有sublime,webstrom,vscode,H5builder.综合比较下来还是更倾向于vscode. sublime是一款轻量级的编辑器,优点是启 ...
- win7 vs2010 opengl配置教程
一.安装GL库文件 1. opengl和glu的安装(不用安装) win7安装完成之后已经默认安装了opengl32.dll和glu32.dll,并且其对应的lib文件也已经安装
- 【miscellaneous】理解Gstreamer架构
本文给出了Gstreamer的总体设计.通过阅读本文可以了解Gstreamer的内部工作原理.本文编译自gstreamer源码中的文档,原文在源码中的位置是/gstreamer/docs/design ...
- 第一章:mysql的介绍与安装
什么是数据库管理系统 1)管理数据(增删改查) 2)存储数据 数据库管理系统的分类 1)关系型数据库(rdbms) 典型产品:mysql,oracle,mariadb,mssql(sqlserver) ...
- Oracle数据库四种数据完整性约束
Oracle数据库四种数据完整性约束 1.实体完整性 同样的数据不能重复插入(1)采取什么措施保证实体完整性?我们可以给表创建主键约束吗,主键保证了数据的唯一性,主键可以保证同一条记录只能插入一次. ...
- 分布式缓存 - hash环/一致性hash
一 引言 当前memcached,redis这类分布式kv缓存已经非常普遍.我们知道memcached的分布式其实是一种"伪分布式",也就是它的服务器节点之间其实是无关联的,之间没 ...
- 正则表达式(Regular Expression, RegEx)学习入门
1. 概述 正则表达式(Regular Expression, RegEx)是一种匹配模式,描述的是一串文本的特征. 正如自然语言中高大.坚固等词语抽象出来描述事物特征一样,正则表达式就是字符的高度抽 ...