user, user account, schema的区别
A user isa person who connects to a user account by establishing a session against theinstance and log on with the user account name
A schemais a set of objects owned by a user account.
用户账号的属性
1、用户名(必须)
2、认证方法(必须)
3、默认表空间
4、表空间的配额
5、默认临时表空间
6、用户的配置文件
7、用户账号的状态
用户名必须以字母开头,不能超过30个字符,可以包含字母,数字,$ 和下划线_,并且不能使用保留字;字母是大小写敏感的,但是存储的时候都会存储为大写。这些规则可以通过双引号打破;
sql> create user"john%#" identified by pa55w0rd;
用户名一旦创建就不允许修改,除非你把用户删掉重建,但是这个相当危险,因为你删除用户的同时会删除其所有对象;
设置默认表空间:
设置整个数据库的默认表空间:ALTER DATABASE DEFAULT TABLESPACE tablespacename;如果没有指定的话,默认的是SYSTEM表空间;
--查看用户的默认表空间和临时空间
selectusername,default_tablespace,temporary_tablespace from dba_users whereusername='SJ';
配额是一个用户其拥有的对象在表空间中可以占用的容量;
--更改一个用户在表空间中的配额
alter user SJ quota500M on sj;
--将一个用户在表空间中的配额更改为无限制
alter user SJ quotaunlimited on sj;
--查看用户在表空间中的配额情况
selecttablespace_name,bytes,max_bytes from dba_ts_quotas where username='SJ';
--查看整个数据库的默认表空间和默认临时表空间
selectproperty_name,property_value from database_properties
where property_namelike '%TABLESPACE';
临时表空间:
当一个session进行某个操作时需要的内存容量超过了该session的PGA容量,那么这个时候session就会用到temporary tablespace;
使用临时表空间的操作包括:
1、行排序
2、表连接
3、构建索引
4、使用临时表
临时表空间的空间管理时系统自动进行的
用户不需要在临时表空间上分配配额,因为临时表空间的所有对象都属于SYS,SYS用户在所有表空间上都有unlimited的配额;
--更改用户的临时表空间
ALTER USER username TEMPORARYTABLESPACE tablespacename;
当有大量用户使用同一个用户账户的时候,就会造成临时表空间的瓶颈,这个时候可以为每个账号分配自己的临时表空间
配置文件:Profile
配置文件的主要作用:控制密码的设置格式并且限制用户对资源的占用情况;
用户账号状态:
1、OPEN
2、LOCKED
3、EXPIRED
4、EXPIRED&LOCKED
5、EXPIRED(GRACE)
6、LOCKED(TIMED)
7、EXPIRED&LOCKED(TIMED)
8、EXPIRED(GRACE)&LOCKED
9、EXPIRED(GRACE)&LOCKED(TIMED)
ALTER USER username ACCOUNT LOCK;
ALTER USER username ACCOUNTUNLOCK;
ALTER USER username PASSWORDEXPIRE;
认证方法
1、操作系统认证:sysdba/sysoper
2、密码文件认证: sysdba/sysoper
3、密码认证
4、external 认证
5、global 认证 LDAP directory server
--如果要查看哪些用户拥有sysdba/sysoper权限,可以查看V$PWFILE_USER视图;
select * fromv$pwfile_users;
还有一种权限也很特别SYSASM,这个权限是在ASM实例中使用的;
SYS用户不允许使用密码认证方式进行连接,它只能使用密码文件方式,操作系统方式和LDAP认证方式;
在建立连接时,密码在网络上传输的时候必须使用AES加密算法加密,对于其他会话内容是不提供加密的,如果需要加密,需要 AdvancedSecurity Option的支持;
SYSTEM用户可以更改其他用户的密码:
ALTER USER usename IDENTIFIED BYpassword;
外部认证:
If theAdvanced Security Option has been licensed , then the external service can beKerberos server, a RADIUS server, or inthe Windows native authentication
Without the Advanced security Option, the only form of external authenticationthat can be used is operating system authentication;
Thetechnique is to create an Oracle user account with the same name as theoperating system user account but prefixed with a string specified by theinstance parameter OS_AUTHENT_PREFIX
selectvalue from v$parameter where name='os_authent_prefix';
在linux或unix环境中创建外部操作系统认证的方法很简单,假定系统上有一个系统用户为cedar,
在Oracle需要以下两步:
createuser ops$cedar identified externally;
grantcreate session to ops$cedar;
在windos环境中,假定用户名为cedarfan 所在的域为DBA,那么在Oracle中需要如下的语句
createuser "OPS$DBACEDAR FAN" identified externally;
GlobalAuthentication
Anemerging standard for identity management makes user of LDAP servers
管理用户账号:
--创建用户账号
create user sjidentified by sj
default tablespace sjtemporary tablespace temp
quota 500M onsj,quota unlimited on users
profile test_frofile
password expire
account unlock;
--删除用户
drop user sj --这个命令只有在该用户没有任何对象的情况下才能执行成功
drop user sjcascade;--这个命令可以先删除对象,然后再删除用户