用户管理及授权管理

  • Post author:
  • Post category:其他


一:创建用户语法

目的





使用

CREATE


USER

语句来创建和配置数据库。

用户,它是一个帐户,您可以通过该帐户登录数据库,并建立Oracle数据库允许用户访问的方法。

可以在Oracle自动存储管理(Oracle ASM)群集中发出此语句,以便将用户和密码组合添加到当前节点的Oracle ASM实例的本地密码文件中。每个节点的Oracle ASM实例都可以使用此语句更新自己的密码文件。密码文件本身必须是由

ORAPWD

效用。

您可以使用户通过代理应用程序或应用程序服务器连接到数据库。



先决条件

你一定有

CREATE


USER

系统特权创建一个具有

CREATE


USER

语句时,用户的权限域为空。要登录到Oracle数据库,用户必须具有

CREATE


SESSION

系统特权因此,在创建用户之后,您应该至少将

CREATE


SESSION

系统特权参考

格兰特

想了解更多信息。

只有经过身份验证的用户

AS


SYSASM

可以发出此命令修改Oracle ASM实例密码文件。

句法

CREATE USER user
   IDENTIFIED { BY password
              | EXTERNALLY [ AS 'certificate_DN'  |  AS 'kerberos_principal_name' ]
              | GLOBALLY [ AS '[ directory_DN ]' ]
              }
   [ DEFAULT TABLESPACE tablespace
   | TEMPORARY TABLESPACE
        { tablespace | tablespace_group_name }
   | { QUOTA { size_clause | UNLIMITED } ON tablespace }...
   | PROFILE profile
   | PASSWORD EXPIRE
   | ACCOUNT { LOCK | UNLOCK }
     [ DEFAULT TABLESPACE tablespace
     | TEMPORARY TABLESPACE
          { tablespace | tablespace_group_name }
     | { QUOTA { size_clause | UNLIMITED } ON tablespace }...
     | PROFILE profile
     | PASSWORD EXPIRE
     | ACCOUNT { LOCK | UNLOCK }
     | ENABLE EDITIONS
     ]...
  ] ;




IDENTIFIED:



子句允许您指示Oracle数据库如何对用户进行身份验证。




BY



password:




子句允许您创建

本地用户并指示用户必须指定


password


登录到数据库。密码区分大小写。任何后续

CONNECT

中使用的相同情况(上、下或混合),用于将此用户连接到数据库的字符串必须指定密码。

CREATE


USER

声明或后续

ALTER


USER

声明。密码可以包含数据库字符集中的任何单字节、多字节或特殊字符,或这些字符的任何组合。





EXTERNALLY:



若要创建一个

外部用户。这样的用户必须通过外部服务(如操作系统或第三方服务)进行身份验证。在这种情况下,Oracle数据库依赖于操作系统或第三方服务的身份验证,以确保特定的外部用户能够访问特定的数据库用户。



certificate_DN:



此子句仅适用于通过SSL身份验证的外部用户。大



证书DN



用户钱包中的PKI证书中的可分辨名称。最大长度



证书DN



是1024个字符


Kerberos_main_name :


此子句仅用于Kerberos认证的外部用户。最大长度



Kerberos_main_name



是1024个字符。

警告:

Oracle强烈建议您不要使用


IDENTIFIED




EXTERNALLY


具有固有的弱登录安全性的操作系统。


对创建外部用户的限制

以下限制适用于创建外部用户:用户

SYS

不能是外部用户。Oracle ASM不支持创建外部用户。



GLOBALLY



子句允许您创建

全局用户

。这样的用户必须得到企业目录服务(Oracle Internet Directory)的授权。



directory_DN


字符串可以采取两种形式之一:

  • 标识此用户的企业目录服务中的X.509名称。它应该是形式的

    CN=



    username,other_attributes


    ,在哪里


    other_attributes


    是目录中用户的其他可分辨名称(DN)。此表单创建

    私有全局模式

    .;

  • 一个空字符串(‘),指示企业目录服务将通过身份验证的全局用户映射到此数据库模式,并具有适当的角色。此表单与指定

    GLOBALLY

    关键字并创建

    共享全局模式

    .


最大长度



directory_DN



是1024个字符。


您可以控制应用程序服务器以指定用户的身份连接并使用


ALTER




USER


声明




对创建全局用户的限制:Oracle ASM不支持创建全局用户。




DEFAULT TABLESPACE:


为在用户架构中创建的对象指定默认表空间。如果省略此子句,则用户的对象将存储在数据库默认表空间中。如果没有为数据库指定默认表空间,则用户的对象将存储在

SYSTEM

表空间。



对默认表空间的限制:

不能指定本地管理的临时表空间(包括撤消表空间)或字典管理的临时表空间作为用户的默认表空间。



TEMPORARY TABLESPACE :


为用户的临时段指定表空间或表空间组。如果省略此子句,则用户的临时段存储在数据库默认临时表空间中,如果没有指定,则存储在

SYSTEM

表空间。

  • 指定


    tablespace


    指示用户的临时表空间。

  • 指定


    tablespace_group_name


    指定的表空间组中的任何表空间中,用户可以保存临时段。


    tablespace_group_name


    .



对临时表空间的限制该条款受以下限制:

  • 表空间必须是临时表空间,并且必须具有标准块大小。

  • 表空间不能是撤消表空间或具有自动段空间管理的表空间。



QUOTA :


配额条款

使用

QUOTA

子句指定用户可以在表空间中分配的最大空间。

A

CREATE


USER

语句可以有多个

QUOTA

用于多个表空间的子句。


UNLIMITED

允许用户不受绑定地在表空间中分配空间。

您可以指定的最大空间为2TB(TB)。如果需要更多的空间,请指定

UNLIMITED

.





配额限制:不能为临时表空间指定此子句。



PROFILE:指定要分配给用户的配置文件。配置文件限制了用户可以使用的数据库资源的数量。如果省略此子句,则Oracle数据库将指定

DEFAULT

配置文件给用户。

注:


Oracle建议您使用数据库资源管理器而不是SQL配置文件来建立数据库资源限制。数据库资源管理器提供了一种更灵活的管理和跟踪资源使用的方法。有关数据库资源管理器的详细信息,请参阅


Oracle数据库管理员指南。





PASSWORD EXPIRE :


指定

PASSWORD


EXPIRE

如果您希望用户的密码过期。此设置强制用户或DBA在用户登录到数据库之前更改密码。



ACCOUNT:


指定

ACCOUNT


LOCK

若要锁定用户帐户并禁用访问权限,请执行以下操作。指定

ACCOUNT


UNLOCK

若要解除用户帐户的锁定并启用对帐户的访问,请执行以下操作。



ENABLE :


启用版本;这个条款是不可逆的。指定

ENABLE


EDITIONS

允许用户使用版本在此架构中创建多个版本的可编辑对象。不能编辑架构中未启用版本的可编辑对象。


二:用户管理实验操作

1:创建一个数据库验证用户,同时为它指定口令、默认表空间、临时表空间、空间配额,并要求他登录后更改口令。

--0)查表空间
select tablespace_name from dba_tablespaces;
--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL> CREATE USER w01 IDENTIFIED BY w01 DEFAULT TABLESPACE users TEMPORARY TABLESPACE tempts QUOTA 10M ON users PASSWORD EXPIRE;
用户已创建
--3)为用户授基本权限
SQL> GRANT CONNECT,RESOURCE TO w01;
授权成功。
--4)使用新用户登录数据库
SQL> CONN w01/w01
ERROR:
ORA-28001: the password has expired
更改u01 的口令
新口令:
重新键入新口令:
口令已更改
已连接。

2、创建数据库验证用户,同时为它指定口令、缺省表空间、临时表空间、 空间配额,并设置该用户为锁定状态。

---0)查表空间
select tablespace_name from dba_tablespaces;
--创建表空间
Create tablespace indx datafile '/u01/app/oracle/oradata/orcl/indx.dbf' size 2M;
--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL>CREATE USER w02 IDENTIFIED BY w02 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON indx QUOTA 1m ON users ACCOUNT LOCK;
用户已创建
--3)为用户授基本权限
SQL> grant connect,resource to w02;
授权成功。
--4)使用新用户登录数据库
SQL> CONN w02/w02
ERROR:
ORA-28000: the account is locked
警告: 您不再连接到ORACLE。
--5)以管理员身份重新登录
SQL>CONNECT / AS SYSDBA
已连接。
--6)为账户解锁
SQL> ALTER USER w02 ACCOUNT UNLOCK;
用户已更改。
--7)使用新账户登录数据库
SQL> CONN w02/w02
已连接。

3、创建一个操作系统验证的用户ops$w03。(

外部用户


--1.使用root创建用户
[root@oracle ~]# useradd -G oinstall w03
[root@oracle ~]# passwd w03
--2.修改环境变量
[root@oracle ~]# su – w03
[w03@ocp ~]$ whoami
[w03@ocp ~]$ vim .bash_profile
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
[w03@ocp ~]$source .bash_profile
--3.在ORACLE中创建
SQL> conn / as sysdba
SQL>create user ops$w03 identified externally;
----4.为用户授权连接
SQL>grant connect to ops$w03;
--5.尝试连接
[w03@ocp ~]$ sqlplus /
SQL> show user
USER is "OPS$W03"

4、用户w02修改自己的口令

--1)以用户u2 登录
SQL>connect w02/w02
已连接。
--2)修改用户口令
ALTER USER w02 IDENTIFIED BY w002;
用户已更改。

5、把用户w02 在USERS 表空间上的配额改为0

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)修改配额
SQL>ALTER USER w02
QUOTA 0 ON USERS;
用户已更改。
CREATE USER w011 IDENTIFIED BY w011 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SELECT tablespace_name,blocks*100/max_blocks || '%' "ok" FROM dba_ts_quotas WHERE username='W011' AND max_blocks<>-1;
TABLESPACE_NAME ok
------------------------------ -----------------------------------------
USERS 0%
SQL> alter user w011 quota 1k on users;
SQL> grant connect to w011;
Grant succeeded.
SQL> grant create table to w011;
Grant succeeded.
SQL> conn w011/w011
SQL> create table ss(sdf int);
insert into ss values(1);
create table ss(sdf int)
*
ERROR at line 1:
ORA-01536: space quota exceeded for tablespace 'USERS'

6、对用户进行修改,要求用户w02 登录后更改口令

SQL> CONN / AS SYSDBA
SQL> ALTER USER w02 PASSWORD EXPIRE;

7、锁定用户账号

SQL>CONNECT / AS SYSDBA
ALTER USER w02 ACCOUNT LOCK;

8、解锁用户账号

SQL>CONNECT / AS SYSDBA
ALTER USER w02 ACCOUNT UNLOCK;

9、删除用户

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)删除用户
SQL>DROP USER w01 CASCADE;
--当前正连接的用户是不能删除的,如果确定要删除该用户, 那么首先终止用户会话,然后删除该用户
Select sid,serial# from v$session where username=’u1’;
Alter system kill session ‘8,25’;
DROP USER u1 CASCADE;

10、查询所有用户的默认表空间

---1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)查询信息
SQL> SELECT username, default_tablespace FROM dba_users;
USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
SYS SYSTEM
SYSTEM SYSTEM
SCOTT SYSTEM
U02 USERS
HR EXAMPLE
RMAN TOOLS
……
已选择35 行。

11、显示用户w02的默认表空间和临时表空间信息

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)查询信息
SQL> SELECT default_tablespace,temporary_tablespace
FROM dba_users WHERE username='W02';
DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
------------------------------ ------------------------------
USERS TEMP

12、查看用户scott 的表空间配额

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)查询信息
SQL>SELECT tablespace_name,blocks*100/max_blocks || '%' FROM dba_ts_quotas WHERE username='SCOTT' AND max_blocks<>-1;
TABLESPACE_NAME 已用空间百分比
----------------------------- -------------------
USERS 6.25%

三:系统权限和对象权限

1、授予用户aaron1 具有创建表和视图的权限。

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
-2)创建用户
SQL> CREATE USER aaron1 IDENTIFIED BY aaron1 DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;
用户已创建
--3)授予权限
SOL>GRANT create session,CREATE TABLE,CREATE VIEW to aaron1;
GRANT UNLIMITED TABLESPACE TO aaron1 ;
授权成功。
--4)使用权限创建表
SOL>connect aaron1/aaron1
已连接。
SOL>create table t1(cola int, colb char(3));
表已创建。
SOL>insert into t1 values(1,'a');
已创建1 行。
SOL>COMMIT;
提交完成。
create view a as select * from t1;

2、授予用户W01D连接数据库和创建表的权限

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL> CREATE USER w01d IDENTIFIED BY w01d DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)授予权限
SOL>GRANT create session,CREATE TABLE to w01d;
--4)使用权限创建表
SOL>connect w01d/w01d
已连接。
SOL>create table t1(cola int, colb char(3));
表已创建。

3、其它用户授予SYSDBA权限

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL> CREATE USER dd IDENTIFIED BY dd DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)授予权限
SOL>GRANT SYSDBA to dd;
授权成功。
SOL>CONN dd/dd AS SYSDBA;
已连接。
Show user
SOL>SHUTDOWN immediate

4、回收用户aaron1 的创建表的权限。

--1)以管理员身份登录
SOL>CONNECT / AS SYSDBA
已连接。
--2)回收权限
SOL>REVOKE CREATE TABLE FROM aaron1;
撤销成功。

5、授予用户bb1有创建存储过程的权限,要求带WITH ADMIN OPTION参数。

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL> CREATE USER bb1 IDENTIFIED BY bb1 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SQL> CREATE USER bb2 IDENTIFIED BY bb2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)管理员授予系统权限,并允许传递
SOL>GRANT create session,CREATE PROCEDURE to bb1 WITH ADMIN OPTION;
授权成功。
--4)以aa1用户登录,授予用户aa2创建存储过程的权限
SOL>CONNECT bb1/bb1
已连接。
SOL>GRANT create session,CREATE PROCEDURE to bb2;
授权成功。
--5)创建存储过程
SOL>connect bb2/bb2
已连接。
SOL> CREATE OR REPLACE PROCEDURE pp
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('ok ');
END;
/
过程已创建

6、回收用户aa1的创建存储过程的权限。

--1)以管理员身份登录
SOL>CONNECT / AS SYSDBA
已连接。
--2)回收权限
SOL>REVOKE CREATE PROCEDURE FROM bb1;
撤销成功。
--3)创建存储过程
SOL>connect bb2/bb2
已连接。
SOL> CREATE OR REPLACE PROCEDURE pp1
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('ok');
END;
/
过程已创建
--当DBA 收回了bb1的CREATE PROCEDURE 系统权限后,用户bb2仍然具有CREATE PROCEDURE 系统权限。因为系统权限不会被级联收回.

四:对象权限管理

1、ss用户把wq表的查询权限授予cc用户

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL> CREATE USER ss IDENTIFIED BY ss DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SQL> CREATE USER cc IDENTIFIED BY cc DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)管理员授予系统权限,并允许传递
SOL>GRANT create session,CREATE table to ss;
Grant create session to cc;
--4)以ss用户登录,创建表插入记录
SOL>CONNECT ss/ss
Create table wq (ee int);
Insert into wq values(12);
--5)ss授予wq对象权限
SOL>GRANT SELECT ON wq to cc;
授权成功。
--6)cc查询wq表
SOL>connect cc/cc
已连接。
SOL>SELECT * FROM ss.wq;

2、ss用户把wq表的ee列的插入和更新权限授予cc用户。

--1)以ss用户登录
SOL>CONNECT ss/ss
已连接。
--2)ss用户授予cc列权限
SOL>GRANT INSERT(ee),UPDATE(ee) ON wq to cc;
授权成功。
--3)cc插入数据到ss的wq表
SOL>connect cc/cc
已连接。
SOL>INSERT INTO ss.wq(ee) VALUES(343);
已创建1 行。

3、为了使得用户cc可以在ss的wq表建立索引,就必须授予INDEX 对象权限。

--1)以SYSTEM 用户登录
SOL>CONNECT ss/ss
已连接。
--2)授权
SOL>GRANT INDEX ON wq to cc;
授权成功。
--3)创建索引
SQL>connect cc/cc
已连接。
SQL>CREATE INDEX idx1 ON ss.wq(ee);
索引已创建。
--4)查询索引
SQL> select index_name from user_indexes;

4、cc用户要基于表ss.wq建立从表,则必须要被授予REFERENCES 对象权限。

--1)以SYSTEM 用户登录
SQL>connect ss/ss
已连接。
--2)建约束
SQL> alter table wq add constraint pk_wq primary key (ee);
SQL> select constraint_name from user_constraints;
删除约束
alter table tempi drop constraint SYS_C002845;
--2)授权
SQL>GRANT REFERENCES ON wq TO cc;
授权成功。
--3)创建外键
conn / as sysdba
SYS@orcl> grant create table to cc;
SQL>connect cc/cc
已连接。
SQL> CREATE TABLE tempi(cola int constraint fk_wq_tempi REFERENCES ss.wq(ee));
表已创建。
SQL> select constraint_name from user_constraints;

5、回收用户cc的wq表的查询权限

--1)以ss用户登录
SOL>CONNECT ss/ss
已连接。
--2)回收权限
SOL>REVOKE SELECT ON wq FROM cc;
撤销成功。
--3)回收权限后,查询出错
SQL>connect cc/cc
已连接。
SQL>SELECT * FROM ss.wq;

6、回收用户cc在ss.wq表上创建索引的权限

--1)以SYSTEM 用户登录
SOL>CONNECT ss/ss
已连接。
--2)授权
SOL>revoke INDEX ON wq from cc;
授权成功。
--3)创建索引
SQL>connect cc/cc
已连接。
SQL>CREATE INDEX idx11 ON ss.wq(ee);

7、使用WITH GRANT OPTION 参数,进行传递授权。

--1)以管理员身份登录
SQL>CONNECT / AS SYSDBA
已连接。
--2)创建用户
SQL> CREATE USER x1 IDENTIFIED BY x1_x1 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
SQL> CREATE USER x2 IDENTIFIED BY x2_x2 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users; SQL> CREATE USER x3 IDENTIFIED BY x3_x3 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
--3)管理员授予系统权限,并允许传递
SOL>GRANT create session,CREATE table to x1;
SOL>Grant create session to x2;
SOL>Grant create session to x3;
--4)以x1用户登录
SOL>CONNECT x1/x1_x1
已连接。
--5)建立表
SOL>create table ww(w1 int);
Insert into ww values(123);
--6)授予x2对象权限
SOL>GRANT select ON ww to x2 WITH GRANT OPTION;
--7)以x2用户登录
SOL>CONNECT x2/x2_x2
已连接。
--8)授予x3对象权限
SOL>GRANT select ON x1.ww to x3;
授权成功。
--9)以x3用户登录
SOL>CONNECT x3/x3_x3
Select * from x1.ww;

8、验证对象权限的级联回收。

--1)以x1用户登录
SOL>CONNECT x1/x1_x1
--2)回收权限
SOL>REVOKE select ON ww FROM x2;
--3)以x2用户登录
SOL>CONNECT x2/x2_x2
Select * from x1.ww;
--4)以x3用户登录
SOL>CONNECT x3/x3_x3
Select * from x1.ww;

9、当把ORACLE resource 角色授予一个user 的时候,不但会授予ORACLE resource 角色,本身的权限,而且还有unlimited tablespace 权限。

conn / as sysdba
SQL> create user desk identified by desk;
SQL> grant create session to desk;
SQL> conn desk
SQL> select PRIVILEGE from user_sys_privs;
SQL> conn / as sysdba
DESK@orcl> conn / as sysdba
SYS@orcl> SELECT PRIVILEGE FROM ROLE_SYS_PRIVS WHERE ROLE='RESOURCE';
SQL> grant resource to desk;
SQL> conn desk
SQL> select PRIVILEGE from user_sys_privs;
SELECT username, granted_role FROM user_role_privs WHERE username='DESK';
SQL> show user
USER is "SYS"
SQL> create role testrole identified using testrole;
SQL> revoke resource from desk;
SQL> grant resource to testrole;
SQL> grant testrole to desk;
SQL> conn desk
SQL> select privilege from user_sys_privs;

10、创建不需要验证的角色oe_clerk。

--1)以管理员身份登录
SOL>CONNECT / AS SYSDBA
已连接。
--2)创建角色
SOL>CREATE ROLE oe_clerk not identified;

11、创建数据库验证的角色hr_clerk。

--1)以管理员身份登录
SOL>CONNECT / AS SYSDBA
已连接。
--2)创建角色
SOL>CREATE ROLE hr_clerk IDENTIFIED BY bonus;
角色已创建
验证角色生效

五:角色管理及角色赋权限

create user wl identified by wl DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
grant create session to wl;
create role ro_wl identified by ro_wl;
grant ro_wl to wl;
create role ro1_wl identified by ro1_wl;
grant ro1_wl to wl;
SQL> conn wl/wl
select PRIVILEGE from user_sys_privs;
create table ww(w1 int);
create view aa as select * from ww;
SQL> conn / as sysdba
grant create table to ro_wl;
Grant create view to ro1_wl;
SQL> conn wl/wl
SELECT username, granted_role FROM user_role_privs WHERE username='WL';
SQL> create table ww(w1 int);
不可以建视图
SQL> create view aa as select * from ww;
不可以建视图
SQL> SET ROLE ro_wl IDENTIFIED BY ro_wl;
SQL> create table ww1(w1 int);
可以建表
create view a1a as select * from ww1;
不能建视图
SQL> SET ROLE ro1_wl IDENTIFIED BY ro1_wl;
create view a1a as select * from ww1;
可以建视图
SQL> create table ww2(w1 int);
不可以建表
--显示当前会话生效的角色
SOL>SELECT * FROM session_roles;
SOL>SET ROLE NONE;
create view a2a as select * from ww1;
不可以建视图
create table ww3(w1 int);
不可以建表

2、回收角色

SOL>CONNECT / AS SYSDBA
SOL>REVOKE ro_wl FROM wl;

3、删除角色

SOL>CONNECT / AS SYSDBA
SOL>DROP ROLE ro_wl;

4、给角色授系统权限

--1)以管理员身份登录
SOL>CONNECT / AS SYSDBA
已连接。
-2)角色授权
SOL>GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW TO oe_clerk WITH ADMIN OPTION;
授权成功。

5、给角色a3授予wl.aa 的DELETE 权限

SQL> CONNECT / AS SYSDBA
SQL> CREATE USER wl IDENTIFIED BY wl_3 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
CREATE USER wll IDENTIFIED BY wll_3 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users;
CREATE ROLE a3;
GRANT CREATE SESSION TO a3;
CREATE ROLE a4;
GRANT CREATE SESSION,create table TO a4;
Grant a4 to wl;
SQL> conn wl/wl_3
SQL> create table aa(ad int);
SQL> insert into aa values(34);
Conn / as sysdba
Grant delete on wl.aa to a3;
Grant a3 to wll;
Conn wll/wll_3
SQL> delete from wl.aa;
1 row deleted.

6、查询数据库中所有的角色。

SOL>SELECT role, password_required FROM dba_roles;

7、显示角色所具有的系统权限

SOL>SELECT * FROM ROLE_SYS_PRIVS WHERE role=' RO1_WL';

8、角色所具有的对象权限

SOL>SELECT owner, table_name, privilege, grantable FROM ROLE_TAB_PRIVS WHERE role= ' RO1_WL';

9、显示用户的默认角色

SQL> SELECT granted_role FROM dba_role_privs WHERE grantee='WL' AND default_role='YES';

10、显示当前用户所具有的所有角色

SQL> SELECT username, granted_role FROM user_role_privs WHERE username='WL';

11、显示当前会话生效的角色

SOL>SELECT * FROM session_roles;


此子句仅适用于通过SSL身份验证的外部用户。大



证书DN



用户钱包中的PKI证书中的可分辨名称。最大长度



证书DN



是1024个字符