户管理
sql>create user testuser1 identified by kxf_001;
sql>grant connect,create table to testuser1; //赋予connect和create table 给testuser1
sql>conn testuser1/kxf_001
sql>create table test1(id int)tablespace users; //'USERS'表空间无权限
1、用户和安全性:
Account locking账号锁定、[System]用户指定默认表空间、[System]临时表空间(支持排序)、Tablespace quotas 使用资源的表空间、Resource limits资源限制、Role privileges 角色权限(命了名的权限的集合)、Direct privileges直接权限、Authentication mechanism DB/OS/Global审核
sql>conn sys/admin1 as sysdba
sql>alter user testuser1
account lock; //账号锁定
sql>conn testuser1/kxf_001; //账号已经锁定,无法连接。
sql>conn sys/admin1 as sysdba
sql>alter user testuser1
account unlock; //账号解锁
sql>alter user testuser1
quota 10m on users; //使用在users表空间的testuser1的空间限额
2、Database Schema 数据库方案(数据对象的集合)
用户username和schema是一一对应的关系,经常交互使用。schema是一个owner,是数据对象的所有者。
Schema Objects: Tables、Triggers、Constraints、Indexes、Views、Sequences、Stored program units、Synonyms、User-defined data types、Databaselinks.
3、创建Users的列表:
a.定义用户需要存储对象的表空间;
b.决定每个表空间的限额;
c.设定一个默认表空间和临时表空间。
d.创建一个用户。
e.为用户赋予权限和角色(Grant)。
sql>conn kong/kxf_001
sql>create table test1(id int); //不指定放在哪个表空间下,就建立在默认default表空间下。
sql>conn sys/admin1 as sysdba
sql>alter user kong profile default;
sql>desc dba_users
sql>select username,default_tablespace from dba_users where username='KONG';
4、创建一个新用户:DB:口令验证\OS:extenal外部验证\Global安全服务器)
(1)DataBase口令验证(设置初始口令):
CREATE USER aaron IDENTITFIED BY soccer
DEFAULT TABLESPACE data
TEMPORARY TABLESPACE temp
QUOTA 15m ON data
PASSWORD EXPIRE;
sql>create user testuser2
identified by kxf_001
password expire; //口令到期
sql>grant connect to testuser2; //为新创建的用户testuser2 授权
sql>conn testuser2/kxf_001 //口令到期,无法连接到Oracle
sql>conn sys/admin1 as sysdba
sql>alter user testuser2
default tablespace users
temporary tablespace temp
quota 10m on users1
sql>show parmeter default
sql>alter database default temporary tablespace temp; //不指定临时表空间则用default temporary tablespace作为临时表空间
sql>alter database defaut tablespace users;
(2)OS审核 Create a New User 创建一个新用户(添加用户通过映射关系将OS用户加到Database中,集成的操作模式)其中,OS_AUTHENT_PREFIX OS审核前缀:OPS$(在dabatase操作时加上)
CREATE USER aaron IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE temp
QUOTA 15m ON data
PASSWORD EXPIRE;
sql>show parameter os //os_authent_prefix value:OPS$
sql>create user ops$kong
identified externally //口令是由操作系统来进行验证。这种模式将来Oracle访问时不需要提供用户名和口令,用操作系统来直接对应到Oracle用户id,如果有就成功验证。
default tablespace users
temporary tablespace temp
quota 10m on users; //10m的限额
5、改变用户的限额:
sql>alter user testuser2
quota 5m on users;
【注意】有两类表空间中是不能指定限额的:temporary tablespace临时表空间、undo tablespace 回滚表空间
sql>alter user testuser2
quota 10m on temp; //可以指定但不会生效,因此在临时表空间中不需要授予限额
sql>alter user testuser2
quota 10m on undotbs //错,无法在回滚表空间上授予限额
sql>select * from dba_tables
where owner='KONG';
sql>alter user kong quota 0 on users; //修改该用户,没有新的空间分配给它,并非是指系统会将用户名下的数据对象从当前表空间搬到另外的表空间中去
sql>conn testuser2/kxf_001;//此时密码已经过期,改变密码
另一个窗口:
sql>drop user testuser2; //无法删除当前正在使用连接的用户
sql>drop user testuser1; //必须指定CASCADE来删除testuser1;
sql>drop user testuser1 cascade //删除用户的相关信息和他名下的数据对象
在原来窗口:
sql>disconnect //断开testuser2
sql>drop user testuser2; //可以直接删除,因不具有数据对象因此可以不带cascade。
6、如何获取用户信息:
DBA_USERS\DBA_TS_QUOTAS
sql>desc dba_users; //USERNAME\USER_ID\PASSWORD\ACCOUNT_STATUS\LOCK_DATE\EXPIRY_DATE\DEFAULT_TABLESPACE\TEMPORARY_TABLESPACE\CREATED\PROFILE\INITIAL_RSRC_CONSUMER_GROUP\EXTERNAL_NAME
sql>select * from dba_users; //当前用户的系统信息,其中密码PASSWORD是加密的,无法解密
sql>desc dba_ts_quotas; //每个用户在哪个表空间中有什么限额。
sql>select * from dba_ts_quotas where username='KONG'; //没有选定行(KONG用户没有空间限额)
sql>alter user kong quota 10 on users; //给users表空间10M的限额
sql>select * from dba_ts_quotas where username='KONG'; // 查询kong用户的空间限额,显示在哪个表空间
sql>alter user kong quota 10 on indx; //给indx表空间10M的限额
sql>select * from dba_ts_quotas where username='KONG';// 查询kong用户的空间限额,显示在哪个表空间