戶管理
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'表空間無(wú)權(quán)限
1、用戶和安全性:
Account locking賬號(hào)鎖定、[System]用戶指定默認(rèn)表空間、[System]臨時(shí)表空間(支持排序)、Tablespace quotas 使用資源的表空間、Resource limits資源限制、Role privileges 角色權(quán)限(命了名的權(quán)限的集合)、Direct privileges直接權(quán)限、Authentication mechanism DB/OS/Global審核
sql>conn sys/admin1 as sysdba
sql>alter user testuser1
account lock; //賬號(hào)鎖定
sql>conn testuser1/kxf_001; //賬號(hào)已經(jīng)鎖定,無(wú)法連接。
sql>conn sys/admin1 as sysdba
sql>alter user testuser1
account unlock; //賬號(hào)解鎖
sql>alter user testuser1
quota 10m on users; //使用在users表空間的testuser1的空間限額
2、Database Schema 數(shù)據(jù)庫(kù)方案(數(shù)據(jù)對(duì)象的集合)
用戶username和schema是一一對(duì)應(yīng)的關(guān)系,經(jīng)常交互使用。schema是一個(gè)owner,是數(shù)據(jù)對(duì)象的所有者。
Schema Objects: Tables、Triggers、Constraints、Indexes、Views、Sequences、Stored program units、Synonyms、User-defined data types、Databaselinks.
3、創(chuàng)建Users的列表:
a.定義用戶需要存儲(chǔ)對(duì)象的表空間;
b.決定每個(gè)表空間的限額;
c.設(shè)定一個(gè)默認(rèn)表空間和臨時(shí)表空間。
d.創(chuàng)建一個(gè)用戶。
e.為用戶賦予權(quán)限和角色(Grant)。
sql>conn kong/kxf_001
sql>create table test1(id int); //不指定放在哪個(gè)表空間下,就建立在默認(rèn)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、創(chuàng)建一個(gè)新用戶:DB:口令驗(yàn)證\OS:extenal外部驗(yàn)證\Global安全服務(wù)器)
(1)DataBase口令驗(yàn)證(設(shè)置初始口令):
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; //為新創(chuàng)建的用戶testuser2 授權(quán)
sql>conn testuser2/kxf_001 //口令到期,無(wú)法連接到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; //不指定臨時(shí)表空間則用default temporary tablespace作為臨時(shí)表空間
sql>alter database defaut tablespace users;
(2)OS審核 Create a New User 創(chuàng)建一個(gè)新用戶(添加用戶通過(guò)映射關(guān)系將OS用戶加到Database中,集成的操作模式)其中,OS_AUTHENT_PREFIX OS審核前綴:OPS$(在dabatase操作時(shí)加上)
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 //口令是由操作系統(tǒng)來(lái)進(jìn)行驗(yàn)證。這種模式將來(lái)Oracle訪問(wèn)時(shí)不需要提供用戶名和口令,用操作系統(tǒng)來(lái)直接對(duì)應(yīng)到Oracle用戶id,如果有就成功驗(yàn)證。
default tablespace users
temporary tablespace temp
quota 10m on users; //10m的限額
5、改變用戶的限額:
sql>alter user testuser2
quota 5m on users;
【注意】有兩類表空間中是不能指定限額的:temporary tablespace臨時(shí)表空間、undo tablespace 回滾表空間
sql>alter user testuser2
quota 10m on temp; //可以指定但不會(huì)生效,因此在臨時(shí)表空間中不需要授予限額
sql>alter user testuser2
quota 10m on undotbs //錯(cuò),無(wú)法在回滾表空間上授予限額
sql>select * from dba_tables
where owner='KONG';
sql>alter user kong quota 0 on users; //修改該用戶,沒(méi)有新的空間分配給它,并非是指系統(tǒng)會(huì)將用戶名下的數(shù)據(jù)對(duì)象從當(dāng)前表空間搬到另外的表空間中去
sql>conn testuser2/kxf_001;//此時(shí)密碼已經(jīng)過(guò)期,改變密碼
另一個(gè)窗口:
sql>drop user testuser2; //無(wú)法刪除當(dāng)前正在使用連接的用戶
sql>drop user testuser1; //必須指定CASCADE來(lái)刪除testuser1;
sql>drop user testuser1 cascade //刪除用戶的相關(guān)信息和他名下的數(shù)據(jù)對(duì)象
在原來(lái)窗口:
sql>disconnect //斷開(kāi)testuser2
sql>drop user testuser2; //可以直接刪除,因不具有數(shù)據(jù)對(duì)象因此可以不帶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; //當(dāng)前用戶的系統(tǒng)信息,其中密碼PASSWORD是加密的,無(wú)法解密
sql>desc dba_ts_quotas; //每個(gè)用戶在哪個(gè)表空間中有什么限額。
sql>select * from dba_ts_quotas where username='KONG'; //沒(méi)有選定行(KONG用戶沒(méi)有空間限額)
sql>alter user kong quota 10 on users; //給users表空間10M的限額
sql>select * from dba_ts_quotas where username='KONG'; // 查詢kong用戶的空間限額,顯示在哪個(gè)表空間
sql>alter user kong quota 10 on indx; //給indx表空間10M的限額
sql>select * from dba_ts_quotas where username='KONG';// 查詢kong用戶的空間限額,顯示在哪個(gè)表空間