博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4、Oracle用户、权限、角色
阅读量:6252 次
发布时间:2019-06-22

本文共 5058 字,大约阅读时间需要 16 分钟。

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 userCREATE USER U007IDENTIFIED BY hisDEFAULT TABLESPACE usersTEMPORARY TABLESPACE  tempPROFILE DEFAULTQUOTA 100M ON usersPASSWORD 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:是为了使用ImportExport实用程序的方便而提供的;

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

 

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

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

select * from dba_role_privs where GRANTEE='ADMIN';

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

select * from role_role_privs where role='DBA';

 

转载于:https://www.cnblogs.com/jionjionyou/p/5503514.html

你可能感兴趣的文章
php让提交表单的数据保留,php基础教程--表单验证(必填、提交后数据保留)
查看>>
java类可选,类层次结构中的Java可选接口
查看>>
php 二维数组分页效率,PHP二维数组分页排序分页_PHP数组分页
查看>>
php网站开发开题报告,基于PHP的网上租车租赁网站设计与实现开题报告
查看>>
用matlab怎样表示褶积,信号的时域表示以及卷积运算(MATLAB)
查看>>
mysql 命令 字符集,MySQL字符集的设置
查看>>
php登录半透明,WordPress透明OAuth 1.0使用PHP登录
查看>>
php开发信息发布平台思路,基于PHP的大学信息发布平台设计与实现.doc
查看>>
php使用163使用465端口吗,在CentOS 7系统里使用465端口发送邮件
查看>>
java关联vss 80020009,80020009: Invalid password[src=SourceSafe,guid=null]
查看>>
java复制文件到指定文件夹下,java:把一个文件夹中的所有文件复制到指定文件夹下...
查看>>
matlab足球赛排名问题程序,足球队排名问题及解决方法.doc
查看>>
ubuntu php5-imap,在Ubuntu 11上安装具有IMAP / Kerberos支持的PHP的问题
查看>>
php圣经 源码,基于PHP的圣经读者用剑模块和diatheke
查看>>
php中的$this-%3efetch,Zend DB fetchAll(): where子句數組帶有IN操作符
查看>>
李思琼php,nginx单机1w并发优化
查看>>
怎么手动设置oracle,手把手设置win7系统手动启动Oracle服务的设置方法
查看>>
oracle fk作用,oracle pk&fk
查看>>
oracle裂块是什么意思,Oracle索引块分裂split信息汇总
查看>>
php构造函数创建对象,7.10 构造函数来创建对象
查看>>