oracle_用户与概要文件

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,在以后的文章我会介绍该工具的使用。

时间: 2024-10-02 08:30:57

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

profiles概要文件

查看所有的概要文件信息:SELECT * FROM DBA_PROFILES;SELECT * FROM DBA_PROFILES WHERE PROFILES='DEFAULT'; 使概要文件生效: SYS AS [email protected]>SHOW PARAMETER RESOURCE_LIMIT NAME                     TYPE     VALUE------------------------------------ ----------- ------

简单说说oracle的概要文件。

1.查询概要文件信息: select * from SYS.DBA_PROFILES; select * from SYS.DBA_PROFILES where profile='DEFAULT'; 2. 一个创建概要文件的例子: 1.     CREATE PROFILE  "TEST" 2.     LIMIT 3.     CPU_PER_SESSION  1000 4.     CPU_PER_CALL  6000 5.     CONNECT_TIME  60 6.     

Oracle442个应用实例----------概要文件

--------------------------概要文件讲解:--------------------------------- Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念.所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件.将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器时,系统就按照概要文件给他分配资源.在有的书中将其翻译为配置文件,其作用包括: 1.管理数据库系统资源. 利用Profile来分配资源限额,必须把初始化参数resou

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

SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant Gives other users privileges to access the objects Create role Creates a collection of privileges, usually performed by a DBA Alter user Changes a use

Oracle12C—用户概要文件profile日常操作

在Oracle12C中,的用户概要文件还是增加了很多东西的,比较实用,功能更加强大,下面列举下日常经常的操作内容: 1.在CDB中查询数据库中有多少个profile: SQL> select distinct profile from dba_profiles; PROFILE -------------------------------------------------------------------------------- ORA_STIG_PROFILE DEFAULT 2.查看

访问 PRODUCT_USER_PROFILE 时出错 警告: 未加载产品用户概要文件信息!

今天在oracle数据库中创建了一个普通 用户,但是在连接的时候报了错了 一般这个错误: 一般这个错误都是手工建库的时候忘记做了一步才会报错的 [email protected] >conn ics/1q2w3e ERROR: ORA-00942: ??????? 访问 PRODUCT_USER_PROFILE 时出错 警告: 未加载产品用户概要文件信息! 您需要将 PUPBLD.SQL 作为 SYSTEM 运行 已连接. 错误提示也很明显就是使用system用户运行PUPBLD.SQL 脚本

使用命令管理概要文件

使用命令管理概要文件 概要管理工具的核心是manageprofiles命令,这个命令提供了对概要进行普通的维护活动的方法.可以调用这个命令创建(采用本机方式或静默方式).列出.删除概要,验证概要注册中心,和完成其他功能. (一)manageprofiles命令使用语法介绍 Manageprofiles.sh  -模式  -参数 Manageprofiles命令的模式有: Manageprofiles命令的参数有: (二)创建概要文件可用的模板 注意:dmgr模板已经过时,建议使用manageme

Oracle基础 09 概要文件 profile

--创建 profile 概要文件create profile profile123 limit failed_login_attempts 2;  --修改用户的 profile 文件alter user scott profile profile123; 确保将初始化参数 resource_limit 设置为true,以实施概要文件中的资源限制.否则,Oracle将忽略 create 或 alter profile 语句中的限制设置.与密码有关的概要文件属性不依赖 resource_limi

[转]Oracle DB 概要文件

1.概要文件和用户 一次只能向用户分配一个概要文件. 概要文件: ? 控制资源消耗量 ? 管理帐户状态和口令失效 注:只有将RESOURCE_LIMIT设置为TRUE,概要文件才能强制执行资源限制. 概要文件是用于限制数据库用法和实例资源的一组已命名的资源限制条件.通过概要文件还可管理帐户状态并对用户的口令进行限制(长度.失效时间等).每个用户都分配有一个概要文件,而且该用户在指定时间只属于一个概要文件.如果在更改用户概要文件时用户已经登录,则所做更改只在用户下一次登录时才生效. DEFAULT