一、创建和管理数据库用户帐户
1、每个数据库用户帐户都具有以下项目:
(1)唯一的用户名:不能超过30个字节,不能包含特珠字母,而且必须字母开头。
(2)验证方法:口令、外部验证、全局验证
(3)默认表空间:注意创建对象和设置空间限额要另外单独授权。
(4)临时表空间:用户可在其中创建临时对象(于排序和临时表)的表空间
(5)用户概要文件:分配给用户的一组资源与口令的限制。
(6)使用户组:由资源管理器使用。
(7)锁定状态:用户只能访问"未锁定"帐户。
2、创建用户帐户
CREATE USER gyj3
IDENTIFIED BY gyj3
DEFAULT TABLESPACE tp1
QUOTA 10M ON tp1
TEMPORARY TABLESPACE temp
--PROFILE app_user
--PASSWORDEXPIRE
--ACCOUNT LOCK;
建一个最简单的用户操作命令如下:
sys@OCM>CREATE USER gyj3
2 IDENTIFIED BY gyj3
3 DEFAULT TABLESPACE tp1
4 QUOTA 10M ON tp1
5 TEMPORARY TABLESPACE temp;
User created.
3、查询用户信息
sys@OCM>col username for a30
sys@OCM> col default_tablespace for a10
sys@OCM> col temporary_tablespace fora10
sys@OCM> selectusername,default_tablespace,temporary_tablespace,to_char(created,'yyyy-mm-dd:hh24:mi:ss'),account_statusfrom dba_users;
USERNAME DEFAULT_TA TEMPORARY_TO_CHAR(CREATED,'YY ACCOUNT_STATUS
------------------------------ -------------------- ------------------- --------------------------------
MGMT_VIEW SYSTEM TEMP 2009-08-13:23:24:58 OPEN
SYS SYSTEM TEMP 2009-08-13:23:00:59 OPEN
SYSTEM SYSTEM TEMP 2009-08-13:23:00:59OPEN
DBSNMP SYSAUX TEMP 2009-08-13:23:06:35 OPEN
SYSMAN SYSAUX TEMP 2009-08-13:23:22:32 OPEN
GYJ3 TP1 TEMP 2013-03-01:10:51:33 OPEN
GYJ TP1 TEMP 2013-02-28:15:21:03 OPEN
OUTLN SYSTEM TEMP 2009-08-13:23:01:00 EXPIRED & LOCKED
FLOWS_FILES SYSAUX TEMP 2009-08-13:23:26:08 EXPIRED & LOCKED
MDSYS SYSAUX TEMP 2009-08-13:23:12:05 EXPIRED & LOCKED
ORDSYS SYSAUX TEMP 2009-08-13:23:12:05 EXPIRED & LOCKED
EXFSYS SYSAUX TEMP 2009-08-13:23:09:35 EXPIRED& LOCKED
WMSYS SYSAUX TEMP 2009-08-13:23:07:30 EXPIRED & LOCKED
APPQOSSYS SYSAUX TEMP 2009-08-13:23:06:36 EXPIRED & LOCKED
APEX_030200 SYSAUX TEMP 2009-08-13:23:26:09 EXPIRED & LOCKED
OWBSYS_AUDIT SYSAUX TEMP 2009-08-13:23:35:05 EXPIRED & LOCKED
ORDDATA SYSAUX TEMP 2009-08-13:23:12:05 EXPIRED & LOCKED
CTXSYS SYSAUX TEMP 2009-08-13:23:09:45 EXPIRED & LOCKED
ANONYMOUS SYSAUX TEMP 2009-08-13:23:10:12 EXPIRED & LOCKED
XDB SYSAUX TEMP 2009-08-13:23:10:12 EXPIRED & LOCKED
ORDPLUGINS SYSAUX TEMP 2009-08-13:23:12:05 EXPIRED & LOCKED
OWBSYS SYSAUX TEMP 2009-08-13:23:35:03 EXPIRED & LOCKED
SI_INFORMTN_SCHEMA SYSAUX TEMP 2009-08-13:23:12:05 EXPIRED & LOCKED
OLAPSYS SYSAUX TEMP 2009-08-13:23:18:04 EXPIRED & LOCKED
SCOTT USERS TEMP 2009-08-13:23:35:44 EXPIRED & LOCKED
ORACLE_OCM USERS TEMP 2009-08-13:23:02:20 EXPIRED & LOCKED
XS$NULL USERS TEMP 2009-08-13:23:11:44 EXPIRED & LOCKED
BI USERS TEMP 2013-02-27:23:11:56 EXPIRED & LOCKED
PM USERS TEMP 2013-02-27:23:11:56 EXPIRED & LOCKED
MDDATA USERS TEMP 2009-08-13:23:19:11 EXPIRED & LOCKED
IX USERS TEMP 2013-02-27:23:11:56 EXPIRED & LOCKED
SH USERS TEMP 2013-02-27:23:11:56 EXPIRED & LOCKED
DIP USERS TEMP 2009-08-13:23:01:49 EXPIRED & LOCKED
OE USERS TEMP 2013-02-27:23:11:56 EXPIRED & LOCKED
APEX_PUBLIC_USER USERS TEMP 2009-08-13:23:26:09EXPIRED & LOCKED
HR USERS TEMP 2013-02-27:23:11:56 EXPIRED & LOCKED
SPATIAL_CSW_ADMIN_USR USERS TEMP 2009-08-13:23:22:20 EXPIRED & LOCKED
SPATIAL_WFS_ADMIN_USR USERS TEMP 2009-08-13:23:22:15 EXPIRED & LOCKED
二、授予和撤销权限
1、权限分为两大类,系统权限和对象权限
(1)系统权限:允许用户在数据库中执行特定的操作
A、SYSDBA/SYSOPER这两个权限比较特殊
gyj@OCM> select * from dba_sys_privs where granteein('SYSDBA','SYSOPER');
no rows selected
B、DBA的系统权限是可以查到的
gyj@OCM> select * from dba_sys_privs where grantee='DBA';
GRANTEE PRIVILEGE ADM
---------------------------------------------------------------------- ---
DBA DROP ANY CUBE BUILD PROCESS YES
DBA CREATE CUBE YES
DBA ALTER ANY CUBE DIMENSION YES
DBA ALTER ANY MINING MODEL YES
(中间结果省略)
…………………………..
202 rows selected.
C、普通用户的系统权限
gyj@OCM> select * fromdba_sys_privs where grantee='GYJ';
GRANTEE PRIVILEGE ADM
------------------------------ -------------------------------------------
GYJ UNLIMITED TABLESPACE NO
D、 当前会话上的系统权限
gyj@OCM> select * from session_privs;
PRIVILEGE
----------------------------------------
ALTER SYSTEM
AUDIT SYSTEM
CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
(中间结果省略)
……………………………
202 rows selected.
(2)对象权限:允许用户访问和操纵特定的对象
A、查对象权限
gyj@OCM> select * fromdba_tab_privs where grantee='GYJ';
no rows selected
B、查对象上列的权限
gyj@OCM>select * from dba_col_privs wheregrantee='GYJ';
no rows selected
为什么没显示对象的权限和对象上列的权限呢,用户GYJ明明有对象的呀:
gyj@OCM> show user;
USER is "GYJ"
gyj@OCM> select table_name from tabs;
TABLE_NAME
------------------------------
T10
好,我登录到HR用户下给GYJ用户授对象权限
sys@OCM> conn hr/hr
Connected.
hr@OCM> grant select on employees togyj;
Grant succeeded.
hr@OCM> grant update (department_id) onemployees to gyj;
Grant succeeded.
再次查对象权限就有结果了,这下明白这个意思了吧,好!这个就不多说了。
hr@OCM> select * from dba_tab_privs wheregrantee='GYJ';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
------------------------------------------------------------ ------------------------------------------------------------ ---------------------------------------- --- ---
GYJ HR EMPLOYEES HR SELECT NO NO
hr@OCM> select * from dba_col_privs where grantee='GYJ';
GRANTEE OWNER TABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA
------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ ---------------------------------------- ---
GYJ HR EMPLOYEES DEPARTMENT_ID HR UPDATE NO
2、with admin option与with grantoption区别
(级联的意思就是第一个用户的权限再授予其他用户,如果第一个用户被取消了该权限,那么通过其他通过第一个用户授予该权限的用户也被波及到,权限同时被取消,不级联的话其他用户就不会被波及。)
(1) with admin option系统权限赋予级联,取消是不级联的,如下图所示:
with admin option的意思是被授予该权限的用户有权将某个权限(如create any table)授予其他用户或角色,取消是不级联的。
如管理员DBA授予Jeff系统权限create session with admin option,然后Jeff又把createsession权限授予Emi,但DBA收回Jeff的create session权限时,Emi依然拥有create session的权限。但管理员DBA可以显式收回Emi的 create session权限,即直接revoke create session from Emi;
好!我们来做个测试:
A、 先建两用户Jeff和Emi
hr@OCM> conn / as sysdba
Connected.
sys@OCM> create user Jeff identified byJeff;
User created.
sys@OCM> create user Emi identified byEmi;
User created.
B、 管理员给Jeff系统权限createsession with admin option;
sys@OCM> grant create session to Jeff with admin option ;
Grant succeeded.
C、 Jeff又把create session权限授予Emi
sys@OCM> conn Jeff/Jeff
Connected.
jeff@OCM> grant create session to Emi;
Grant succeeded.
D、最后用Emi登录
jeff@OCM> conn Emi/Emi
Connected.
Emi登录成功,说明用with adminoption权限级联授权成功。
E、 管理员收加Jeff的grant createsession 权限。
emi@OCM> conn / as sysdba
Connected.
sys@OCM> revoke createsession from Jeff;
Revoke succeeded.
F、Jeff用户登录
sys@OCM> conn Jeff/Jeff
ERROR:
ORA-01045: user JEFF lacks CREATE SESSIONprivilege; logon denied
Warning: You are no longer connected toORACLE.
报错,说明权限回收成功
G、 最后我们看看用Emi用户登录
sys@OCM> conn Emi/Emi
Connected.
登录成功,说明权限回收不级联。
(2)with grant option对象权限赋予级联,取消也是级联的,如下图所示:
不同的是管理员收回用withgrant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to Jeff,Jeff用户把此权限授予Emi,但管理员Bob收回Jeff的权限时,Emi的权限也会失效,但管理员不可以直接收回Emi的SELECT ON TABLE 权限。
好这个测试跟上面一样,很简单,我就不来做了。没明白的自己测试一把就明白了。
3、授予权限
grant create any table to gyj;
grant select any table to gyj; --gyj用户无法访问SYS用户中的DBA_系列视图、数据字典表
grant update on t10 to gyj with grant option;
grant update(id) on t10 to gyj with grant option;
4、撤销权限
revoke create any table from gyj;
revoke update on t10 from gyj;
三、创建和管理角色
1、角色的作用
(1)简化权限管理:将一些权限授予给某个角色,然后将该角色授予给各个用户,而不是将同一组权限授予给多个用户。
(2)动态地管理权限:修改了角色关联的权限,则授予该角色所有的用户都会立即自动获得修过的权限。
(3)有选择性地应用权限:启用或禁用角色可以暂时打开或关闭权限。
2、角色的特性
(1)角色就像用户,可以将权限授予给角色,也可以撤销角色的权限。
(2)角色就像系统权限,可以将其授予给用户或其它角色,也可以撤销用户或其它角色的角色。
(3)角色可以由系统权限和对象权限组成。
(4)可以针对授予某一角色的每个用户启用或禁用该角色。
(5)可能需要口令才能启用角色。
(6)角色不由任可用户拥有,角色也不属于任可方案。
3、预定义角色
(1)CONNECT:
CREATE SESSION
(2)RESOURCE:
CREATE CLUSTER/CREATE INDEXTYPE/CREATE OPERATOR/CREATEPROCEDURE/CREATE SEQUENCE/CREATE TABLE/CREATE TRIGGER/ CREATE TYPE
(3)DBA:具有大多数系统权限和其它若干个角色。不要将其授予给管理员之外的人员
4、创建角色,操作如下命令:(注意红色字体)
(1)先做一系列的查询
gyj@OCM> select * from dba_role_privs where grantee='Emi';
no rows selected
gyj@OCM> select * from role_sys_privs where role='ROLE_GYJ1';
no rows selected
gyj@OCM> select * from role_tab_privswhere role='ROLE_GYJ1';
no rows selected select * from session_privs;
gyj@OCM> conn Emi/Emi
Connected.
emi@OCM> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
(2)开始建角色及授权
gyj@OCM> create role role_gyj1;
Role created.
gyj@OCM> grant select any table torole_gyj1;
Grant succeeded.
gyj@OCM> grant role_gyj1 to Emi;
Grant succeeded.
emi@OCM> conn Emi/Emi
Connected.
emi@OCM> select * from gyj.t10;
ID NAME
--------------------------------------------------------------------------------------------------------------
1 gyj1
emi@OCM> select * from session_privs;
PRIVILEGE
----------------------------------------
CREATE SESSION
SELECT ANY TABLE
四、创建和管理概要文件
1、创建概要文件
CREATE PROFILE app_user LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 3000
CONNECT_TIME 45
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL 1000
PRIVATE_SGA 15K
COMPOSITE_LIMIT 5000000
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 60
PASSWORD_REUSE_TIME 60
PASSWORD_REUSE_MAX 5
PASSWORD_LOCK_TIME 1/24
PASSWORD_GRACE_TIME 10;
2、口令管理
(1)用户的锁定
FAILED_LOGIN_ATTEMPTS n :当用户登录N次后仍没有输入正确的密码,用户被自动的锁定。
PASSWORD_LOCK_TIME n :当达到上面参数的限制,用户被锁定后,用户被锁定的天数。
createprofile pro2 limit failed_login_attempts 3 PASSWORD_LOCK_TIME 1;
select *from dba_profiles where PROFILE='PRO2';
(2)口令的有效期
PASSWORD_LIFE_TIME n :设置口令的有效期,单位是天数。
PASSWORD_GRACE_TIMEn :宽限期。
口令无效后,用户应该即时的更换口令。在指定的宽限期内,如果用户仍没有更换口令,用户将无法登录。在宽限期内每登录一次,都会收到一条警告信息。
(3)历史口令限制
PASSWORD_REUSE_TIME:可以重复使用以前用过的口令前的天数。也就是当设置新口令后,在N天内,不能使用以前用过的老口令再
(4)新口令。
PASSWORD_REUSE_MAX某一口令最多被使用的次数。
如果将PASSWORD_REUSE_MAX设置为3,在更改用户口令时,某一串符号被三次设置为口令后,这串符号将不能再被设为口令。
3、资源管理
(1)启用资源限制
show parameterresource_limit
(2)会话级资源限制,主要针对会话,在配置文件中,有下面几个会话级资源限制参数:
CPU_PER_SESSION :会话所能使用的CPU时间总量。单位是百分之一秒。
SESSIONS_PER_USER :同一用户所能的开的最多会话数
CONNECT_TIME :以分钟计算的会话持续连接时间
IDLE_TIME :以分钟计算的空闲时间
LOGICAL_READS_PER_SESSION :会话所能读取的数据块数。
PRIVATE_SGA :在共享服务器模式下,每个用户连接所能使用的SGA中的空间,单位是字节。
如果开启了资源限制的会话,超出了上面这些限制,将会报出ORA-02391错误,ORACLE将同时断开会话的连接。
(3)调用级资源限制
调用级别的资源限制,主要针对每条命令的执行。每条命令的执行都是一次调用,调用级资源限制决定了每次调用所能使用的CPU时间和I/O数。调用级资源限制参数有上面两个:
CPU_PER_CALL :每次调用所能占用的CPU时间,单位百分之一秒
LOGICAL_READS_PER_CALL :每次调用所能读取的数据块数
4、查概要文件的信息
select * from dba_profiles;