4Oracle用户权限角色
Posted 囧囧友
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4Oracle用户权限角色相关的知识,希望对你有一定的参考价值。
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\';
以上是关于4Oracle用户权限角色的主要内容,如果未能解决你的问题,请参考以下文章
oracle 10g中权限分配问题 对于角色CONNECT,RESOURCE的权限我查看了, 我赋予一个用户这两个角色。