4、Oracle用户、权限、角色

1、用户创建、修改、删除

创建用户语法:

CREATE USER user_name ----创建用户名称

IDENTIFIED BY password ----用户口令

[ DEFAULT TABLESPACE default_tablespace | ----指定默认表空间

TEMPORARY TABLESPACE temp_tablespace    | ----指定临时表空间

PROFILE profile ----用户的资源文件,默认default

QUOTA [ integer K | M ] | UNLIMITED ON tablespace ----表示用户在表空间中可以使用的空间总大小

| PASSWORD EXPIRE ----强制用户第一次登录后修改口令

| ACCOUNT LOCK | UNLOCK ]; ----锁定和解锁用户账号

测试创建用户:

-- Create the user
CREATE USER U007
IDENTIFIED BY his
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE  temp
PROFILE DEFAULT
QUOTA 100M ON users
PASSWORD EXPIRE;

修改用户:

(1).修改口令;

(2).修改默认空间;

(3).修改临时表空间;

(4).修改表空间配额;

(5).使用户口令失效;

(6).锁定用户;

删除用户:

----级联删除

DROP USER u007 cascade;

2、查看用户会话信息

--查询数据字典视图v$session,可获取会话号、登入时间、用户名、计算机名称

select SID,SERIAL#,LOGON_TIME,USERNAME,MACHINE from v$session;

--SID和SERIAL#能够唯一标识一个会话,所以可以使用这两个值关闭指定会话

alter system kill session ‘48,555‘;

--查询数据字典视图V$open_corsor,记录了用户登录数据库后,执行的SQL语句

--ps:SQL_TEXT字段中的SQL是不完整的,可以通过关联v$sqlarea

select SID,USER_NAME,SQL_ID,SQL_TEXT from v$open_cursor where USER_name=‘U000054‘;

3、用户配置文件

资源限制参数:

select * from dba_profiles where profile=‘MONITORING_PROFILE‘ AND resource_type=‘KERNEL‘;

(1).设置参数resource_limit为true,否则profile里的这些资源限制并不起作用

SQL> show parameter resource_limit;

NAME                 TYPE        VALUE

---------------  ----------  -------

resource_limit     boolean      FALSE     --默认为false的!

SQL> alter system set resource_limit=true scope=both;

System altered.

(2).创建profile(不建议直接修改默认DEFAULT profile)

SQL> create profile MONITORING_PROFILE limit

sessions_per_user 20

connect_time 3 --分钟为单位

idle_time 60;

(3).这时查看dba_profiles视图,就可看到新建的profile设置。

SQL> select * from dba_profiles where profile=‘MONITORING_PROFILE‘;

(4).修改用户应用该profile文件:

SQL> alter user U000054 profile MONITORING_PROFILE;

(5).可以动态修改profile的参数:

----用户可以同时连接的会话数量3个

SQL> alter profile MONITORING_PROFILE limit SESSIONS_PER_USER 3;

----限制每个用户能够连接到数据库的最长时间为60min

SQL>alter profile MONITORING_PROFILE limit connect_time 60;

----指定用户在数据库被终止前,可以让连接处于多长的空闲状态

SQL>alter profile MONITORING_PROFILE limit IDLE_TIME 1;

 

口令限制参数:

select * from dba_profiles where profile=‘MONITORING_PROFILE‘ AND resource_type=‘PASSWORD‘;

----限制用户登录oracle时,输入口令允许连续失败的次数为3次,3次失败后锁定账号

SQL>alter profile MONITORING_PROFILE limit FAILED_LOGIN_ATTEMPTS 3;

----设置口令的有效时间,单位天,默认是180天,可统一修改成不限制;

SQL>alter profile MONITORING_PROFILE limit PASSWORD_LIFE_TIME UNLIMITED;

----设置账号被锁定的天数为1小时;

SQL>alter profile MONITORING_PROFILE limit PASSWORD_LOCK_TIME 1/24;

----设置用于判断口令复杂性的函数

SQL>alter profile MONITORING_PROFILE limit PASSWORD_VERIFY_FUNCTION verify_function_HIS;

--创建自己的密码验证规则函数verify_function_HIS,详细内容如下:

CREATE OR REPLACE FUNCTION verify_function_HIS
(username     varchar2,
 password     varchar2,
 old_password varchar2)
  RETURN boolean IS
  n          boolean;
  m          integer;
  differ     integer;
  isdigit    boolean;
  ischar     boolean;
  ispunct    boolean;
  digitarray varchar2(20);
  punctarray varchar2(25);
  chararray  varchar2(52);
  Err_Custom Exception;
  v_Error Varchar2(255);
BEGIN
  digitarray := ‘0123456789‘;
  chararray  := ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘;
  punctarray := ‘!"#$%&()``*+,-/:;<=>?_‘;

  -- 检查密码和用户名的相似程度
  IF NLS_LOWER(password) = NLS_LOWER(username) THEN
    v_Error := ‘用户名和密码相同!‘;
    Raise Err_Custom;
  END IF;

  -- 检查密码长度
  IF length(password) < 4 THEN
    v_Error := ‘密码长度不能小于四位数!‘;
    Raise Err_Custom;
  END IF;

  --检查密码复杂度,可根据情况,设置简单密码字典
  IF NLS_LOWER(password) IN (‘welcome‘, ‘database‘, ‘account‘, ‘user‘, ‘password‘, ‘oracle‘, ‘computer‘, ‘abcd‘) THEN
    v_Error := ‘密码过于简单!‘;
    Raise Err_Custom;
  END IF;
  -- 所有检查通过,返回true
  RETURN(TRUE);
Exception
  When Err_Custom Then
    Raise_Application_Error(-20003, v_Error);
  When Others Then
    Zl_Errorcenter(Sqlcode, Sqlerrm);
END;

--PS:ORACLE11G安装目录下D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\utlpwdmg.sql的脚本文件utlpwdmg.sql,可执行创建一个密码验证规则verify_function_11G函数

4、权限

系统权限:创建会话、创建表、创建视图、创建用户权限等;

select any table--查询任意表权限

select any dictionary--查询数据字典视图权限

--语法:

GRANT system_privilege

TO PUBLIC | role | user_name

[WITH ADMIN OPTION]; ---可以转授权

--例子:

grant create session,create table,create view to u007 with admin option;

对象权限:授权数据库对象包括表、视图、序列、存储过程和函数等

--语法:

GRANT object_privige | ALL [PRIVILEGES]

ON [schema.]object

TO PUBLIC | role | user_name

[WITH ADMIN OPTION]; ---可以转授权

--例子:

grant select on scott.dept to public;

常用查看权限信息的数据字典视图

--了解用户所具有的系统权限

select * from dba_sys_privs where GRANTEE=‘U000393‘;

--了解表的对象授权情况

select * from dba_tab_privs where table_name=‘部门表‘

5、角色

下面介绍几种常用的、主要的预定义角色及其相关的权限:

1. CONNECT -- 具有最终用户的典型权限和最基本的权限

2. RESOURCE --主要是授予开发人员的权限

3. DBA  -- 不多说了^_^

4. EXP_FULL_DATABASE  -- 具有数据库逻辑备份时数据导出权限

5. IMP_FULL_DATABASE  -- 具有数据库逻辑备份时数据导入权限

6. DELETE_CATALOG_ROLE -- 删除和重建数据字典的权限

7. EXECUTE_CATALOG_ROLE -- 具有查询数据字典的权限

8. SELECT_CATALOG_ROLE -- 从数据字典中执行部分存储过程和函数的权限

说明:

1-3:是为了同ORACLE老版本中的概念相兼容而提供的,不能只依赖于这些ROLE;

4-5:是为了使用Import和Export实用程序的方便而提供的;

6-8:是为了数据字典视图、存储、函数和包的卸载而提供的。

常用查看角色信息的数据字典视图:

--查看某个用户拥有的角色

select * from dba_role_privs where GRANTEE=‘ADMIN‘;

--查看某个角色所拥有的系统权限

select * from role_role_privs where role=‘DBA‘;

时间: 2024-09-30 09:56:46

4、Oracle用户、权限、角色的相关文章

Oracle用户及角色的权限管理[Oracle基础]

1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限:

Oracle 用户权限管理方法

Oracle 用户权限管理方法 sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 sys;//系统管理员,拥有最高权限 system;//本地管理员,次高权限 scott;//普通用户,密码默认为tiger,默认未解锁 二.登陆 sqlplus / as sysdba;//登陆sys帐户 sqlplus sys as sysdba;//同上 sqlplus scott/tiger;//登陆普通用户scott 

ORACLE用户权限

数据字典 1.动态数据字典是以v$xxx开始的数据字典,在数据库中约有150个左右,这些数据字典反映数据库动态运行状况,在不同时间查询会得到不同的结果. 2.DBA数据字典是以DBA_xxx表示,该数据字典存储数据库结构,查询DBA数据字典可以反映数据库结构设置,管理磁盘空间和表空间.事务与回退段.用户与表空间等信息. 3.用户数据字典是以USER_xxx表示,这些数据字典反应用户所创建的实体信息.如,USER_TABLES.USER_VIEWS,数据库管理员具有操作全体用户所有实体的权限,可以

oracle用户、角色及权限

1.oracle用户 Oracle 用户分两种,一种是系统用户sys system :另外一种是普通用户: 视图dba_users 存储着所有用户信息: 创建用户: Create user 用户名identified by 密码default tablespace 表空间 授予session 权限:grant create session to TEST; 锁定和开启帐号:alter user TEST account lock / unlock ; 修改用户密码:alter user TEST

ORACLE - 用户和角色的权限管理

在ORACLE中,创建用户后需要授权才能使用. 一.用户管理 1. 用户和角色信息查询 --查询所有用户 SQL> select * from dba_users; --经授予的用户或角色的系统权限 select * from dba_sys_privs; --数据对象上的所有权限 SQL>select * from dba_tab_privs; --查看当前用户的权限和角色 SQL>select * from user_sys_privs; SQL>select * from r

Oracle 用户,角色,权限等

权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限.Oracle 的权限分为系统权限和数据对象权限,共一百多种,如果单独对用户授权,很囧,有一些用户需要的权限是相同的,就把这些用户归为同一类--某种角色,通过设立一些有预定权限的角色简化和明确授权操作,角色出现的动机也就是为了简化权限管理,它是权限的集合.一般做法是:系统把权限赋给角色,然后把角色赋给用户,当然也可以直接把某权限赋给用户.Oracle 提供细粒度的权限,可以对表的某一列单独设置权

Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表

1?三者的字典表 1.1?用户 select?*?from?dba_users; select?*?from?all_users; select?*?from?user_users; 1.2?角色 select?*?from?dba_roles; 1.3?权限 分为系统权限与对象权限: select?*?from?system_privilege_map; select?*?from?table_privilege_map; 2?三者之间关系的字典表 这类关系字典表的表名后缀都包含"_privs

ORACLE用户权限管理

参考整理自:http://docs.oracle.com/cd/B19306_01/network.102/b14266/admusers.htm#i1006856 只挑干货讲!!! 一 用户管理 1.创建用户 create user dylan identified by 123 default tablespace users  --指定表空间 quota 100m on users       --指定配额 temporary tablespace temp  --指定临时表空间 prof

ORACLE 用户权限管理

Oracle创建用户的语法: CREATE USER username IDENTIFIED BY password OR IDENTIFIED EXETERNALLY OR IDENTIFIED GLOBALLY AS 'CN=user' [DEFAULT TABLESPACE tablespace] [TEMPORARY TABLESPACE temptablespace] [QUOTA [integer K[M] ] [UNLIMITED] ] ON tablespace [,QUOTA

oracle 用户权限设置

create user +用户名 identified by +密码 default tablespace +表空间名称 temporary tablespace +临时表空间名称 --创建新用户  在oracle之后 普通用户的用户名必须以C##开头(如果不指定表空间,该用户的表空间为系统默认的表空间) create tablespace +表空间名称 +datafile +存储路径+ size 表空间大小(单位m)--创建表空间 alter tablespace 旧名称 rename to