加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle用户管理学习总结

发布时间:2020-12-12 15:52:12 所属栏目:百科 来源:网络整理
导读:Oracle 用户管理 一、用户的概念 用户,即user,通俗的讲就是访问oracle数据库的“人”。在oracle中,可以对用户的各种安全参数进行控制,以维护数据库的安全性,这些概念包括模式(schema)、权限、角色、存储设置、空间限额、存取资源限制、数据库审计等。每

Oracle 用户管理



一、用户的概念
  用户,即user,通俗的讲就是访问oracle数据库的“人”。在oracle中,可以对用户的各种安全参数进行控制,以维护数据库的安全性,这些概念包括模式(schema)、权限、角色、存储设置、空间限额、存取资源限制、数据库审计等。每个用户都有一个口令,使用正确的用户/口令才能登录到数据库进行数据存取。


二、用户默认表空间
  表空间是信息存储的最大逻辑单位、当用户连接到数据库进行资料存储时,若未指出数据的目标存储表空间时,则数据存储在用户的默认表空间中。比如:create table mytable(id varchar2(20),name varchar2(100));这条语句创建了一个表mytable,并将其存储在当前用户的默认表空间中,若要指定表空间,则:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。用户的默认表空间可以在创建用户时指定,也可以使用aler user命令进行指定,具体语法见后面的介绍。


三、用户临时表空间
  临时表空间主要用于order by语句的排序以及其它一些中间操作。在oracle9i之前,可以指定用户使用不同的临时表空间,从9i开始,临时表空间是通用的,所的用户都使用TEMP作为临时表空间。


四、用户资源文件
  用户资源文件用来对用户的资源存取进行限制,包括:cpu使用时间限制、内存逻辑读个数限制、每个用户同时可以连接的会话数据限制、一个会话的空间和时间限制、一个会话的持续时间限制、每次会话的专用SGA空间限制。


五、用户表空间限额
  表空间存储限制是用户在某一个表空间中可以使用的存储空间总数。在创建或修改用户时,可以由参数quota指出。若用户在向表空间存储数据时,超出了此限额,则会产生错误。错误信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通过查询字典dba_ts_quotas查看表空间限额信息。


六、创建用户资源文件
  创建用户资源文件的语法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用户可以同时连接的会话数量限额;
CPU_PER_SESSION:用户在一次数据库会期间可占用的CPU时间总量限额,单位为百分之一秒;
USER_PER_CALL:用户一次SQL调用可用的CPU时间总量限额,单位为百分之一秒;
LOGICAL_READS_PER_SESSION:在一次数据库会话期间能够读取的数据库块的个数限额;
LOGICAL_READS_PER_CALL:一次SQL调用可以读取的数据库块数限额;
IDLE_TIME:用户连接到数据库后的可空闲时间限额,单位为分钟,若空闲时间超过此值,则连接被断开;
CONNECT_TIME:一次连接的时间总量限额,单位为分钟,连接时间超过此值时,连接被断开;
PRIVATE_SGA:用户么有的SGA区的大小,单位为数据库块,默认值为UNLIMITED;
COMPOSITE_LIMIT:这是一项由上述限制参数构成的组合资源项。举例来说,假设资源设置如下:
  IDLE_TIME 20
CONNECT_TIME 120
CPU_PER_CALL 750
COMPOSITE_LIMT 800
那么,当会话空间超过20分钟,或者连接时间超过120分钟,又或者执行一个SQL耗费超过7.5秒,再或者这几个资源限制加起来的总数超过800,则系统自动终止会话。
FAILED_LOGIN_ATTEMPTS:用户登录时,允许用户名/密码校验失败致使用登录失败的次数限额,超过该次数,帐户被锁定;
PASSWORD_LIFE_TIME:口令有效时间,单位为天数,超过这一时间,拒绝登录,须重新设置口令,默认值为UNLIMITED;
PASSWORD_REUSE_TIME:一个失效口令经过多少天后才可重新利用,默认为UNLIMITED;
PASSWORD_REUSE_MAX:一个口令可重复使用的次数;
PASSWORD_LOCK_TIME:当登录失败达到FAILED_LOGIN_ATTEMPS时,帐户被锁定,该参数用于设定被锁定的天数;
下面举例如下:
1)创建一个用户资源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查询用户资源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用户资源文件给用户
sql>alter user us1 profile tax_users


七、创建、修改、删除用户
1.创建用户
  创建用户的详细语法请查询oracle的官方参数文档,这里介绍典型的语法。语法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各选项含义如下:
IDENTIFIED BY password:用户口令;
DEFAULT TABLESPACE tablespace:默认表空间;
TEMPORARY TABLESPACE tablespace:临时表空间;
PROFILE profile|DEFAULT:用户资源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用户在表空间上的空间使用限额,可以指定多个表空间的限额。
举例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;


2.修改用户
  修改用户的语法是与创建用户的语法类似的,主要是CREATE USER 变成 ALTER USER,具体请参考oracle文档。


3.删除用户
删除用户,是将用户及用户所创建的schema对象从数据库删除。如下:
SQL>DROP USER us1;
若用户us1含有schema对象,则无上述语句将执行失败,须加入关键字CASCADE才能删除,意思是连并其对象一起删除,如下:
SQL>DROP USER us1 CASCADE;


一、用户的概念
  用户,即user,name varchar2(100)) tablespace tbs1;。用户的默认表空间可以在创建用户时指定,也可以使用aler user命令进行指定,具体语法见后面的介绍。


三、用户临时表空间
  临时表空间主要用于order by语句的排序以及其它一些中间操作。在oracle9i之前,可以指定用户使用不同的临时表空间,从9i开始,临时表空间是通用的,所的用户都使用TEMP作为临时表空间。


四、用户资源文件
  用户资源文件用来对用户的资源存取进行限制,包括:cpu使用时间限制、内存逻辑读个数限制、每个用户同时可以连接的会话数据限制、一个会话的空间和时间限制、一个会话的持续时间限制、每次会话的专用SGA空间限制。


五、用户表空间限额
  表空间存储限制是用户在某一个表空间中可以使用的存储空间总数。在创建或修改用户时,可以由参数quota指出。若用户在向表空间存储数据时,超出了此限额,则会产生错误。错误信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通过查询字典dba_ts_quotas查看表空间限额信息。


六、创建用户资源文件
  创建用户资源文件的语法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用户可以同时连接的会话数量限额;
CPU_PER_SESSION:用户在一次数据库会期间可占用的CPU时间总量限额,单位为百分之一秒;
USER_PER_CALL:用户一次SQL调用可用的CPU时间总量限额,单位为百分之一秒;
LOGICAL_READS_PER_SESSION:在一次数据库会话期间能够读取的数据库块的个数限额;
LOGICAL_READS_PER_CALL:一次SQL调用可以读取的数据库块数限额;
IDLE_TIME:用户连接到数据库后的可空闲时间限额,单位为分钟,若空闲时间超过此值,则连接被断开;
CONNECT_TIME:一次连接的时间总量限额,单位为分钟,连接时间超过此值时,连接被断开;
PRIVATE_SGA:用户么有的SGA区的大小,单位为数据库块,默认值为UNLIMITED;
COMPOSITE_LIMIT:这是一项由上述限制参数构成的组合资源项。举例来说,假设资源设置如下:
  IDLE_TIME 20
CONNECT_TIME 120
CPU_PER_CALL 750
COMPOSITE_LIMT 800
那么,当会话空间超过20分钟,或者连接时间超过120分钟,又或者执行一个SQL耗费超过7.5秒,再或者这几个资源限制加起来的总数超过800,则系统自动终止会话。
FAILED_LOGIN_ATTEMPTS:用户登录时,允许用户名/密码校验失败致使用登录失败的次数限额,超过该次数,帐户被锁定;
PASSWORD_LIFE_TIME:口令有效时间,单位为天数,超过这一时间,拒绝登录,须重新设置口令,默认值为UNLIMITED;
PASSWORD_REUSE_TIME:一个失效口令经过多少天后才可重新利用,默认为UNLIMITED;
PASSWORD_REUSE_MAX:一个口令可重复使用的次数;
PASSWORD_LOCK_TIME:当登录失败达到FAILED_LOGIN_ATTEMPS时,帐户被锁定,该参数用于设定被锁定的天数;
下面举例如下:
1)创建一个用户资源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查询用户资源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用户资源文件给用户
sql>alter user us1 profile tax_users


七、创建、修改、删除用户
1.创建用户
  创建用户的详细语法请查询oracle的官方参数文档,这里介绍典型的语法。语法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各选项含义如下:
IDENTIFIED BY password:用户口令;
DEFAULT TABLESPACE tablespace:默认表空间;
TEMPORARY TABLESPACE tablespace:临时表空间;
PROFILE profile|DEFAULT:用户资源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用户在表空间上的空间使用限额,可以指定多个表空间的限额。
举例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;


2.修改用户
  修改用户的语法是与创建用户的语法类似的,主要是CREATE USER 变成 ALTER USER,具体请参考oracle文档。


3.删除用户
删除用户,是将用户及用户所创建的schema对象从数据库删除。如下:
SQL>DROP USER us1;
若用户us1含有schema对象,则无上述语句将执行失败,须加入关键字CASCADE才能删除,意思是连并其对象一起删除,如下:
SQL>DROP USER us1 CASCADE;


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/truexf/archive/2006/09/06/1184869.aspx


ORACLE中数据字典视图分为3大类,用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。


USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息


ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息


DBA_*:有关整个数据库中对象的信息


(这里的*可以为TABLES, INDEXES, OBJECTS, USERS等。


1.查看所有用户:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看用户系统权限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户所拥有的角色:
select * from dba_role_privs;
select * from user_role_privs;


6.查看当前用户的缺省表空间
select username,default_tablespace from user_users;


7.查看某个角色的具体权限,如grant connect,resource,create session,create view to TEST;查看RESOURCE具有那些权限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';


例:
限制user1用户只允许100个并发连接
SQL> alter system set resource_limit=true;


System altered


SQL> create profile profile_user1 limit sessions_per_user 100;


Profile created


SQL> ALTER USER user1 profile profile_user1;


User altered
========

Oracle用户、权限、角色管理



Oracle 权限设置
一、权限分类:
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

二、系统权限管理:
1、系统权限分类:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect,resource权限。
对于DBA管理用户:授予connect,resource,dba权限。

2、系统权限授权命令:
[系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)]
授权命令:SQL> grant connect,dba to 用户名1 [,用户名2]...;
[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]
例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect,resource to user50;
查询用户拥有哪里权限:
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;
删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除

3、系统权限传递:
增加WITH ADMIN OPTION选项,则得到的权限可以传递。
SQL> grant connect,resorce to user50 with admin option; //可以传递所获权限。

4、系统权限回收:系统权限只能由DBA用户回收
命令:SQL> Revoke connect,resource from user50;

说明:
1)如果使用WITH ADMIN OPTION为某个用户授予系统权限,那么对于被这个用户授予相同权限的所有用户来说,取消该用户的系统权限并不会级联取消这些用户的相同权限。
2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

三、实体权限管理
1、实体权限分类:select,update,insert,alter,index,delete,all //all包括所有权限
execute //执行存储过程权限
user01:
SQL> grant select,insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product;
// 此时user02查user_tables,不包括user01.product这个表,但如果查all_tables则可以查到,因为他可以访问。


2. 将表的操作权限授予全体用户:
SQL> grant all on product to public; // public表示是所有的用户,这里的all权限不包括drop。
[实体权限数据字典]:
SQL> select owner,table_name from all_tables; // 用户可以查询的表
SQL> select table_name from user_tables; // 用户创建的表
SQL> select grantor,table_schema,table_name,privilege from all_tab_privs; // 获权可以存取的表(被授权的)
SQL> select grantee,owner,privilege from user_tab_privs; // 授出权限的表(授出的权限)

3. DBA用户可以操作全体用户的任意基表(无需授权,包括删除):
DBA用户:
SQL> Create table stud02.product(
id number(10),
name varchar2(20));
SQL> drop table stud02.emp;
SQL> create table stud02.employee
as
select * from scott.emp;

4. 实体权限传递(with grant option):
user01:
SQL> grant select,update on product to user02 with grant option; // user02得到权限,并可以传递。

5. 实体权限回收:
user01:
SQL>Revoke select,update on product from user02; //传递的权限将全部丢失。

说明
1)如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。


Oracle 用户管理
一、创建用户的Profile文件
SQL> create profile student limit // student为资源文件名
FAILED_LOGIN_ATTEMPTS 3 //指定锁定用户的登录失败次数
PASSWORD_LOCK_TIME 5 //指定用户被锁定天数
PASSWORD_LIFE_TIME 30 //指定口令可用天数

二、创建用户
SQL> Create User username
Identified by password
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;
例:
SQL> Create user acc01
identified by acc01 // 如果密码是数字,请用双引号括起来
default tablespace account
temporary tablespace temp
profile default
quota 50m on account;
SQL> grant connect,resource to acc01;
[*] 查询用户缺省表空间、临时表空间
SQL> select username,default_tablespace,temporary_tablespace from dba_users;
[*] 查询系统资源文件名:
SQL> select * from dba_profiles;
资源文件类似表,一旦创建就会保存在数据库中。
SQL> select username,profile,temporary_tablespace from dba_users;
SQL> create profile common limit
failed_login_attempts 5
idle_time 5;

SQL> Alter user acc01 profile common;

三、修改用户:
SQL> Alter User 用户名
Identified 口令
Default Tablespace tablespace
Temporary Tablespace tablespace
Profile profile
Quota integer/unlimited on tablespace;

1、修改口令字:
SQL>Alter user acc01 identified by "12345";
2、修改用户缺省表空间:
SQL> Alter user acc01 default tablespace users;
3、修改用户临时表空间
SQL> Alter user acc01 temporary tablespace temp_data;
4、强制用户修改口令字:
SQL> Alter user acc01 password expire;
5、将用户加锁
SQL> Alter user acc01 account lock; // 加锁
SQL> Alter user acc01 account unlock; // 解锁

四、删除用户
SQL>drop user 用户名; //用户没有建任何实体
SQL> drop user 用户名 CASCADE; // 将用户及其所建实体全部删除
*1. 当前正连接的用户不得删除。


五、监视用户:
1、查询用户会话信息:
SQL> select username,sid,serial#,machine from v$session;
2、删除用户会话信息:
SQL> Alter system kill session 'sid,serial#';
3、查询用户SQL语句:
SQL> select user_name,sql_text from v$open_cursor;


Oracle 角色管理
一、何为角色
  角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。


二、系统预定义角色
  预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:
sql>select * from role_sys_privs where role='角色名';


1.CONNECT,RESOURCE,DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。

2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。

3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。

4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。这两个角色用于oracle高级查询功能。

5. SNMPAGENT
用于oracle enterprise manager和Intelligent Agent

6.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》

7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.

三、管理角色
1.建一个角色
sql>create role role1;


2.授权给角色
sql>grant create any table,create procedure to role1;


3.授予角色给用户
sql>grant role1 to user1;


4.查看角色所包含的权限
sql>select * from role_sys_privs;


5.创建带有口令以角色(在生效带有口令的角色时必须提供口令)
sql>create role role1 identified by password1;


6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;


7.设置当前用户要生效的角色
(注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用带有口令的role1生效
sql>set role all;//使用该用户的所有角色生效
sql>set role none;//设置所有角色失效
sql>set role all except role1;//除role1外的该用户的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。


8.修改指定用户,设置其默认角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
详见oracle参考文档


9.删除角色
sql>drop role role1;
角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。

说明:
1)无法使用WITH GRANT OPTION为角色授予对象权限
2)可以使用WITH ADMIN OPTION 为角色授予系统权限,取消时不是级联
========

Oracle用户管理与权限分配

用户与模式的关系 Oracle数据库的安全保护流程可以分为3个步骤。首先,用户向数据库提供身份识别信息,即提供一个数据库账号。接下来用户还需要证明他们所给出的身份识别信息是有效的,这是通过输入密码来实现的,用户输入的密码经过数据库的核对确认用户提供的密码是否正确。最后,假设密码是正确的,那么数据库认为身份识别信息是可信赖的。此时,数据库将会在基于身份识别信息的基础上确定用户所拥有的权限,即用户可以对数据库执行什么操作。因此,为了确保数据库的安全,首要的问题就是对用户进行管理。 这里所有的用户并不是数据库的操作人员,而是在数据库中定义的一个名称,更准确地说它是账户,只是习惯上称其为用户,它是Oracle数据库的基本访问控制机制,当连接到Oracle数据库时,操作人员必须提供正确的用户名和密码。 连接到数据库的用户所具有的权限是不同的,Oracle提供了一些特权用户,比如,SYSDBA或SYSOPER,这类用户主要用于执行数据库的维护操作,如启动数据库、关闭数据库、建立数据库,以及执行备份和恢复等操作。SYSDBA和SYSOPER的区别在于:SYSDBA不仅具备SYSOPER的所有权限,而且还可以建立数据库,执行不完全恢复。在Oracle 11g中,Oracle提供了默认的特权用户SYS,当以特权用户身份登录数据库时,必须带有AS SYSDBA或AS SYSOPER选项。例如; SQL> connect system/1qaz2wsx as sysdba; 已连接。 与用户密切关系的另一个概念是模式,模式也称作方案(Schema)。模式或方案实际上是用户所拥有的数据库对象的集合。在Oracle数据库中,对象是以用户来组织的,用户与模式是一一对应的关系,并且两者名称相同。 SCOTT用户拥有的所有对象都属于SCOTT模式,而HR用户拥有的所有对象都属于HR模式。 这里写图片描述 兄弟连--Android培训! 【点击进入】 保障薪资4-6K签就业保障协议 0学费、0食宿、一个月免费学 查 看 当访问数据库对象时,需要注意如下一些事项: 在同一个模式中不能存在同名对象,但是不同模式中的对象名称则可以相同。 用户可以直接访问其它模式对象,但如果要访问其它模式对象,则必须具有该对象的相应访问权限。例如,用户SCOTT可以直接查看其模式中的EMP表,但如果用户HR要查看SCOTT模式中的EMP表时,则必须在EMP表上具有SELECT操作的权限。 当用户要访问其它模式对象时,必须附加模式名作为前缀。 创建与管理用户 Oracle为用户账户提供了三种身份验证方法。 密码验证 当一个使用密码验证机制的用户视图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且提供与该用户在数据库中存储的密码相匹配的密码。由于用户信息和密码都存储在数据库内部,所以使用密码验证用户也称为数据库验证用户。 外部验证外部验证是指当用户试图连接到数据库时,数据库会核实用户名是否是一个有效的数据库账户,并且确认该用户已经完成了操作系统级别的身份验证。 注意:外部验证用户并不在数据库中存储一个验证密码。 全局验证全局验证是指用户不在数据库中存储验证密码,而是通过一种高级安全选项所提供的身份验证服务来进行的。 在上述的三种验证方式中,密码验证是最常使用的验证方法。 创建用户 要创建一个新的用户,可采用CREATE USER命令。其语法格式如下: create user user_name identified by pass_word [or identified exeternally] [or identified globally as ‘CN=user’] [default tablespace tablespace_default] [temporary tablespace tablespace_temp] [quota [integer k[m]] [unlimited] ] on tablesapce_ specify1 [,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2 [,…]…on tablespace_specifyn [profiles profile_name] [account lock or account unlock] 参数说明如下: user_name:用户名,一般为字母数字型和“#”及“_”符号。 pass_word:用户口令,一般为字母数字型和“#”及“_”符号。 identified exeternally:表示用户名在操作系统下验证,这种情况下要求该用户必须与操作系统中所定义的用户名相同。 identified globally as ‘CN=user’:表示用户名由Oracle安全域中心服务器验证,CN名字表使用户的外部名。 [default tablespace tablespace_default]:表示该用户在创建数据对象时使用的默认表空间 [temporary tablespace tablespace_temp]:表示该用户所使用的临时表空间。 [quota [integer K[M]] [unlimited]] on tablespace_specify1:表示该用户在指定表空间中允许占用的最大空间。 [profiles profile_name]:资源文件的名称。 [account lock or account unlock]:用户是否被加锁,默认情况下是不加锁的。 (1)创建用户,并指定默认表空间和临时表空间。 ----创建一个mr用户,口令为mrsoft,并设置默认的表空间为users,临时表空间为temp的用户 SQL> create user mr identified by mrsoft 2 default tablespace users 3 temporary tablespace temp; (2)创建用户,并配置其在指定表空间上的磁盘限额。有时,为了避免用户在创建表和索引对象时占用过多的空间,可以配置用户在表空间上的磁盘限额。在创建用户时,可通过QUOTA xxxM ON tablespace_ specify子句配置指定表空间的最大可用限额,下面来看一个例子。 ----创建一个用户east,口令为mrsoft,默认表空间为users,临时表空间为temp的用户,并指定该用户在tbsp_1表空间上最多可使用的大小为10m SQL> create user east identified by mrsoft 2 default tablespace users 3 temporary tablespace temp 4 quota 10m on tbsp_1; 说明:如果要禁止用户使用某个表空间,则可以通过quota关键字设置该表空间的使用限额为0。 (3)创建用户,并配置其在指定表空间上不受限制,如果要设置用户在指定表空间上不受限制,可以使用QUOTA UNLIMITED ON tablespace_ specify子句。 ----创建一个用户名为df,口令为mrsoft,临时表空间为temp,默认表空间为tbsp_1,并且该用户使用tbsp_1表空间不受限制 SQL> create user df identified by mrsoft 2 default tablespace tbsp_1 3 temporary tablespace temp 4 quota unlimited on tbsp_1; 在创建完用户之后,需要注意以下几点: - 如果建立用户时不指定DEFAULT TABLESPACE子句,Oracle会将SYSTEM表空间作为用户默认表空间。 - 如果建立用户时不能指定TEMPORARY TABLESPACE子句,Oracle会将数据库默认临时表空间作为用户的临时表空间。 - 初始建立的用户没有任何权限,所以为了是用户可以连接到数据库,必须授权其CREATE SESSION权限 - 如果建立用户时没有为表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,用户将不能在相应的表空间上建立数据对象。 - 初始建立的用户没有任何权限,不能执行任何数据库操作。 修改用户 用户创建完后,管理员可以对用户进行修改,包括修改用户口令,改变用户默认表空间、临时表空间、磁盘配额及资源限制等。修改用户的语法与创建的用户的语法基本相似,只是把创建用户语法中的“CREATE”关键字替换成“ALTER”罢了。 修改用户的磁盘限额 如果DBA在创建用户时,指定了用户在某个表空间的磁盘限额,那么经过一段时间,该用户使用该表空间已经达到了DBA所设置的磁盘限额时,Oracle系统就会显示如图13-2所示的错误提示。 这里写图片描述 表示该用户使用的资源已经超出了限额,DBA需要为该用户适当增加资源。 ----修改用户east在表空间上的磁盘限额为20m(原始为10m,先增加10m)。 SQL> alter user east quota 20m on tbsp_1; 修改用户的口令 用户的口令在使用一段时间之后,根据系统安全的需要或在PROFILE文件中(资源配置文件)设置的规定,用户必须要修改口令。 ----修改用户east的新口令为123456(原始为mrsoft)。 SQL> alter user east identified by 123456; 解锁被锁住的用户 Oracle默认安装完成后,为了安全起见,很多用户处于LOCKED状态,DBA可以对LOCKED状态的用户解除锁定。 ----使用alter user命令解除被锁定的账户SH。 SQL> alter user SH account unlock; 删除用户 删除用户通过DROP USER语句完成的,删除用户后,Oracle会从数据字典中删除用户、方案及其所有对象方案,语法如下: drop user user_name[cascade] 参数说明如下: user_name:要删除的用户名。 cascade:级联删除选项,如果用户包含数据库对象,则必须加 CASCADE选项,此时连同该用户所拥有的对象一起删除。 ----使用drop user语句删除用户df,并连同该用户所拥有的对象一起删除。 SQL> drop user df cascade; 用户权限管理 权限简介 根据系统管理方式的不同,在Oracle数据库中将权限分为两大类:系统权限和对象向权限。 系统权限是在系统级对数据库进行存取和使用的机制,比如,用户是否能够连接到数据库系统(SESSION权限),执行系统级的DDL语句(如CREAT、ALTER、和DROP)等。 对象权限是指某一个用户对其他用户的表、视图、序列、存储过程、函数、包等的操作权限。不同类型的对象具有不同的对象权限,对于某些模式对象,比如簇、索引、触发器、数据库链接等没有相应的实体权限,这些权限由系统权限进行管理。 授权操作 在Oracle 11g中含有200多种系统特权,并且所有这些系统特权均被列举在SYSTEM_PRIVILEGE_MAP数据目录视图中。授权操作使用GRANT命令,其语法格式如下: grant sys_privi | role to user | role | public [with admin option] 参数说明如下: sys_privi:表示Oracle系统权限,系统权限是一组约定的保留字。比如,若能够创建表,则为“CREATE TABLE”。 role:角色,关于角色会在后面小节中介绍。 user:具体的用户名,或者是一些列的用户名。 public:保留字,代表Oracle系统的所有用户。 with admin option:表示被授权者可以再将权限授予另外的用户。 —-为用户east授予连接和开发系统权限,并尝试使用east连接数据库。 SQL> connect system/1qaz2wsx 已连接。 SQL> grant connect,resource to east; 授权成功。 SQL> connect east/123456; 已连接。 在上面的代码中,使用east连接数据库后,Oracle显示“已连接”,这说明给east授予“connect”的权限是成功的。另外,如果想要east将这两个权限可以传递给其他的用户,则需要在grant语句中使用“with admin option”关键字。 ----在创建用户dongfang和xifang后,首先system将创建session和创建-table的权限授权给dongfang,然后dongfang再将这两个权限传递给xifang,最后通过xifang这个用户创建一个数据表 SQL> create user dongfang identified by mrsoft 2 default tablespace users 3 quota 10m on users; 用户已创建。 SQL> create user xifang identified by mrsoft 2 default tablespace users 3 quota 10m on users; 用户已创建。 SQL> grant create session,create table to dongfang with admin option; 授权成功。 SQL> connect dongfang/mrsoft; 已连接。 SQL> grant create session,create table to xifang; 授权成功。 SQL> connect xifang/mrsoft; 已连接。 SQL> create table tb_xifang 2 ( id number,3 name varchar2(20) 4 ); 表已创建。 回收系统权限 一般用户若被授予过高的权限就可能给Oracle系统带来安全隐患。作为Oracle系统的管理员,应该能够查询当前Oracle系统各个用户的权限,并且能够使用REVOKE命令撤销用户的某些不要的系统权限,REVOKE命令的语法格式如下: revoke sys_privi | role from user | role | public 参数说明如下: sys_privi:系统权限或角色; role:角色; user:具体的用户名; public:保留字,代表Oracle系统所有的用户; —- 撤销east用户的resource系统权限,代码及运行结果如下。 SQL> connect system/1qaz2wsx; 已连接。 SQL> revoke resource from east; 撤销成功。 如果数据库管理员用GRANT命令给用户A授予系统权限是带有WITH ADMIN OPTION选项,则该用户A有权将系统权限再次授予另外的用户B。在这种情况下,如果数据库管理员使用REVOKE命令撤销A用户的系统权限,则用户B的系统权限仍然有效。 首先撤销用户dongfang的create table权限,然后尝试是否还可以通过用户xifang创建数据表(注:是dongfang将create table权限传递给xifang),代码及运行结果如下。 SQL> revoke create table from dongfang; 撤销成功。 SQL> connect xifang/mrsoft; 已连接。 SQL> create table tb_xifang_2 2 ( id number,3 name varchar2(10) 4 ); 表已创建。 对象授权 与将系统权限授予用户基本相同,授予对象权限给用户或角色也使用GRANT命令,其语法格式如下: Grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option] 参数说明如下: obj_privi:表示对象的权限,可以是ALTER、EXECUTE、SELECT、UPDATE和INSERT等; role:角色名; user:被授权的用户名; with admin option:表示被授权者可再将系统权限授予其他的用户; with hierarchy option:在对象的子对象(在视图上再建立视图)上授权给用户。 ----给用户xifang授予select、insert、delete和update表soctt.emp的权限。 SQL> grant select,update on scott.emp to xifang; 授权成功。 回收对象权限 要从用户或角色中撤销对象权限,仍然要使用REVOKE命令,其语法格式如下: revoke obj_privi | all on schema.object from user | role | public cascade constraints 参数说明如下: obj_privi:表示对象的权限。 public:保留字,代表Oracle系统的所有权限。 cascade ascade constraints:表示有关联关系的权限也被撤销。 ----从xifang用户撤销scott.emp表的update和delete权限。 SQL> connect system/1qaz2wsx; 已连接。 SQL> revoke delete,update on scott.emp from xifang; 撤销成功。 说明:如果数据库管理员GRANT命令给用户A授予对象权限时带有WITH ADMIN OPTION选项,则该用户A有权将权限再次授予另外的用户B。在这种情况下,如果数据库管理员用REVOKE命令撤销A用户的对象权限时,用户B的对象权限也被撤销。由此可见,在进行系统权限回收和进行对象权限回收时,效果是不同的。 查询用户与权限 用户被授予的系统权限或对象权限都被记录在Oracle的数据字典里,了解某个用户被授予哪些系统权限和对象权限是确保应用系统安全的重要工作。表是Oracle 11g用于存放用户、系统权限、对象权限有关的数据字典。 这里写图片描述 40-50女性如何留住月经! 【点击进入】 月经量少,月经不调,月经推迟,如何调理月经? 全国免费咨询热线:400-600-8218 查 看 角色管理 角色简介 角色是一个独立的数据库实体,它包括一组权限。也就是说,角色是包括一个或者多个权限的集合,它并不被哪个用户所拥有。角色可以被授予任何用户,也可以从用户中将角色收回。 使用角色可以简化权限的管理,可以仅用一条语句就能从用户那里授予或回收权限,而不必对用户一一授权。使用角色还可以实现权限的动态管理,比如,随着应用的变化可以增加或者减少角色的权限,这样通过改变角色的权限,就实现了改变多个用户的权限。 角色、用户及权限是一组关系密切的对象,既然角色是一组权限的集合,那么,它只有被授予某个用户才能有意义,可以用如图所示的图形来帮助我们理解角色、用户及权限的关系。 这里写图片描述 各行业真账实操,15天免费试学 【点击进入】 20多个行业真账实操,105位老会计线上辅导,做账报税30天包学精通!首选会计学堂! 查 看 vcfJq8qxssXE3Mq508NPUkFDTEXPtc2z18rUtKGjIDxicj4KICAgIMHtzeKjrNTatLS9qL3HyavKsaOsv8nS1M6qvcfJq8no1sPTptPDsLLIq9DUoaO9x8mrtcSwssir0NTNqLn9zqq9x8mryejWw7/awe69+NDQsaO7pKOssdjQ68zhuanV/ci3tcS/2sHussXUytDt0N64xLvyyejWw73HyauhozwvcD4KCgoKPGgyIGlkPQ=="预定义角色">预定义角色 所谓系统预定义角色是指在数据库安装完成后由系统自动创建的一些常用角色,这些角色已经由系统授予了相应的系统权限,可以由数据库管理员直接使用。一旦将这些角色授予用户以后,用户便具有了角色中所包含的系统权限。下面列出的这几个系统预定义角色是最常被用到的。 CONNECT; RESOURCE; DBA; EXP_FULL_DATABASE; IMP_FULL_DATABASE。 角色CONNECT,RESOURCE及DBA主要用于数据库管理,这3个角色之间相互没有包含关系(有些系统权限可能有重叠)。数据库管理员需要分别授予CONNECT,RESOURCE和DBA角色。对于一般的数据库开发人员,则需要授予CONNECT,RESOURCE角色。 角色IMP_FULL_DATABASE和EXP_FULL_DATABASE分别用于操作数据库的导入或导出工具,如,操作数据库工具EXPDP,IMPDP,或者系统的EXP,IMP。在使用这些工具进行整个数据库的到导出与导入工作时,需要具备这两个角色。 这里写图片描述 别去算命了,生肖决定你的财富! 【点击进入】 你的生肖决定了你这辈子是穷苦命, 还是富贵命!生肖本命佛改变你的运势! 查 看 不同版本的Oracle预定义的角色不一样多,但都可以从DBA_ROLES数据字典中查询到,下面通过该数据字典来看一下Oracle 11g的预定义系统角色有哪些。 ----使用select语句查询dba_roles数据字典中的角色信息。 SQL> set pagesize 50; SQL> select * from dba_roles; 这里写图片描述 创建角色与授权 如果系统预定义的角色不符合用户需要,那么,数据库管理员可以创建更多的角色,创建用户自定义角色可以使用CREATE ROLE语句来实现,其语法格式如下: create role role_name [ not identified | identified by [password] | [exeternally] | [globally]] 参数说明如下: role_name:角色名; identified by password:角色口令; identified by exeternally:表示角色名在操作系统下验证; identified globally:表示用户是Oracle安全域中心服务器来验证,此角色由全局用户来使用。 ----创建一个名为designer的角色,该角色的口令为123456。 SQL> connect system/1qaz2wsx; 已连接。 SQL> create role designer identified by 123456; 一旦角色创建完成,就可以对角色进行授权,给角色授权也是使用GRANT…TO语句来实现的。如果系统管理员具有GRANT_ANY_PRVILEGE权限,就可以对某个角色进行授权。比如,授权CREATE SESSION,CREATE SYNONYM,CREATE VIEW等。 ----给designer角色授予create view和create table权限。 SQL> grant create view,create table to designer; 在角色获得了权限之后,就可以把这个有使用价值的角色授予给某个用户了。把角色授予给某个用户仍然使用GRANT…TO语句来实现。 ----把designer角色授权给用户dongfang,代码及运行结果如下。 SQL> grant designer to dongfang; 管理角色 在学习过管理用户(包括创建、修改、删除等操作)之后,再学习如何管理角色就相对简单多了,因为这二者之间有很多相似之处,这里仅通过一些简单实例来对角色的管理进行说明。 查看角色所包含的权限 查看角色权限通常使用ROLE_SYS_PRIVS数据字典,来看下面的例子。 ----查询角色designer被属于的权限有哪些。 SQL> select * from role_sys_privs where role = 'DESIGNER'; 这里写图片描述 修改角色密码 修改角色密码包括取消角色密码和修改角色密码两种情况,可以使用ALTER ROLE语句来实现。 ----首先取消designer角色的密码,然后再重新给该角色设置一个密码。 SQL> alter role designer not identified; 角色已丢弃。 SQL> alter role designer identified by mrsoft; 角色已丢弃。 设置当前用户要生效的角色 角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么,如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;用户登录后,Oracle将所有直接赋值给用户的权限和用户默认角色中的权限赋给用户。设置角色生效可使用SET ROLE语句。 创建一个无需密码验证的角色queryer,然后设置该角色生效,接下来再设置带有密码的角色designer也生效。 SQL> create role queryer; 角色已创建。 SQL> set role queryer; 角色集 SQL> set role designer identified by mrsoft; 角色集 说明:如果要设置带有密码的角色生效,则必须在SET ROLE语句后面使用“IDENTIFIED BY”关键字指定角色的密码。 删除角色 删除角色很简单,使用DROP ROLE语句即可实现,来看下面的例子。 ----使用drop role语句删除角色queryer。 SQL> drop role queryer; 角色已删除。 删除角色后,原来拥有该角色的用户将不再拥有该角色,相应的权限也将失去。 角色与权限查询 创建角色和用户以后,给角色和用户授予的权限被记录在Oracle数据字典里,作为Oracle数据库管理员,需要了解角色被授予了哪些权限及用户被授予了哪些权限和角色,从而对这个数据库的所有用户进行全面的管理,如表所示是Oracle 11g用于存放用户、角色及权限的相关数据字典。 这里写图片描述 ----查询HR用户被授予的系统角色。 SQL> select granted_role,default_role from dba_role_privs 2 where grantee = 'HR'; 这里写图片描述 在某个模式下,如果用户要确定当前会话中的所有有效角色,可以通过SESSION_ROLE数据字典来查询。 ----在scott模式下,查询当前用户的所有有效角色。 SQL> connect scott/1qaz2wsx; 已连接。 SQL> select * from session_roles; 这里写图片描述 资源配置PROFILE PROFILE简介 PROFILE作为用户配置文件,它是密码限制、资源限制的命名集合。PROFILE文件作为Oracle安全策略的重要组成部分,利用它可以对数据库用户进行基本的资源限制,并且可以对用户的密码进行管理。 在安装数据库时,Oracle会自动建立名为DEFAULT的默认配置文件。如果没有为新创建的用户指定DEFAULT文件,Oracle将自动为它指定DEFAULT配置文件。初始的DEFAULT文件没有进行任何密码和资源限制。使用PROFILE文件时需要注意如下事项。 建立用户时,如果不指定PROFILE选项,Oracle会自动将DEFAULT分配给相应的数据库用户。 建立PROFILE文件时,如果只设置了部分密码和资源限制选项,其他选项会自动使用默认值,即使DEFAULT文件中有相应选项的值。 使用PROFILE管理密码时,密码管理选项总是处于被激活状态,但是如果使用PROFILE管理资源,必须要激活资源限制。 一个用户只能分配一个PROFILE文件。如果要同时管理用户的密码和资源,那么在建立PROFILE时应该同时指定密码和资源选项。 使用PROFILE管理密码 当操作人员要连接到Oracle数据库时,需要提供用户名和密码。对于黑客或某些人而言,他们可能通过猜测或反复实验来破解密码。为了加强密码的安全性,可以使用PROFILE文件管理密码。PROFILE文件提供了一些密码管理选项,他们提供了强大的密码管理功能,从而确保密码的安全。为 了实现密码限制,必须首先建立PROFILE文件。建立PROFILE文件是使用CREATE PROFILE语句完成的, 一般情况下,该语句是由DBA执行的,如果要以其他用户身份建立PROFILE文件,则要求该用户必须具有CREATE PROFILE系统权限。 使用PROFILE文件可以实现如下四种密码管理:账户锁定、密码的过期时间、密码历史和密码的复杂度。 1.账户锁定 账户的锁定策略是指用户在连续输入多少次错误密码后,Oracle会自动锁定用户的账户,并且可以规定账户的锁定时间。Oracle为锁定账户提供了以下两个参数。 FAILED_LOGIN_ATEMPTS 该参数限制用户在登录到Oracle数据库时允许失败的次数。一旦某个用户尝试登陆数据库的次数达到该值,则系统将该用户账户锁定。 PASSWORD_LOCK_TIME 该参数用于指定账户被锁定的天数。 ---- 创建的profile文件,要求设置连续失败次数为5,超过该次数后,账户将被锁定7天,然后使用alter user语句将profile文件(即lock_account)分配给用户dongfang。 SQL> create profile lock_account limit 2 failed_login_attempts 5 3 password_lock_time 7; 配置文件已创建 SQL> alter user dongfang profile lock_account; 用户已更改。 在建立lock_account文件并将该文件分配给用户dongfang后,如果以用户dongfang身份连接到数据库,并且连续连接失败5次后,Oracle将自动锁定该用户账户。此时,即使为用户dongfang提供了正确的密码,也无法连接到数据库。 在建立lock_account文件时,由于指定password_lock_time的参数为7,所以账户锁定天数达到7天后,Oracle会自动解锁账户。 说明:如果建立PROFILE文件时没有提供该参数,将自动使用默认值UNLIMITED,这种情况下,需要DBA手动解锁用户账户。 2.密码的过期时间 密码的过期时间是指强制用户定期修改自己的密码,当密码过期后,Oracle会随时提醒用户修改密码。密码宽限期是指密码到期之后的宽限使用时间。默认情况下,建立用户并为其提供密码之后,密码会一直生效。为了防止其他人员破解用户账户的密码,可以强制普通用户定期改变密码。为了将强制用户定期修改密码,Oracle提供了如下参数。 PASSWORD_LIFE_TIME 该参数用于设置用户密码的有效时间,单位为天数。超过这一段时间,用户必须重新设置口令。 PASSWORD_GRACE_TIME 该参数用于设置口令失效的“宽限时间”。如果口令到达PASSWORD_LIFE_TIME设置的失效时间,设置宽限时间后,用户仍然可以继续使用一段时间。 ----下面创建一个profile文件(即password_lift_time),并设置用户的密码有效期为30天,密码宽限期为3天,然后使用alter user语句将profile文件(即password_lift_time)分配给用户dongfang。 SQL> create profile password_lift_time limit 2 password_life_time 30 3 password_grace_time 3; 配置文件已创建 SQL> alter user dongfang profile password_lift_time; 用户已更改。 这里写图片描述 若果用户在30天内没有修改密码,那么在第31天、第32天、第33天连接时,仍然会显示类似的警告信息。如果在33天内仍然没有修改密码,那么当第34天连接时,Oracle会强制用户修改密码,否则不允许连接到数据库。 3.密码历史 密码历史是用于控制账户密码的可重复使用次数或可重用时间。使用密码历史参数后,Oracle会将密码修改信息存放到数据字典中。这样,当修改密码时,Oracle会对新、旧密码进行比较,以确保用户不会重用过去已经用过的密码。关于密码历史有如下两个参数。 PASSWORD_REUSE_TIME 该参数指定密码可重用的时间,单位为天。 PASSWORD_REUSE_MAX 该参数设置口令在能够被重新使用之前,必须改变的次数。 说明:在使用密码历史选项时,只能使用其中的一个参数,并将另一个参数设置为UNLIMITED。 4.密码复杂度 在PROFILE文件中,可以通过指定的函数来强制用户的密码必须具有一定的复杂度。例如,强制用户的密码不能与用户名相同。使用校验函数验证用户密码的复杂度时,只需要将这个函数的名称指定给PROFILE文件中的PASSWORD_VERIFY_FUNCTION参数,Oracle就会自动使用该函数对用户的密码和格式进行验证。 在Oracle 11g中,验证密码复杂度功能有新的改进。在$ORACLE_HOME/rdbms/admin目录下创建了一个新的密码验证文件UTLPWDMG.SQL,其中不仅提供了先前的验证函数VERIFY_FUNCTION,还提供了一个新建的VERIFY_FUNCTION_11G函数。 使用PROFILE管理资源 在大而复杂的多用户数据库环境中,因为用户众多,所以系统资源可能会成为影响性能的主要瓶颈,为了有效地利用系统资源,应该根据用户所承担任务的不同为其分配合理资源。PROFILE不仅可用于管理用户密码,还可以用于管理用户资源。需要注意,如果是使用PROFILE管理资源,必须将RESOURCE_LIMIT参数设置为TRUE,以激活资源限制。由于该参数是动态参数,所以可以使用ALTER SYSTEM语句进行修改。 ----首先使用show命令查看RESOURCE_LIMIT参数的值,然后使用alter system命令修改该参数的值为true,从而激活资源限制。 SQL> show parameter resource_limit; NAME TYPE VALUE -------------------- ----------- ------ resource_limit boolean FALSE SQL> alter system set resource_limit=true; 系统已更改。 利用PROFILE配置文件,可以对以下系统资源进行限制: CPU时间:为了防止无休止地使用CPU时间,限制用户每次调用是使用的CPU时间以及在一次会话期间所使用的CPU时间。 逻辑读:为了防止过多使用系统的I/O操作,限制每次调用即会话时读取的逻辑数据块数目。 用户的并发会话数。 会话空闲的限制:当一个会话空闲的时间达到了限制值时,当前事务被回滚,会话被终止并且所占用的资源被释放。 会话可持续的时间:如果一个会话的总计连接时间达到了该限制值,当前事务被回滚,会话被终止并释放所占用的资源。 会话所使用的SGA空间限制。 当一个会话或SQL语句占用的资源超过PROFILE文件中的限制时,Oracle将终止并回退当前的事务,然后向用户返回错误的信息,如果受到的限制是会话级的,在提交或回退事务后,用户会话将被终止;而受到调用级限制时,用户会话还能够继续进行,只是当前执行的SQL语句将被终止。下面是PROFILE文件中对各种资源限制的参数。 SESSION_PER_USER:用户可以同时连接的会话数量。如果用户的连接数达到该限制,则试图登录时将产生一条错误信息。 CPU_PER_SESSION:限制用户再一次数据库会话期间可以使用的CPU时间,单位为百分之一秒。当达到该时间值后,系统就会终止该会话。如果用户还需要执行操作,则必须重建立连接。 CUP_PER_CALL:该参数用户限制每条SQL语句所能使用的CPU时间,参数值是一个整数,单位百分之一秒。 LOGICAL_READS_PER_SESSION:限制每个会话所能读取的数据块数量,包括从内存中读取的数据块和从磁盘中读取的数据块。 CONNECT_TIME:限制每个用户连接到数据库的最长时间,单位分钟,当连接时间超出该设置时,该链接终止。 IDLE_TIME:该参数限制每个用户会话连接到数据库的最长时间。超过该空闲时间的会话,系统会终止该会话。 维护PROFILE文件 在Oracle中,PROFILE文件也是一种数据资源。DBA也可以使用相应的语句对其进行管理,包括修改配置文件、删除配置文件按、激活或禁用配置文件。 1.修改PROFILE文件 在创建PROFILE文件之后,还可以使用ALTER PROFILE语句修改其中的资源参数和密码参数,来看下面的例子。 ----对password_lift_time文件(即PROFILE文件)的资源限制参数进行修改。 SQL> alter profile password_lift_time limit 2 cpu_per_session 20000 3 sessions_per_user 10 4 cpu_per_call 500 5 password_life_time 180 6 failed_login_attempts 10; 配置文件已更改 说明:对配置文件所做的修改只有在用户开始新的会话时才会生效 2.删除PROFILE文件 使用DROP PROFILE语句可以删除PROFILE文件。如果要删除的配置文件已经被指定给了用户,则必须在DROP PROFILE语句中使用CASCADE关键字,来看下面的例子。 ----删除被分配给dongfang这个用户的password_lift_time配置文件。 SQL> drop profile password_lift_time cascade; 配置文件已删除。 说明:如果为用户指定的配置文件被删除,则Oracle将自动为用户重新指定DEFAULT配置文件 显示PROFILE信息 在PROFILE文件被创建后,其信息被存储在数据字典中。通过查询这些数据字典,可以了解PROFILE文件的信息。 1.显示用户的资源配置信息 建立或修改用户时,可以为用户分配PROFILE文件,如果没有为用户分配PROFILE文件,Oracle会自动将DEFAULT分配给用户。通过查询数据字典视图DBA_USERS,可以显示用户使用的PROFILE文件,下面来看一个例子。 ----显示用户的DONGFANG所使用的PROFILE文件。 SQL> select profile from dba_users where username='DONGFANG'; PROFILE ------------------------ LOCK_ACCOUNT 2.显示指定PROFILE文件的资源配置信息 建立或修改PROFILE文件时,Oracle将会PROFILE参数存放在数据字典中。通过查询DBA_PROFILES,可以显示PROFILE的密码限制、资源限制信息,下面来看一个例子。 ----显示RESOURCE_LIMIT文件的密码和资源限制信息。 SQL> column limit for a20 SQL> select resource_name,resource_type,limit 2 from dba_profiles 3 where profile = 'LOCK_ACCOUNT'; ========

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读