Oracle 用户与概要文件

2012-09-01 15:05:47| 分类: Oracle | 标签:用户与概要文件 |举报 |字号大中小 订阅

 
 
用户管理看上去简单其实也是最常出现问题的一个环节,因为它不仅包括创建用户与授权,还包括安全策略与资源管理。在大型应用,资源的管理是对DBA的一个考验。
 
默认给用户分配的是DEFAULT概要文件,将该文件赋予了每个创建的用户。但该文件对资源没有任何限制,因此管理员常常需要根据自己数据库系统的环境自行建立概要文件。

1、用户的创建
可以使用create user命令进行用户的创建,如下:
SQL> create user djp01 identified by djp2012
2 /
 
User created.
 
SQL>
说明:创建的用户名为djp01,用户 identified by指定用户的密码,密码为djp2012。上述的语句中没有对用户djp01指定永久表空间与临时表空间,这时,Oracle将为新创建的用户指定一个默认的永久表空间与一个临时表空间。如下:
SQL> select default_tablespace,temporary_tablespace
2 from dba_users
3 where username = upper('djp01')
4 /
 
DEFAULT_TABLESPACE
------------------------------------------------------------
TEMPORARY_TABLESPACE
------------------------------------------------------------
USERS
TEMPTBSGRP
 
SQL>
当创建一个新用户后,必须给用户授予必要的权限以后,用户才可以进行工作。对于djp01用户,还不能连接到数据,因为它不具有相关的权限。要想使用户连接到数据库,必须给它授予连接权限,如下:
SQL> conn djp01/djp2012
ERROR:
ORA-01045: user DJP01 lacks CREATE SESSION privilege; logon denied
 
 
Warning: You are no longer connected to ORACLE.
SQL>
SQL> grant create session to djp01
2 /
 
Grant succeeded.
 
SQL> conn djp01/djp2012
Connected.
SQL>
说明:当给用户djp01授予连接权限时,该用户成功连接。对于连接,Oracle还提供了一个连接的角色
connect。可以给用户授予连接角色。下面我们查看用户djp01在表空间上的使用情况:
SQL> select tablespace_name,bytes/1024/1024 as use_size
2 from dba_ts_quotas
3 where username = upper('djp01')
4 /
 
no rows selected
 
SQL>
我们发现,用户djp01对表空间users没有任何配额。下面我们试卷在用户djp01下创建表,
SQL> create table t
2 (
3 x number,
4 y varchar2(10)
5 )
6 /
create table t
*
ERROR at line 1:
ORA-01031: 权限不足
 
SQL>
SQL> grant create table to djp01
2 /
 
Grant succeeded.
 
SQL>
SQL> create table t
2 (
3 x number,
4 y varchar2(10)
5 )
6 /
说明:当我们在djp01用户下创建表对象时,提示无权限,之后授予相应的权限并重新创建,发现,该语句一直处于挂起状态。
因为,用户djp01在表空间users中无一定的配额。(在无配额时,会出现“ORA-01950”错误,但在11g中缺于挂起状态。这个根据实际环境来分析)。下面我们给用户djp01在表空间users分配一定的配额并创建:
SQL> alter user djp01
2 quota 100M on users
3 /
 
User altered.
 
SQL>
SQL> create table t
2 (
3 x number,
4 y varchar2(10)
5 )
6 /
 
Table created.
 
SQL>
这时,我们发现,可以成功创建。下面我们再查看用户djp01在表空间上的使用情况:
SQL> select tablespace_name,bytes/1024/1024 as quota_size
2 from dba_ts_quotas
3 where username = upper('djp01')
4 /
 
TABLESPACE_NAME
QUOTA_SIZE
------------------------------------------------------------
----------
USERS
.0625
 
SQL>
 
我们也可以在创建用户的时候指定具体的表空间及配额,如下:
SQL> create user djp02 identified by djp2012
2 default tablespace imtabdata
3 temporary tablespace temptbsgrp
4 quota 200M on imtabdata
5 /
 
User created.
 
SQL>
说明:使用default
tablespac指定用户djp02默认永久表空间imtabdata,temporary
tablespace指定临时表空间或临时表空间组(关于临时表空间组请参考http://blog.163.com/donfang_jianping/blog/static/13647395120127252910384/)。使用quota为用户在指定的表空间分配配额。
 
2、用户的更改与删除
可以使用altter user命令来更改用户,可以更改用户的项为:
用户的密码
用户的表空间
用户的表空间配额
指派概要文件和默认角色(概要文件参见下文)
如:我们更改用户djp01的密码,
SQL> alter user djp01 identified by djp01
2 /
 
User altered.
 
SQL>
其他的更改项与更改密码类似,我这里不一一不列举,有需要的请查阅相关资料或给我留言。
如果使用alter user命令修改密码,那么必须具有alter
user权限或DBA更改。如果用户自己更改,可以使用SQL*Plus下的password命令即可,如下:
SQL> password
Changing password for DJP01
Old password:
New password:
Retype new password:
Password changed
SQL> conn djp01/djp2012
Connected.
SQL>
密码成功更改。
 
关于用户的删除,可以使用drop user命令进行删除,如下:
SQL> drop user djp01;
drop user djp01
*
ERROR at line 1:
ORA-01922: 必须指定 CASCADE 以删除 'DJP01'
 
 
SQL>
我们发现使用drop
user对用户djp01进行删除,抛出一个错误。这是因为,djp01用户下拥有对象,不能进行简单删除。如果确实要进行删除,可以加上cascade命令即可。如下:
SQL> drop user djp01 cascade;
 
User dropped.
 
SQL>
这时用户连同它的对象一起被删除。如果用户下没有具体的对象,使用drop user <username >删除即可。
3、概要文件
我们创建了一个用户,为其授予权限,那么就可以该用户就可以使用。如果一个用户疯狂地使用资源,那么就会造成数据库资源的缺乏或者是一个不会法的使用者疯狂地对一个用户的密码进行破解,那么很可能会造成信息的泄露与丢失。
为些,我们可以在Oracle中使用概要文件(profile)来进行资源的限制与密码相关特性的设置。当我们创建一个用户时,如果不指定相应的概要文件,那么,Oracle将为其指定一个默认的概要文件。如下:
SQL> select profile
2 from dba_users
3 where username = upper('djp02')
4 /
 
PROFILE
------------------------------------------------------------
DEFAULT
 
SQL>
说明:用户djp02所使用的概要文件为default。下面我们查看概要文件default的特性,如下:
SQL> select distinct resource_name,limit
2 from dba_profiles
3 where profile = upper('default')
4 /
 
RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
PASSWORD_LOCK_TIME
1
 
CONNECT_TIME
UNLIMITED
 
IDLE_TIME
UNLIMITED
 
 
RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
PASSWORD_GRACE_TIME
7
 
PRIVATE_SGA
UNLIMITED
 
LOGICAL_READS_PER_SESSION
UNLIMITED
 
 
RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
LOGICAL_READS_PER_CALL
UNLIMITED
 
FAILED_LOGIN_ATTEMPTS
10
 
PASSWORD_VERIFY_FUNCTION
NULL
 
 
RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
CPU_PER_SESSION
UNLIMITED
 
SESSIONS_PER_USER
UNLIMITED
 
PASSWORD_LIFE_TIME
180
 
 
RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
PASSWORD_REUSE_MAX
UNLIMITED
 
PASSWORD_REUSE_TIME
UNLIMITED
 
CPU_PER_CALL
UNLIMITED
 
 
RESOURCE_NAME
----------------------------------------------------------------
LIMIT
--------------------------------------------------------------------------------
COMPOSITE_LIMIT
UNLIMITED
 
 
16 rows selected.
 
SQL>

通过查看发现,概要文件default对大部分参数的值几乎都是unlimited。如果给用户指定默认的要件文件,最终可能会出现源源缺乏问题。下面我们总体看一个概要文件的创建与使用:

SQL> create profile miser
2 limit
3 connect_time 200
4 idle_time 60
5 sessions_per_user 2
6 failed_login_attempts 3
7 /
 
Profile created.
 
SQL>

说明:我们创建的概要文件为miser(中文翻译为“守财奴”,我时常看一些大师级写的书,他们对名字的取法很讲究,我这里也用一下),connect_time指出数据库允许最大连接120秒,idle_time指出如果用户空闲的时间超出60秒,那么用户将退出;

sessions_per_user指出限制用户只能有两个会话;failed_login_attempts指出如果用户登录三次没有成功,那么,该用户将被锁住。概要文件可以在用户创建时指定,也可以在用户创建后指定,例子如下:
SQL> create user djp01 identified by djp2012
2 default tablespace imtabdata
3 temporary tablespace temptbsgrp
4 quota 100M on imtabdata
5 profile miser
6 /
 
User created.
 
SQL>
说明:我们在第4行使用profile关键字指定概要文件为miser。我们也可以用如下的试指定:
SQL> alter user djp01
2 profile miser
3 /
 
User altered.
 
SQL>
这时,用户djp01已经拥有了概要文件中的特性。下面我们简单的做个测试,如下:
SQL> conn djp01/aaa
ERROR:
ORA-01017: invalid username/password; logon denied
 
Warning: You are no longer connected to ORACLE.
 
SQL> conn djp01/bbb
ERROR:
ORA-01017: invalid username/password; logon denied
 
SQL> conn djp01/ccc
ERROR:
ORA-01017: invalid username/password; logon denied
 
 
SQL> conn djp01/ddd
ERROR:
ORA-28000: the account is locked
 
SQL> conn djp01/2012
ERROR:
ORA-28000: the account is locked
 
SQL>
我们发现当用户djp01登录三次不成功时,该用户将会被锁住。当用户被锁后,我们可以使用超级用户将其解锁,如下:
SQL> alter user djp01 account unlock
2 /
 
User altered.
 
SQL> conn djp01/djp2012
Connected.
SQL>
解锁后,可以成功连接。

有关于概要文件的参数,可以分为两类,一类为资源类,另一类为密码类。下面我们分别进行介绍:

(1)资源类
connect_time:指定一个会话能保持连接到数据库的总时间
cpu_per_call:限制事务内每个调用使用CPU的时间。
cpu_per_sessin:限制每个会话内使用CPU的时间。
sessions_per_time:限制用户可以打开并发的最大会话数。
idle_time:限制用户的最大空闲时间。
logical_reads_per_session:限制数据块读取的总数目。
logical_reads_per_call:限制每个会话调用总的逻辑读取数。
private_sga:指定一个在SGA的共享池组件中分配的空间限额(仅适用于共享服务器)。
composite_limit:对资源设置使用一个总的限制。Oracle考虑用四个参数来计算加权的composite_limit。分别为:cpu_per_session,logical_reads_per_sessions,connect_time,private_sga。可以使用alter
resource cost来设置.。
(2)密码类
failed_login_attempts:指用户被锁之前可以尝试的最大登录数。
password_life_time:指定使用特定密码的时间限制,如果超出此时间间隔,那么密码将过期。
password_grace_time:设置一个时间段,在此时间段内将发出一个密码过期警告。
password_lock_time:设置用户被锁定的天数,过了此天数,用户将自行解锁。
password_reuse_time:指定重新使用密码要经过多少天。
password_reuse_max:指定重新使用某个特定密码前,要经过多少次修改。
passwrod_verify_function:此参数允许指定Oracle提供的密码验证函数来建立自动密码验证。
 
参数稍多一些,对于这些参数,我建议不要去背,只要知道意义就可以了,如果有某个参数忘了,可以查看dba_profiles字典。

可以使用alter
profile来更改概要文件,如下:

SQL> alter profile miser
2 limit
3 password_life_time 30
4 password_grace_time 25
5 /
 
Profile altered.
 
SQL>
 
如果在概要文件中使用资源的设置,那么,如是使其生效,必须更改初始化参数resource_limit为true,此参数的默认值为false。
可以使用drop profile进行删除,如下:
SQL> drop profile miser
2 /
drop profile miser
*
ERROR at line 1:
ORA-02382: 概要文件 MISER 指定了用户, 不能没有 CASCADE 而删除
 
 
SQL>
提示删除出错,这是因为概要文件miser指定了用户,如果没有指定用户,可以使用该命令进行删除。如果指定了用户,要想删除,可以使用如下删除方式:
SQL> drop profile miser cascade
2 /
 
Profile dropped.
 
SQL>
成功删除。
概要文件多数用来密码的管理,关于资源的管理,Oracle提供了一个更为高级的管理工具——Database Rsource
Manager,在以后的文章我会介绍该工具的使用。

oracle_用户与概要文件的更多相关文章

  1. Oracle密码概要文件,密码过期时间180天修改为3天,相关用户密码是否过期

    #Oracle用户密码,概要文件修改测试 #默认的用户使用概要文件,默认概要文件密码过期时间参数180天,修改为3天,对于老的用户来说,是密码过期,还是未发生改变, 对于新用户来说,新设置的密码过期时 ...

  2. ORACLE概要文件

    oracle系统为了合理分配和使用系统的资源提出了概要文件的概念.所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件.将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器 ...

  3. 【Oracle】创建概要文件

    任务1:创建profile 创建概要文件my_profile 1)密码复杂性要求:启用: 2)密码长度最小值:8位: 3)密码错误输入三次,锁定账户,2分钟后自动解锁 --创建密码复杂度校验函数 @? ...

  4. oracle11G 用户密码180天修改概要文件过程

    oracle11G 用户密码180天修改概要文件过程 原因 创建用户的时候不指定概要文件的默认的概要文件是default, 而默认的概要文件中的设置如下,注意斜体部分 PROFILE RESOURCE ...

  5. SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  6. Oracle_用户管理

    创建用户: CREATE USER user   --创建用户user IDENTIFIED {BY password | EXTERNALLY}  --设备用户密码,EXTERNALLY说用该用户由 ...

  7. oracle profile 概要文件

    Profile文件概述: Profile是Oracle安全策略的一个组成部分,当Oracle建立数据库时,会自动建立名称为Default的Profile文件. 创建用户的时候,如果没有指定profil ...

  8. .Oracle固定执行计划之SQL PROFILE概要文件

    1.  引子Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念.所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件.将概要文件赋予某个数据库用户,在用户连接并访问 ...

  9. Oracle基础 09 概要文件 profile

    --创建 profile 概要文件create profile profile123 limit failed_login_attempts 2;  --修改用户的 profile 文件alter u ...

随机推荐

  1. css01

      1.  常用属性:①color:文本颜色:②background-color:背景颜色:③font-size:文字大小: 2.  样式声明:①内部样式:style=“样式规则:”,写于作用标签内, ...

  2. Bootstrap兼容处理

    接将一下代码引用到页面 </body> 之前 <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js" ...

  3. 已知从BUF开始存放了10个字类型有符号数据,编程求出这10个数中的最大数和最小数(将最大数存入MAX字单元、最小数存入MIN字单元),并将其以10进制数的形式在屏幕上显示出来。

    data segment            pmax db 0dh,0ah , 'MAX :   ','$'    pmin db 0dh,0ah , 'MIN :   ','$'    buf ...

  4. UVa 341 - Non-Stop Travel

    题目大意:给一个地区的地图,上面有若干路口,每个路口因为红灯的缘故要耽误一些时间,给出起点和终点,找出最短路径使得耽误时间最短. 单源最短路问题,Dijkstra算法.同时还要打印路径. #inclu ...

  5. 利用Selenium和Browsermob批量嗅探下载Bilibili网站视频

    Rerence: http://www.liuhao.me/2016/09/20/selenium_browsermob_sniff_bilibili_video/ 日常生活中,用电脑看视频是非常频繁 ...

  6. 用C#开发一个 UWP BLUETOOTH BLE 扫描APP

    什么是WINDOWS UWP UWP即Windows 10 中的Universal Windows Platform简称.即Windows通用应用平台,在Win 10 Mobile/Surface(W ...

  7. 高尔夫 之 TEE

    黑色:男子职业选手蓝色:男子业余高手.女子职业选手白色:男子初学球手.老年球手.女子业余高手红色:女子选手金色:有的球场做为介于 黑Tee (职业球员)与 蓝Tee (业余高手)之间的Tee 台:有的 ...

  8. 封装bt轮播图淡入淡出效果样式

    <!--BT轮播图-->    <div data-ride="carousel" class="carousel slide carousel_inn ...

  9. Angular - - $anchorScroll、$controller、$document

    $anchorScroll 根据HTML5的规则,当调用这个函数时,它检查当前的url的hash值并且滚动到相应的元素. 监听$location.hash()并且滚动到url指定的锚点的地方.可以通过 ...

  10. 如何使用php session

    学会php session可以在很多地方使用,比如做一个后台登录的功能,要让程序记住用户的session,其实很简单,看了下面的文章你就明白了.   PHP session用法其实很简单它可以把用户提 ...