管理权限和角色笔记

----系统权限
ORACLE 提供了100多种系统权限。SYSTEM_PRIVILEGE_MAP
USER_SYS_PRIVIS;
收回系统权限
REVOKE SYSTEM_PRI FROM USER;
----对象权限

[@more@]

----系统权限
ORACLE 提供了100多种系统权限。SYSTEM_PRIVILEGE_MAP
USER_SYS_PRIVIS;
收回系统权限
REVOKE SYSTEM_PRI FROM USER;
----对象权限
1 授予ALTER权限
GRANT ALTER ON EMP TO TEST;
2 授予EXECUTE权限
GRANT EXECUTE ON dbms_transcation TO PUBLIC;
3 INDEX
GRANT INDEX ON EMP TO TEST;
4 REFERENCES
GRANT REFERENCES ON EMP TO TEST;
5 列权限
GRANT UPDATE(sal) ON EMP TO TEST;
6 WITH GRANT OPTION(只能被授予用户,而不能授予角色)
GRANT SELECT ON EMP TO TEST WITH GRANT OPTION;
1,显示对象权限 DBA_TAB_PRIVS
2,显示列权限 DBA_COL_PRIVS

角色
预定义角色
CONNECT
RECOURCE
DBA
建立角色
系统权限UNLIMITED TABLESPACE 和 WITH GRANT OPTION 权限不授予角色
------精细访问控制
--应用上下文
默认的USERENV 可以取得当前会话的信息。
TERMINAL
LANGUAGE
NLS_DATE_FORMAT
SESSION_USER。。。
函数SYS_CONTEXT用于取得应用上下文属性的值
SELECT SYS_CONTEXT('USERENV','TERMINAL') FROM DUAL;

-------可以自己建立应用上下文
CREATE OR REPLACE CONTEXT POSITION USING OUTDO.CTX;

CREATE OR REPLACE PACKAGE OUTDO.CTX AS
PROCEDURE SET_POSITION;
END;
/
CREATE OR REPLACE PACKAGE BODY OUTDO.CTX AS
PROCEDURE SET_POSITION IS
ID NUMBER;
BEGIN
IF SYS_CONTEXT('USERENV','SESSION_USER')='OUTDO' THEN
DBMS_SESSION.SET_CONTEXT('POSITION','NAME','小乐');
DBMS_SESSION.SET_CONTEXT('POSITION','POS','CHSI.DB_ASSISTANT');
ELSIF SYS_CONTEXT('USERENV','SESSION_USER')='MX' THEN
DBMS_SESSION.SET_CONTEXT('POSITION','NAME',小刘');
DBMS_SESSION.SET_CONTEXT('POSITION','POS','CHSI_DB_ADMIN');
ELSIF SYS_CONTEXT('USERENV','SESSION_USER')='DXL' THEN
DBMS_SESSION.SET_CONTEXT('POSITION','NAME',小段');
DBMS_SESSION.SET_CONTEXT('POSITION','POS','CHSI_DB_ASSISTANT');
ELSE
DBMS_SESSION.SET_CONTEXT('POSITION','NAME','CHSI');
DBMS_SESSION.SET_CONTEXT('POSITION','POS','CHSI');
END IF;
END;
END;
/

CREATE OR REPLACE TRIGGER LOGIN_GRIG
AFTER LOGON ON DATABASE CALL OUTDO.CTX.SET_POSITION
/

----建立触发器
CONN SYS@LAB AS DBA
CREATE OR REPLACE TRIGGER LOGIN_TRIG
AFTER LOGON ON DATABASE CALL SCOTT.SCX.SET_DEPTNO
/
----建立策略函数

----增加策略
EXECUTE DBMS_RLS.ADD_POLICY('SCOTT','EMP','EMP_POLICY','SCOTT','EMP_SECURITY.EMP_SEC','SELECT');
执行ADD_POLICY之后,会在系统默认的策略组SYS_DEFAULT中增加


-------如何将用户修改表结构的权限去掉?
可以新增字段,不可以删除与修改字段

首先建立用户 TEST,MX,OUTDO
CONN TEST@LAB
CREATE TABLE JPGINFO(
MKEY VARCHAR2(30),
PICPATH VARCHAR2(200),
PICSIZE NUMBER(10)
);
GRANT ALTER ON JPGINFO TO OUTDO;
CONN OUTDO@LAB
----建立存储
CREATE OR REPLACE PROCEDURE OUTDO.ALTER_ON_JGPINFO(COL VARCHAR2) AS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE TEST.JPGINFO ADD '||COL;
END ALTER_ON_JGPINFO;
/
GRANT EXECUTE ON OUTDO.ALTER_ON_JPGINFO TO MX;
CONN MX@LAB
CONN TEST@LAB

SQL> DESC JPGINFO
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
MKEY VARCHAR2(30)
PICPATH VARCHAR2(200)
PICSIZE NUMBER(10)
TEST VARCHAR2(2)


by outdo

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/167606/viewspace-876328/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/167606/viewspace-876328/

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 QueueForMcu 基于单片机实现的队列功能模块,主要用于8位、16位、32位非运行RTOS的单片机应用,兼容大多数单片机平台。 开源代码:https://.com/xiaoxinpro/QueueForMcu 一、特性 动态创建队列对象 动态设置队列数据缓冲区 静态指定队列元素数据长度 采用值传递的方式保存队列数据 二、快速使用 三、配置说明 目前QueueForMcu只有一个静态配置项,具体如下: 在文件 中有一个宏定义 用于指定队列元素的数据长度,默认是 ,可以根据需要更改为其他数据类型。 四、数据结构 队列的数据结构为 用于保存队列的状态,源码如下: 其中 为配置项中自定义的数据类型。 五、创建队列 1、创建队列缓存 由于我们采用值传递的方式保存队列数据,因此我们在创建队列前要手动创建一个队列缓存区,用于存放队列数据。 以上代码即创建一个大小为 的队列缓存区。 2、创建队列结构 接下来使用 创建队列结构,用于保存队列的状态: 3、初始化队列 准备好队列缓存队列结构后调用 函数来创建队列,该函数原型如下: 参数说明: 参考代码: 六、压入队列 1、单数据压入 将数据压入队列尾部使用 函数,该函数原型如下: 参数说明: 返回值说明: 该函数会返回一个 枚举数据类型,返回值会根据队列状态返回以下几个值: 参考代码: 2、多数据压入 若需要将多个数据(数组)压入队列可以使用 函数,原理上循环调用 函数来实现的,函数原型如下: 参数说明: 当数组长度大于队列剩余长度时,数组多余的数据将被忽略。 返回值说明: 该函数将返回实际被压入到队列中的数据长度。 当队列中的剩余长度富余...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值