----系统权限
ORACLE 提供了100多种系统权限。SYSTEM_PRIVILEGE_MAP
USER_SYS_PRIVIS;
收回系统权限
REVOKE SYSTEM_PRI FROM USER;
----对象权限
----系统权限
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/
2107

被折叠的 条评论
为什么被折叠?



