---用戶與權限管理----
--1,用戶--
Create User 用戶名Identified By "口令"
Default Tablespace 表空間
---指定默認表空間,若不指定,則SYSTEM表空間將被指定爲用戶的默認表空間,爲了提高數據庫的性能,同時爲了方便管理數據,Oracle建議爲用戶指定一個默認表空間---
Temporary Tablespace 臨時表空間
Quota 空間配額大小 On 表空間
Password Expire
Account Lock|Unlock
點擊(此處)摺疊或打開
Create User user1 Identified By"1234"
Default Tablespace Users
Temporary Tablespace temp
Quota 20M On Users ---若希望用戶在所有表空間上都具有無限制的空間配額,則只要爲其指定Unlimited tablespaces系統權限即可---
Password Expire
Account Unlock;
--刪除用戶--
Drop User 用戶名
--需要注意的是,如果一個用戶的模式中已經包含一些數據庫對象,那麼這個用戶不能直接刪除,必須指定cascade--
Drop User scott Cascade;
--用戶的相關信息從數據字典視圖dba_users中獲得--
Selectusername,Password,default_tablespace,account_status From dba_users;
--修改用戶口令--
Password 用戶名 --若沒有指定用戶名,則默認爲當前用戶--
Alter User 用戶Identified By "新口令"
--alter也可以修改其它信息--
Alter User user1
Default Tablespace ts1
Temporary Tablespace ts1
Quota Unlimited On ts1;
--系統權限的管理--
--爲用戶授予權限的grant命令語法--
Grant 權限1,權限2,... To 用戶1,用戶2,... With Admin Option; --with admin option的好處是權限的獲得者可以再將權限授予其他用戶--
---權限包括系統權限和對象權限--
--系統權限--
Create Session,Create Table,CreateResource,Create View,Create User,Create Trigger,Create Tablespace,Createprocedure.
Alter Session,Database,User
--爲了使一個用戶可以操作數據庫,至少需要有create session,create table和有指定(表)空間配額的3個權限--
Grant Create Session,Create Table,UnlimitedTablespace To 用戶名;
--回收權限--
--注意:系統權限可以轉授,但是回收時不能間接回收--
Revoke 系統權限1,系統權限2 ...
From 用戶1,用戶2 ...
--對象權限 主要是對數據庫對象中的數據的訪問權限,這類權限主要針對普通用戶--
Grant 對象權限1(列名),對象權限2(列名)...
On 對象 To 用戶1,用戶2... With Grant Option
Grant Select On dept To user1 With GrantOption
Grant Insert(empno),Update(sal) On emp Touser1,user2
Grant Execute On functional To user1
--回收權限--
--權限insert,update,references在分配時可以指定相關的列,但在回收時不能指定列,而只能指定表名--
Revoke 對象權限1,對象權限2... On 對象
From 用戶1,用戶2...
Revoke Update(sal) On emp From user2 --錯誤語句--
Revoke Update On emp From user2
--數據庫中所有的系統權限--
Select Name From system_privilege_map;
--sys從數據字典視圖dba_sys_privs中查詢任何用戶所具有的系統權限--
Select grantee,Privilege,admin_option Fromdba_sys_privs Where grantee='SCOTT'
----普通用戶通過user_sys_privs查詢 用戶直接獲得的系統權限,即通過grant命令授予當前用戶的系統權限---
Select username,Privilege,admin_option Fromuser_sys_privs
--從數據字典視圖session_privs中可以查詢一個用戶在當前會話中所具有的系統權限--
-- session_privs權限==直接獲得的權限 + 該用戶從角色中間接獲得的系統權限 ---
--對象權限有關的數據字典視圖:dba_tab_privs,dba_col_privs,user_tab_privs和user_col_privs--
點擊(此處)摺疊或打開
-- dba_tab_privs 查詢任何用戶所具有的對象權限 ---
Selectgrantee,Privilege,grantor,table_name,grantable From dba_tab_privs
Where grantee='USER1';
--dba_col_privs 查詢用戶在列上的權限 --
Selectgrantee,table_name,column_name,Privilege,grantor,grantable
From dba_col_privs Where grantee='USER1';
Selectgrantee,table_name,column_name,Privilege,grantor,grantable
From user_tab_privs Where grantee='SCOTT';
--角色--
--connect角色 包含的權限有createSession --
/* resource角色 包含的權限有 crate sequence,create trigger,create cluster,create procedure,
create type,create operator,create table,create indextype */
Create Role 角色名
Drop Role 角色名
Grant Select On emp To role1
Revoke Select On emp From role1
--角色信息的查詢--
/* dba_roles 記錄數據庫中所有角色
dba_role_privs 記錄所有被授予用戶或另一角色的角色
user_role_privs 記錄所有被授予當前用戶的角色
role_role_privs 記錄一個角色中包含的其他角色
role_sys_privs 記錄一個角色中包含的系統權限
role_tab_privs 記錄一個角色中包含的對象權限
session_roles 記錄當前會話中所使用的角色 */
--獲得系統中所有的角色--
Select Role From dba_roles
--查詢用戶user1所擁有的角色和默認角色--
Select granted_role,default_role Fromdba_role_privs Where grantee='user1'
--查詢角色connect所包含的系統權限--
Select Privilege,admin_option Fromrole_sys_privs Where Role='CONNECT'
--profile的管理--
--查詢用戶的會話信息,強制終止用戶會話,鎖定用戶帳號--
Select username,Sid,serial# From v$sessionWhere username='SCOTT';
Alter System Kill Session '144,7'; --144和7分別爲用戶會話的sid和serial#--
Alter User scott Account Lock;
--profile創建--
Create Profile profile名稱 Limit
口令限制
資源限制
--指定profile 每個用戶只能指定一個profile--
Create User user2 Identified By"1234" Profile p1
Alter User scott Profile p1
--從數據字典dba_users中可以獲得爲每個用戶指定的profile-
Select Profile From dba_users Whereusername='SCOTT';
--數據字典dba_profiles--
Select resource_name,Limit Fromdba_profiles Where Profile='P1';
--刪除profile--
Drop Profile profile名字 [Cascade];
--Profile限制--
/* Failed_Login_Attempts 允許的失敗登錄次數,默認值爲10次
Password_Lock_Time 賬號鎖定時間,默認值爲1天
Password_Life_Time 口令的有效期,默認值爲180天
Password_Grace_Time 口令有效期的延長期,默認值爲-周、7天
Password_Reuse_Time 爲了再次使用過去用過的口令,必須經過的天數
Password_Reuse_Max 爲了再次使用過去用過的口令,必須使用不同口令的次數
Password_Reuse_Time 和 Password_Reuse_Max 必須一起使用 */
--如果用戶失敗的登錄次數達到3次,則用戶賬號將被鎖定5天--
Create Profile p1 LimitFailed_Login_Attempts 3 Password_Lock_Time 5
--用戶在30天內必須把口令修改過5次後,才能使用過去用過的口令--
Create Profile p2 Limit Password_Reuse_Time30 Password_Reuse_Max 5
--利用profile對用戶使用資源進行控制--
如果要使profile對用戶使用系統資源起限制作用,則需要將參數Resource_limit的值設置爲True
Alter System Set resource_limit=True
Sessions_Per_User 一個用戶所允許的併發會話數目
Cpu_Per_Session 用戶在一個會話內所使用的Cpu時間的總和,時間單位爲0.01秒
Logical_Reads_Per_Session 用戶在一個會話內所能訪問的數據塊的數量(包括物理讀和邏輯讀的數量)
Connect_Time 一個用戶會話所能持續的時間,以分鐘爲單位;超過這個時間,會話將自動斷開
Idle_Time 一個用戶會話所允許的連續的空閒時間,以分鐘爲單位,超過這個時間,會話將自動斷開
Private_Sga 如果數據庫服務器的連接模式爲共享模式,這個參數用來限制爲一個用戶會話所分配的Sga空間
Cpu_Per_Call 用戶執行的每條命令所使用的Cpu時間,時間單位爲0.01秒
Logical_Reads_Per_Call 用戶執行的每條命令所能訪問的數據塊的數量
如果能夠對用戶消耗Cpu時間、訪問數據塊的數量等這些資源進行限制,那麼就可以有效地
防止諸如死循環的執行、訪問一個大表中的所有數據這類情況的發生。
Create Profile p3 Limit
Sessions_Per_User 100
Logical_Reads_Per_Session 500
Connect_Time 5
Create Profile p4 Limit
Cpu_Per_Call 10
Logical_Reads_Per_Call 50
/* 若沒有爲用戶指定profile文件,則用戶會受默認profile限制,如果要對所有用戶進行同樣的限制,那麼只要修改
這個默認profile所包含的限制,並且不要爲用戶指定其他的profile */
Select resource_name,Limit Fromdba_profiles Where Profile='DEFAULT';