创建和管理数据库用户账户
模式schema:用户账户拥有的一组对象.
用户:某个账户名建立针对实例的会话并进行登录来连接到该用户账户的个人.
用户账户属性
用户名
身份验证方法
默认表空间
表空间配额
临时表空间
用户配置文件
账户状态
创建用户时指定以上属性,不过其中只有用户名和身份验证方法是必须的,其它的都有默认值.
用户名:必须唯一,必须以字母开头,字符不超过30个,包含字母,数字,$,下划线_,不能是保留字比如select啥的.不允许在创建后更改用户名,要改就得删除再重新创建.
默认表空间和配额:每个用户都有默认的表空间,用户创建的任何模式对象都保存在此表空间中,用户可以拥有获得配额的任何表空间上的对象,除非创建时指定表空间,否则都放在用户的默认表空间中.
ALTER DATABASE DEFAULT TABLESPACE othertbsname;
如果创建数据库时未指定默认表空间,则用SYSTEM当默认表空间.
配额quota:表空间中用户模式可用的空间量
用户默认的表空间和临时表空间
select username,default_tablespace,temporary_tablespace from dba_users
where username='SCOTT';
下面两个命令使用户有权占用user表空间中10m的空间,在example表空间中不限量的空间
alter user scott quota 10m on users;
alter user scott quota unlimited on example;
select tablespace_name,bytes,max_bytes from dba_ts_quotas
where username='DMSYS';
select property_name,property_value from database_properties
where property_name like '%TABLESPACE';
PROPERTY_NAME PROPERTY_VALUE
--------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE TEMP
DEFAULT_PERMANENT_TABLESPACE USERS
临时表空间
永久对象(表)存储在永久表空间中,临时对象存储在临时表空间中.如果会话为执行某些操作需要的空间超出了会话PGA的可用空间量,则将需要临时表空间中的空间.PGA是程序全局区,是分配给会话的专用内存.需要临时空间的操作包括排序行,连接表,构建索引和使用临时表.会为每个用户账户分配临时表空间,但连接到该账户的所有用户会话将共享此临时表空间.
临时表空间的空间管理完全自动完成,数据库根据需要创建和删除临时对象,不用为用户授予临时表空间上的配额.
要更改用户的临时表空间(将影响连接到账户的所有未来会话),用如下命令:
ALTER USER username TEMPORARY TABLESPACE tablespace_name;
配置文件:
用户的配置文件控制口令设置,并在一定程度上控制资源的使用.配置文件是管理口令和资源的有效方法.
账户状态:如dba_users的account_status列值一样,9种可能的状态.
select account_status from dba_users
写几个常用的:
打开(open):账户可供使用
锁定(locked):账户锁定,无法使用,解锁即可.
过期(expired):口令生命周期已终结,重置口令前任何用户都不能连接到expired账户
过期并锁定(expired&locked):锁定而且口令还过期了.
锁定或解除账户的锁定,使用如下命令:
ALTER USER username ACCOUNT LOCK/UNLOCK;
强制用户更改口令:
ALTER USER username PASSWORD EXPIRE;
身份验证方法
用户账户必须具有身份验证方法:数据库借助这些方法,确定尝试创建会话的用户是否有权这么做.最简单的是提供一个与数据库中存储的口令匹配的口令.
还有其他方法:
操作系统身份验证 --仅管理员使用
口令文件身份验证 --仅管理员使用
外部身份验证
全局身份验证 --LDAP目录服务器,LDAP是oracle internet directory作为oracle应用服务器的一部分发布.
操作系统和口令文件身份验证
要为账户启用操作系统和口令文件身份验证(二者相匹配),必须为用户授予SYSDBA或SYSOPER权限:
grant [ sysdba | sysoper ] to username;
如果向用户授予这些权限,则会将用户口令从数据字典复制到外部口令文件中,此时数据库即使没打开,实例也能读取口令.
CONNECT username / password [ @db_alias ] AS [ SYSOPER | SYSDBA ];
用此方法通过oracle net连接到远程数据库
口令身份验证
connect username / password [ @db_alias ];
实例将针对数据字典中的用户账户存储的口令,验证给定的口令,为此数据库必须处于打开状态,更改口令
ALTER USER username IDENTIFIED BY password;
外部身份验证
全局身份验证
创建账户
create user包含两个必须的参数 用户名和身份验证方法,一个典型例子:
create user scott identified by tiger --提供用户名
default tablespace users temporary tablespace temp --提供默认表空间和临时表空间
quota 100m on users,quota unlimited on example --设置默认表空间和另一表空间配额
profile developer_profile --用与口令和资源管理的配置文件名
password expire --强制用户立刻更改口令
account unlock; --使账户变得可用(默认设置)
只有第一行是必须的,其它都有默认设置:
除了名称,可更改账户上的每个属性,比如更改口令:
alter user scott identified by cat;
要更改默认表空间和临时表空间:
alter user scott default tablespace store_data temporary tablespace temp;
更改配额:
alter user scott quota unlimited on store_data,quota 0 on users;
更改配置文件:
alter user scott profile prod_profile;
强制更改口令:
alter user scott password expire;
锁定账户:
alter user scott account lock;
删除账户:
drop user scott cascade;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25025926/viewspace-1067978/
,如需转载,请注明出处,否则将追究法律责任。