日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle用户管理学习总结

發(fā)布時(shí)間:2025/4/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle用户管理学习总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Oracle 用戶管理



一、用戶的概念
  用戶,即user,通俗的講就是訪問(wèn)oracle數(shù)據(jù)庫(kù)的“人”。在oracle中,可以對(duì)用戶的各種安全參數(shù)進(jìn)行控制,以維護(hù)數(shù)據(jù)庫(kù)的安全性,這些概念包括模式(schema)、權(quán)限、角色、存儲(chǔ)設(shè)置、空間限額、存取資源限制、數(shù)據(jù)庫(kù)審計(jì)等。每個(gè)用戶都有一個(gè)口令,使用正確的用戶/口令才能登錄到數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存取。


二、用戶默認(rèn)表空間
  表空間是信息存儲(chǔ)的最大邏輯單位、當(dāng)用戶連接到數(shù)據(jù)庫(kù)進(jìn)行資料存儲(chǔ)時(shí),若未指出數(shù)據(jù)的目標(biāo)存儲(chǔ)表空間時(shí),則數(shù)據(jù)存儲(chǔ)在用戶的默認(rèn)表空間中。比如:create table mytable(id varchar2(20),name varchar2(100));這條語(yǔ)句創(chuàng)建了一個(gè)表mytable,并將其存儲(chǔ)在當(dāng)前用戶的默認(rèn)表空間中,若要指定表空間,則:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。用戶的默認(rèn)表空間可以在創(chuàng)建用戶時(shí)指定,也可以使用aler user命令進(jìn)行指定,具體語(yǔ)法見(jiàn)后面的介紹。


三、用戶臨時(shí)表空間
  臨時(shí)表空間主要用于order by語(yǔ)句的排序以及其它一些中間操作。在oracle9i之前,可以指定用戶使用不同的臨時(shí)表空間,從9i開始,臨時(shí)表空間是通用的,所的用戶都使用TEMP作為臨時(shí)表空間。


四、用戶資源文件
  用戶資源文件用來(lái)對(duì)用戶的資源存取進(jìn)行限制,包括:cpu使用時(shí)間限制、內(nèi)存邏輯讀個(gè)數(shù)限制、每個(gè)用戶同時(shí)可以連接的會(huì)話數(shù)據(jù)限制、一個(gè)會(huì)話的空間和時(shí)間限制、一個(gè)會(huì)話的持續(xù)時(shí)間限制、每次會(huì)話的專用SGA空間限制。


五、用戶表空間限額
  表空間存儲(chǔ)限制是用戶在某一個(gè)表空間中可以使用的存儲(chǔ)空間總數(shù)。在創(chuàng)建或修改用戶時(shí),可以由參數(shù)quota指出。若用戶在向表空間存儲(chǔ)數(shù)據(jù)時(shí),超出了此限額,則會(huì)產(chǎn)生錯(cuò)誤。錯(cuò)誤信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通過(guò)查詢字典dba_ts_quotas查看表空間限額信息。


六、創(chuàng)建用戶資源文件
  創(chuàng)建用戶資源文件的語(yǔ)法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用戶可以同時(shí)連接的會(huì)話數(shù)量限額;
CPU_PER_SESSION:用戶在一次數(shù)據(jù)庫(kù)會(huì)期間可占用的CPU時(shí)間總量限額,單位為百分之一秒;
USER_PER_CALL:用戶一次SQL調(diào)用可用的CPU時(shí)間總量限額,單位為百分之一秒;
LOGICAL_READS_PER_SESSION:在一次數(shù)據(jù)庫(kù)會(huì)話期間能夠讀取的數(shù)據(jù)庫(kù)塊的個(gè)數(shù)限額;
LOGICAL_READS_PER_CALL:一次SQL調(diào)用可以讀取的數(shù)據(jù)庫(kù)塊數(shù)限額;
IDLE_TIME:用戶連接到數(shù)據(jù)庫(kù)后的可空閑時(shí)間限額,單位為分鐘,若空閑時(shí)間超過(guò)此值,則連接被斷開;
CONNECT_TIME:一次連接的時(shí)間總量限額,單位為分鐘,連接時(shí)間超過(guò)此值時(shí),連接被斷開;
PRIVATE_SGA:用戶么有的SGA區(qū)的大小,單位為數(shù)據(jù)庫(kù)塊,默認(rèn)值為UNLIMITED;
COMPOSITE_LIMIT:這是一項(xiàng)由上述限制參數(shù)構(gòu)成的組合資源項(xiàng)。舉例來(lái)說(shuō),假設(shè)資源設(shè)置如下:
  IDLE_TIME 20
? ? CONNECT_TIME 120
? ? CPU_PER_CALL 750
? ? COMPOSITE_LIMT 800
那么,當(dāng)會(huì)話空間超過(guò)20分鐘,或者連接時(shí)間超過(guò)120分鐘,又或者執(zhí)行一個(gè)SQL耗費(fèi)超過(guò)7.5秒,再或者這幾個(gè)資源限制加起來(lái)的總數(shù)超過(guò)800,則系統(tǒng)自動(dòng)終止會(huì)話。
FAILED_LOGIN_ATTEMPTS:用戶登錄時(shí),允許用戶名/密碼校驗(yàn)失敗致使用登錄失敗的次數(shù)限額,超過(guò)該次數(shù),帳戶被鎖定;
PASSWORD_LIFE_TIME:口令有效時(shí)間,單位為天數(shù),超過(guò)這一時(shí)間,拒絕登錄,須重新設(shè)置口令,默認(rèn)值為UNLIMITED;
PASSWORD_REUSE_TIME:一個(gè)失效口令經(jīng)過(guò)多少天后才可重新利用,默認(rèn)為UNLIMITED;
PASSWORD_REUSE_MAX:一個(gè)口令可重復(fù)使用的次數(shù);
PASSWORD_LOCK_TIME:當(dāng)?shù)卿浭∵_(dá)到FAILED_LOGIN_ATTEMPS時(shí),帳戶被鎖定,該參數(shù)用于設(shè)定被鎖定的天數(shù);
下面舉例如下:
1)創(chuàng)建一個(gè)用戶資源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查詢用戶資源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用戶資源文件給用戶
sql>alter user us1 profile tax_users


七、創(chuàng)建、修改、刪除用戶
1.創(chuàng)建用戶
  創(chuàng)建用戶的詳細(xì)語(yǔ)法請(qǐng)查詢oracle的官方參數(shù)文檔,這里介紹典型的語(yǔ)法。語(yǔ)法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各選項(xiàng)含義如下:
IDENTIFIED BY password:用戶口令;
DEFAULT TABLESPACE tablespace:默認(rèn)表空間;
TEMPORARY TABLESPACE tablespace:臨時(shí)表空間;
PROFILE profile|DEFAULT:用戶資源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用戶在表空間上的空間使用限額,可以指定多個(gè)表空間的限額。
舉例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;


2.修改用戶
  修改用戶的語(yǔ)法是與創(chuàng)建用戶的語(yǔ)法類似的,主要是CREATE USER 變成 ALTER USER,具體請(qǐng)參考o(jì)racle文檔。


3.刪除用戶
? 刪除用戶,是將用戶及用戶所創(chuàng)建的schema對(duì)象從數(shù)據(jù)庫(kù)刪除。如下:
SQL>DROP USER us1;
若用戶us1含有schema對(duì)象,則無(wú)上述語(yǔ)句將執(zhí)行失敗,須加入關(guān)鍵字CASCADE才能刪除,意思是連并其對(duì)象一起刪除,如下:
SQL>DROP USER us1 CASCADE;


一、用戶的概念
  用戶,即user,通俗的講就是訪問(wèn)oracle數(shù)據(jù)庫(kù)的“人”。在oracle中,可以對(duì)用戶的各種安全參數(shù)進(jìn)行控制,以維護(hù)數(shù)據(jù)庫(kù)的安全性,這些概念包括模式(schema)、權(quán)限、角色、存儲(chǔ)設(shè)置、空間限額、存取資源限制、數(shù)據(jù)庫(kù)審計(jì)等。每個(gè)用戶都有一個(gè)口令,使用正確的用戶/口令才能登錄到數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存取。


二、用戶默認(rèn)表空間
  表空間是信息存儲(chǔ)的最大邏輯單位、當(dāng)用戶連接到數(shù)據(jù)庫(kù)進(jìn)行資料存儲(chǔ)時(shí),若未指出數(shù)據(jù)的目標(biāo)存儲(chǔ)表空間時(shí),則數(shù)據(jù)存儲(chǔ)在用戶的默認(rèn)表空間中。比如:create table mytable(id varchar2(20),name varchar2(100));這條語(yǔ)句創(chuàng)建了一個(gè)表mytable,并將其存儲(chǔ)在當(dāng)前用戶的默認(rèn)表空間中,若要指定表空間,則:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。用戶的默認(rèn)表空間可以在創(chuàng)建用戶時(shí)指定,也可以使用aler user命令進(jìn)行指定,具體語(yǔ)法見(jiàn)后面的介紹。


三、用戶臨時(shí)表空間
  臨時(shí)表空間主要用于order by語(yǔ)句的排序以及其它一些中間操作。在oracle9i之前,可以指定用戶使用不同的臨時(shí)表空間,從9i開始,臨時(shí)表空間是通用的,所的用戶都使用TEMP作為臨時(shí)表空間。


四、用戶資源文件
  用戶資源文件用來(lái)對(duì)用戶的資源存取進(jìn)行限制,包括:cpu使用時(shí)間限制、內(nèi)存邏輯讀個(gè)數(shù)限制、每個(gè)用戶同時(shí)可以連接的會(huì)話數(shù)據(jù)限制、一個(gè)會(huì)話的空間和時(shí)間限制、一個(gè)會(huì)話的持續(xù)時(shí)間限制、每次會(huì)話的專用SGA空間限制。


五、用戶表空間限額
  表空間存儲(chǔ)限制是用戶在某一個(gè)表空間中可以使用的存儲(chǔ)空間總數(shù)。在創(chuàng)建或修改用戶時(shí),可以由參數(shù)quota指出。若用戶在向表空間存儲(chǔ)數(shù)據(jù)時(shí),超出了此限額,則會(huì)產(chǎn)生錯(cuò)誤。錯(cuò)誤信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通過(guò)查詢字典dba_ts_quotas查看表空間限額信息。


六、創(chuàng)建用戶資源文件
  創(chuàng)建用戶資源文件的語(yǔ)法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用戶可以同時(shí)連接的會(huì)話數(shù)量限額;
CPU_PER_SESSION:用戶在一次數(shù)據(jù)庫(kù)會(huì)期間可占用的CPU時(shí)間總量限額,單位為百分之一秒;
USER_PER_CALL:用戶一次SQL調(diào)用可用的CPU時(shí)間總量限額,單位為百分之一秒;
LOGICAL_READS_PER_SESSION:在一次數(shù)據(jù)庫(kù)會(huì)話期間能夠讀取的數(shù)據(jù)庫(kù)塊的個(gè)數(shù)限額;
LOGICAL_READS_PER_CALL:一次SQL調(diào)用可以讀取的數(shù)據(jù)庫(kù)塊數(shù)限額;
IDLE_TIME:用戶連接到數(shù)據(jù)庫(kù)后的可空閑時(shí)間限額,單位為分鐘,若空閑時(shí)間超過(guò)此值,則連接被斷開;
CONNECT_TIME:一次連接的時(shí)間總量限額,單位為分鐘,連接時(shí)間超過(guò)此值時(shí),連接被斷開;
PRIVATE_SGA:用戶么有的SGA區(qū)的大小,單位為數(shù)據(jù)庫(kù)塊,默認(rèn)值為UNLIMITED;
COMPOSITE_LIMIT:這是一項(xiàng)由上述限制參數(shù)構(gòu)成的組合資源項(xiàng)。舉例來(lái)說(shuō),假設(shè)資源設(shè)置如下:
  IDLE_TIME 20
? ? CONNECT_TIME 120
? ? CPU_PER_CALL 750
? ? COMPOSITE_LIMT 800
那么,當(dāng)會(huì)話空間超過(guò)20分鐘,或者連接時(shí)間超過(guò)120分鐘,又或者執(zhí)行一個(gè)SQL耗費(fèi)超過(guò)7.5秒,再或者這幾個(gè)資源限制加起來(lái)的總數(shù)超過(guò)800,則系統(tǒng)自動(dòng)終止會(huì)話。
FAILED_LOGIN_ATTEMPTS:用戶登錄時(shí),允許用戶名/密碼校驗(yàn)失敗致使用登錄失敗的次數(shù)限額,超過(guò)該次數(shù),帳戶被鎖定;
PASSWORD_LIFE_TIME:口令有效時(shí)間,單位為天數(shù),超過(guò)這一時(shí)間,拒絕登錄,須重新設(shè)置口令,默認(rèn)值為UNLIMITED;
PASSWORD_REUSE_TIME:一個(gè)失效口令經(jīng)過(guò)多少天后才可重新利用,默認(rèn)為UNLIMITED;
PASSWORD_REUSE_MAX:一個(gè)口令可重復(fù)使用的次數(shù);
PASSWORD_LOCK_TIME:當(dāng)?shù)卿浭∵_(dá)到FAILED_LOGIN_ATTEMPS時(shí),帳戶被鎖定,該參數(shù)用于設(shè)定被鎖定的天數(shù);
下面舉例如下:
1)創(chuàng)建一個(gè)用戶資源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查詢用戶資源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用戶資源文件給用戶
sql>alter user us1 profile tax_users


七、創(chuàng)建、修改、刪除用戶
1.創(chuàng)建用戶
  創(chuàng)建用戶的詳細(xì)語(yǔ)法請(qǐng)查詢oracle的官方參數(shù)文檔,這里介紹典型的語(yǔ)法。語(yǔ)法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各選項(xiàng)含義如下:
IDENTIFIED BY password:用戶口令;
DEFAULT TABLESPACE tablespace:默認(rèn)表空間;
TEMPORARY TABLESPACE tablespace:臨時(shí)表空間;
PROFILE profile|DEFAULT:用戶資源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用戶在表空間上的空間使用限額,可以指定多個(gè)表空間的限額。
舉例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;


2.修改用戶
  修改用戶的語(yǔ)法是與創(chuàng)建用戶的語(yǔ)法類似的,主要是CREATE USER 變成 ALTER USER,具體請(qǐng)參考o(jì)racle文檔。


3.刪除用戶
? 刪除用戶,是將用戶及用戶所創(chuàng)建的schema對(duì)象從數(shù)據(jù)庫(kù)刪除。如下:
SQL>DROP USER us1;
若用戶us1含有schema對(duì)象,則無(wú)上述語(yǔ)句將執(zhí)行失敗,須加入關(guān)鍵字CASCADE才能刪除,意思是連并其對(duì)象一起刪除,如下:
SQL>DROP USER us1 CASCADE;


?本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/truexf/archive/2006/09/06/1184869.aspx


ORACLE中數(shù)據(jù)字典視圖分為3大類, ? ? 用前綴區(qū)別,分別為:USER,ALL 和 DBA,許多數(shù)據(jù)字典視圖包含相似的信息。


USER_*:有關(guān)用戶所擁有的對(duì)象信息,即用戶自己創(chuàng)建的對(duì)象信息


ALL_*:有關(guān)用戶可以訪問(wèn)的對(duì)象的信息,即用戶自己創(chuàng)建的對(duì)象的信息加上其他用戶創(chuàng)建的對(duì)象但該用戶有權(quán)訪問(wèn)的信息


DBA_*:有關(guān)整個(gè)數(shù)據(jù)庫(kù)中對(duì)象的信息


(這里的*可以為TABLES, INDEXES, OBJECTS, USERS等。


1.查看所有用戶:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看用戶系統(tǒng)權(quán)限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看用戶對(duì)象權(quán)限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用戶所擁有的角色:
select * from dba_role_privs;
select * from user_role_privs;


6.查看當(dāng)前用戶的缺省表空間
select username,default_tablespace from user_users;


7.查看某個(gè)角色的具體權(quán)限,如grant connect,resource,create session,create view to TEST;查看RESOURCE具有那些權(quán)限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';


例:
限制user1用戶只允許100個(gè)并發(fā)連接
SQL> alter system set resource_limit=true;


System altered


SQL> create profile profile_user1 limit sessions_per_user 100;


Profile created


SQL> ALTER USER user1 profile profile_user1;


User altered
========

Oracle用戶、權(quán)限、角色管理



Oracle 權(quán)限設(shè)置
一、權(quán)限分類:
系統(tǒng)權(quán)限:系統(tǒng)規(guī)定用戶使用數(shù)據(jù)庫(kù)的權(quán)限。(系統(tǒng)權(quán)限是對(duì)用戶而言)。
實(shí)體權(quán)限:某種權(quán)限用戶對(duì)其它用戶的表或視圖的存取權(quán)限。(是針對(duì)表或視圖而言的)。
?
二、系統(tǒng)權(quán)限管理:
1、系統(tǒng)權(quán)限分類:
DBA: 擁有全部特權(quán),是系統(tǒng)最高權(quán)限,只有DBA才可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)。
RESOURCE:擁有Resource權(quán)限的用戶只可以創(chuàng)建實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)。
CONNECT:擁有Connect權(quán)限的用戶只可以登錄Oracle,不可以創(chuàng)建實(shí)體,不可以創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)。
對(duì)于普通用戶:授予connect, resource權(quán)限。
對(duì)于DBA管理用戶:授予connect,resource, dba權(quán)限。
?
2、系統(tǒng)權(quán)限授權(quán)命令:
[系統(tǒng)權(quán)限只能由DBA用戶授出:sys, system(最開始只能是這兩個(gè)用戶)]
授權(quán)命令:SQL> grant connect, resource, dba to 用戶名1 [,用戶名2]...;
[普通用戶通過(guò)授權(quán)可以具有與system相同的用戶權(quán)限,但永遠(yuǎn)不能達(dá)到與sys用戶相同的權(quán)限,system用戶的權(quán)限也可以被回收。]
例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;
查詢用戶擁有哪里權(quán)限:
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;
刪除用戶:SQL> drop user 用戶名 cascade; ?//加上cascade則將用戶連同其創(chuàng)建的東西全部刪除
?
3、系統(tǒng)權(quán)限傳遞:
增加WITH ADMIN OPTION選項(xiàng),則得到的權(quán)限可以傳遞。
SQL> grant connect, resorce to user50 with admin option; ?//可以傳遞所獲權(quán)限。
?
4、系統(tǒng)權(quán)限回收:系統(tǒng)權(quán)限只能由DBA用戶回收
命令:SQL> Revoke connect, resource from user50;
?
說(shuō)明:
1)如果使用WITH ADMIN OPTION為某個(gè)用戶授予系統(tǒng)權(quán)限,那么對(duì)于被這個(gè)用戶授予相同權(quán)限的所有用戶來(lái)說(shuō),取消該用戶的系統(tǒng)權(quán)限并不會(huì)級(jí)聯(lián)取消這些用戶的相同權(quán)限。
2)系統(tǒng)權(quán)限無(wú)級(jí)聯(lián),即A授予B權(quán)限,B授予C權(quán)限,如果A收回B的權(quán)限,C的權(quán)限不受影響;系統(tǒng)權(quán)限可以跨用戶回收,即A可以直接收回C用戶的權(quán)限。
?
三、實(shí)體權(quán)限管理
1、實(shí)體權(quán)限分類:select, update, insert, alter, index, delete, all ?//all包括所有權(quán)限
execute ?//執(zhí)行存儲(chǔ)過(guò)程權(quán)限
user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product;
// 此時(shí)user02查user_tables,不包括user01.product這個(gè)表,但如果查all_tables則可以查到,因?yàn)樗梢栽L問(wèn)。


2. 將表的操作權(quán)限授予全體用戶:
SQL> grant all on product to public; ?// public表示是所有的用戶,這里的all權(quán)限不包括drop。
[實(shí)體權(quán)限數(shù)據(jù)字典]:
SQL> select owner, table_name from all_tables; // 用戶可以查詢的表
SQL> select table_name from user_tables; ?// 用戶創(chuàng)建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 獲權(quán)可以存取的表(被授權(quán)的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs; ? // 授出權(quán)限的表(授出的權(quán)限)
?
3. DBA用戶可以操作全體用戶的任意基表(無(wú)需授權(quán),包括刪除):
DBA用戶:
SQL> Create table stud02.product(
?id number(10),
?name varchar2(20));
SQL> drop table stud02.emp;
SQL> create table stud02.employee
?as
?select * from scott.emp;
?
4. 實(shí)體權(quán)限傳遞(with grant option):
user01:
SQL> grant select, update on product to user02 with grant option; // user02得到權(quán)限,并可以傳遞。
?
5. 實(shí)體權(quán)限回收:
user01:
SQL>Revoke select, update on product from user02; ?//傳遞的權(quán)限將全部丟失。
?
說(shuō)明
1)如果取消某個(gè)用戶的對(duì)象權(quán)限,那么對(duì)于這個(gè)用戶使用WITH GRANT OPTION授予權(quán)限的用戶來(lái)說(shuō),同樣還會(huì)取消這些用戶的相同權(quán)限,也就是說(shuō)取消授權(quán)時(shí)級(jí)聯(lián)的。
?
?
Oracle 用戶管理
一、創(chuàng)建用戶的Profile文件
SQL> create profile student limit ?// student為資源文件名
?FAILED_LOGIN_ATTEMPTS ?3 ?//指定鎖定用戶的登錄失敗次數(shù)
?PASSWORD_LOCK_TIME 5 ?//指定用戶被鎖定天數(shù)
?PASSWORD_LIFE_TIME 30 ?//指定口令可用天數(shù)
?
二、創(chuàng)建用戶
SQL> Create User username
?Identified by password
?Default Tablespace tablespace
?Temporary Tablespace tablespace
?Profile profile
?Quota integer/unlimited on tablespace;
例:
SQL> Create user acc01
?identified by acc01 ? // 如果密碼是數(shù)字,請(qǐng)用雙引號(hào)括起來(lái)
?default tablespace account
?temporary tablespace temp
?profile default
?quota 50m on account;
SQL> grant connect, resource to acc01;
[*] 查詢用戶缺省表空間、臨時(shí)表空間
SQL> select username, default_tablespace, temporary_tablespace from dba_users;
[*] 查詢系統(tǒng)資源文件名:
SQL> select * from dba_profiles;
資源文件類似表,一旦創(chuàng)建就會(huì)保存在數(shù)據(jù)庫(kù)中。
SQL> select username, profile, default_tablespace, temporary_tablespace from dba_users;
SQL> create profile common limit
?failed_login_attempts 5
?idle_time 5;
?
SQL> Alter user acc01 profile common;
?
三、修改用戶:
SQL> Alter User 用戶名
?Identified 口令
?Default Tablespace tablespace
?Temporary Tablespace tablespace
?Profile profile
?Quota integer/unlimited on tablespace;
?
1、修改口令字:
SQL>Alter user acc01 identified by "12345";
2、修改用戶缺省表空間:
SQL> Alter user acc01 default tablespace users;
3、修改用戶臨時(shí)表空間
SQL> Alter user acc01 temporary tablespace temp_data;
4、強(qiáng)制用戶修改口令字:
SQL> Alter user acc01 password expire;
5、將用戶加鎖
SQL> Alter user acc01 account lock; ?// 加鎖
SQL> Alter user acc01 account unlock; ?// 解鎖
?
四、刪除用戶
SQL>drop user 用戶名; ?//用戶沒(méi)有建任何實(shí)體
SQL> drop user 用戶名 CASCADE; ?// 將用戶及其所建實(shí)體全部刪除
*1. 當(dāng)前正連接的用戶不得刪除。


五、監(jiān)視用戶:
1、查詢用戶會(huì)話信息:
SQL> select username, sid, serial#, machine from v$session;
2、刪除用戶會(huì)話信息:
SQL> Alter system kill session 'sid, serial#';
3、查詢用戶SQL語(yǔ)句:
SQL> select user_name, sql_text from v$open_cursor;
?
?
Oracle 角色管理
一、何為角色
  角色。角色是一組權(quán)限的集合,將角色賦給一個(gè)用戶,這個(gè)用戶就擁有了這個(gè)角色中的所有權(quán)限。


二、系統(tǒng)預(yù)定義角色
  預(yù)定義角色是在數(shù)據(jù)庫(kù)安裝后,系統(tǒng)自動(dòng)創(chuàng)建的一些常用的角色。下介簡(jiǎn)單的介紹一下這些預(yù)定角色。角色所包含的權(quán)限可以用以下語(yǔ)句查詢:
sql>select * from role_sys_privs where role='角色名';


1.CONNECT, RESOURCE, DBA
這些預(yù)定義角色主要是為了向后兼容。其主要是用于數(shù)據(jù)庫(kù)管理。oracle建議用戶自己設(shè)計(jì)數(shù)據(jù)庫(kù)管理和安全的權(quán)限規(guī)劃,而不要簡(jiǎn)單的使用這些預(yù)定角色。將來(lái)的版本中這些角色可能不會(huì)作為預(yù)定義角色。
?
2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
這些角色主要用于訪問(wèn)數(shù)據(jù)字典視圖和包。
?
3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
這兩個(gè)角色用于數(shù)據(jù)導(dǎo)入導(dǎo)出工具的使用。
?
4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。這兩個(gè)角色用于oracle高級(jí)查詢功能。
?
5. SNMPAGENT
用于oracle enterprise manager和Intelligent Agent
?
6.RECOVERY_CATALOG_OWNER
用于創(chuàng)建擁有恢復(fù)庫(kù)的用戶。關(guān)于恢復(fù)庫(kù)的信息,參考o(jì)racle文檔《Oracle9i User-Managed Backup and Recovery Guide》
?
7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.
?
三、管理角色
1.建一個(gè)角色
sql>create role role1;


2.授權(quán)給角色
sql>grant create any table,create procedure to role1;


3.授予角色給用戶
sql>grant role1 to user1;


4.查看角色所包含的權(quán)限
sql>select * from role_sys_privs;


5.創(chuàng)建帶有口令以角色(在生效帶有口令的角色時(shí)必須提供口令)
sql>create role role1 identified by password1;


6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;


7.設(shè)置當(dāng)前用戶要生效的角色
(注:角色的生效是一個(gè)什么概念呢?假設(shè)用戶a有b1,b2,b3三個(gè)角色,那么如果b1未生效,則b1所包含的權(quán)限對(duì)于a來(lái)講是不擁有的,只有角色生效了,角色內(nèi)的權(quán)限才作用于用戶,最大可生效角色數(shù)由參數(shù)MAX_ENABLED_ROLES設(shè)定;在用戶登錄后,oracle將所有直接賦給用戶的權(quán)限和用戶默認(rèn)角色中的權(quán)限賦給用戶。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用帶有口令的role1生效
sql>set role all;//使用該用戶的所有角色生效
sql>set role none;//設(shè)置所有角色失效
sql>set role all except role1;//除role1外的該用戶的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看當(dāng)前用戶的生效的角色。


8.修改指定用戶,設(shè)置其默認(rèn)角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
詳見(jiàn)oracle參考文檔


9.刪除角色
sql>drop role role1;
角色刪除后,原來(lái)?yè)碛迷摻巧挠脩艟筒辉贀碛性摻巧?#xff0c;相應(yīng)的權(quán)限也就沒(méi)有了。
?
說(shuō)明:
1)無(wú)法使用WITH GRANT OPTION為角色授予對(duì)象權(quán)限
2)可以使用WITH ADMIN OPTION 為角色授予系統(tǒng)權(quán)限,取消時(shí)不是級(jí)聯(lián)
========

Oracle用戶管理與權(quán)限分配



用戶與模式的關(guān)系


Oracle數(shù)據(jù)庫(kù)的安全保護(hù)流程可以分為3個(gè)步驟。首先,用戶向數(shù)據(jù)庫(kù)提供身份識(shí)別信息,即提供一個(gè)數(shù)據(jù)庫(kù)賬號(hào)。接下來(lái)用戶還需要證明他們所給出的身份識(shí)別信息是有效的,這是通過(guò)輸入密碼來(lái)實(shí)現(xiàn)的,用戶輸入的密碼經(jīng)過(guò)數(shù)據(jù)庫(kù)的核對(duì)確認(rèn)用戶提供的密碼是否正確。最后,假設(shè)密碼是正確的,那么數(shù)據(jù)庫(kù)認(rèn)為身份識(shí)別信息是可信賴的。此時(shí),數(shù)據(jù)庫(kù)將會(huì)在基于身份識(shí)別信息的基礎(chǔ)上確定用戶所擁有的權(quán)限,即用戶可以對(duì)數(shù)據(jù)庫(kù)執(zhí)行什么操作。因此,為了確保數(shù)據(jù)庫(kù)的安全,首要的問(wèn)題就是對(duì)用戶進(jìn)行管理。?
這里所有的用戶并不是數(shù)據(jù)庫(kù)的操作人員,而是在數(shù)據(jù)庫(kù)中定義的一個(gè)名稱,更準(zhǔn)確地說(shuō)它是賬戶,只是習(xí)慣上稱其為用戶,它是Oracle數(shù)據(jù)庫(kù)的基本訪問(wèn)控制機(jī)制,當(dāng)連接到Oracle數(shù)據(jù)庫(kù)時(shí),操作人員必須提供正確的用戶名和密碼。?
連接到數(shù)據(jù)庫(kù)的用戶所具有的權(quán)限是不同的,Oracle提供了一些特權(quán)用戶,比如,SYSDBA或SYSOPER,這類用戶主要用于執(zhí)行數(shù)據(jù)庫(kù)的維護(hù)操作,如啟動(dòng)數(shù)據(jù)庫(kù)、關(guān)閉數(shù)據(jù)庫(kù)、建立數(shù)據(jù)庫(kù),以及執(zhí)行備份和恢復(fù)等操作。SYSDBA和SYSOPER的區(qū)別在于:SYSDBA不僅具備SYSOPER的所有權(quán)限,而且還可以建立數(shù)據(jù)庫(kù),執(zhí)行不完全恢復(fù)。在Oracle 11g中,Oracle提供了默認(rèn)的特權(quán)用戶SYS,當(dāng)以特權(quán)用戶身份登錄數(shù)據(jù)庫(kù)時(shí),必須帶有AS SYSDBA或AS SYSOPER選項(xiàng)。例如;


SQL> connect system/1qaz2wsx as sysdba;
已連接。
與用戶密切關(guān)系的另一個(gè)概念是模式,模式也稱作方案(Schema)。模式或方案實(shí)際上是用戶所擁有的數(shù)據(jù)庫(kù)對(duì)象的集合。在Oracle數(shù)據(jù)庫(kù)中,對(duì)象是以用戶來(lái)組織的,用戶與模式是一一對(duì)應(yīng)的關(guān)系,并且兩者名稱相同。?
SCOTT用戶擁有的所有對(duì)象都屬于SCOTT模式,而HR用戶擁有的所有對(duì)象都屬于HR模式。?
這里寫圖片描述
兄弟連--Android培訓(xùn)! 【點(diǎn)擊進(jìn)入】
保障薪資4-6K簽就業(yè)保障協(xié)議 0學(xué)費(fèi)、0食宿、一個(gè)月免費(fèi)學(xué)
查 看


當(dāng)訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象時(shí),需要注意如下一些事項(xiàng):


在同一個(gè)模式中不能存在同名對(duì)象,但是不同模式中的對(duì)象名稱則可以相同。 用戶可以直接訪問(wèn)其它模式對(duì)象,但如果要訪問(wèn)其它模式對(duì)象,則必須具有該對(duì)象的相應(yīng)訪問(wèn)權(quán)限。例如,用戶SCOTT可以直接查看其模式中的EMP表,但如果用戶HR要查看SCOTT模式中的EMP表時(shí),則必須在EMP表上具有SELECT操作的權(quán)限。 當(dāng)用戶要訪問(wèn)其它模式對(duì)象時(shí),必須附加模式名作為前綴。
創(chuàng)建與管理用戶


Oracle為用戶賬戶提供了三種身份驗(yàn)證方法。?
密碼驗(yàn)證 當(dāng)一個(gè)使用密碼驗(yàn)證機(jī)制的用戶視圖連接到數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)會(huì)核實(shí)用戶名是否是一個(gè)有效的數(shù)據(jù)庫(kù)賬戶,并且提供與該用戶在數(shù)據(jù)庫(kù)中存儲(chǔ)的密碼相匹配的密碼。由于用戶信息和密碼都存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)部,所以使用密碼驗(yàn)證用戶也稱為數(shù)據(jù)庫(kù)驗(yàn)證用戶。?
外部驗(yàn)證外部驗(yàn)證是指當(dāng)用戶試圖連接到數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)會(huì)核實(shí)用戶名是否是一個(gè)有效的數(shù)據(jù)庫(kù)賬戶,并且確認(rèn)該用戶已經(jīng)完成了操作系統(tǒng)級(jí)別的身份驗(yàn)證。?
注意:外部驗(yàn)證用戶并不在數(shù)據(jù)庫(kù)中存儲(chǔ)一個(gè)驗(yàn)證密碼。?
全局驗(yàn)證全局驗(yàn)證是指用戶不在數(shù)據(jù)庫(kù)中存儲(chǔ)驗(yàn)證密碼,而是通過(guò)一種高級(jí)安全選項(xiàng)所提供的身份驗(yàn)證服務(wù)來(lái)進(jìn)行的。?
在上述的三種驗(yàn)證方式中,密碼驗(yàn)證是最常使用的驗(yàn)證方法。


創(chuàng)建用戶


要?jiǎng)?chuàng)建一個(gè)新的用戶,可采用CREATE USER命令。其語(yǔ)法格式如下:


create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user’]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,…]…on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]
參數(shù)說(shuō)明如下:


user_name:用戶名,一般為字母數(shù)字型和“#”及“_”符號(hào)。 pass_word:用戶口令,一般為字母數(shù)字型和“#”及“_”符號(hào)。 identified exeternally:表示用戶名在操作系統(tǒng)下驗(yàn)證,這種情況下要求該用戶必須與操作系統(tǒng)中所定義的用戶名相同。 identified globally as ‘CN=user’:表示用戶名由Oracle安全域中心服務(wù)器驗(yàn)證,CN名字表使用戶的外部名。 [default tablespace tablespace_default]:表示該用戶在創(chuàng)建數(shù)據(jù)對(duì)象時(shí)使用的默認(rèn)表空間 [temporary tablespace tablespace_temp]:表示該用戶所使用的臨時(shí)表空間。 [quota [integer K[M]] [unlimited]] on?
tablespace_specify1:表示該用戶在指定表空間中允許占用的最大空間。 [profiles profile_name]:資源文件的名稱。 [account lock or account unlock]:用戶是否被加鎖,默認(rèn)情況下是不加鎖的。?
(1)創(chuàng)建用戶,并指定默認(rèn)表空間和臨時(shí)表空間。
----創(chuàng)建一個(gè)mr用戶,口令為mrsoft,并設(shè)置默認(rèn)的表空間為users,臨時(shí)表空間為temp的用戶
SQL> create user mr identified by mrsoft
? 2 ?default tablespace users
? 3 ?temporary tablespace temp;
(2)創(chuàng)建用戶,并配置其在指定表空間上的磁盤限額。有時(shí),為了避免用戶在創(chuàng)建表和索引對(duì)象時(shí)占用過(guò)多的空間,可以配置用戶在表空間上的磁盤限額。在創(chuàng)建用戶時(shí),可通過(guò)QUOTA xxxM ON tablespace_ specify子句配置指定表空間的最大可用限額,下面來(lái)看一個(gè)例子。


----創(chuàng)建一個(gè)用戶east,口令為mrsoft,默認(rèn)表空間為users,臨時(shí)表空間為temp的用戶,并指定該用戶在tbsp_1表空間上最多可使用的大小為10m
SQL> create user east identified by mrsoft
? 2 ?default tablespace users
? 3 ?temporary tablespace temp
? 4 ?quota 10m on tbsp_1;
說(shuō)明:如果要禁止用戶使用某個(gè)表空間,則可以通過(guò)quota關(guān)鍵字設(shè)置該表空間的使用限額為0。?
(3)創(chuàng)建用戶,并配置其在指定表空間上不受限制,如果要設(shè)置用戶在指定表空間上不受限制,可以使用QUOTA UNLIMITED ON tablespace_ specify子句。


----創(chuàng)建一個(gè)用戶名為df,口令為mrsoft,臨時(shí)表空間為temp,默認(rèn)表空間為tbsp_1,并且該用戶使用tbsp_1表空間不受限制
SQL> create user df identified by mrsoft
? 2 ?default tablespace tbsp_1
? 3 ?temporary tablespace temp
? 4 ?quota unlimited on tbsp_1;
在創(chuàng)建完用戶之后,需要注意以下幾點(diǎn):?
- 如果建立用戶時(shí)不指定DEFAULT TABLESPACE子句,Oracle會(huì)將SYSTEM表空間作為用戶默認(rèn)表空間。?
- 如果建立用戶時(shí)不能指定TEMPORARY TABLESPACE子句,Oracle會(huì)將數(shù)據(jù)庫(kù)默認(rèn)臨時(shí)表空間作為用戶的臨時(shí)表空間。?
- 初始建立的用戶沒(méi)有任何權(quán)限,所以為了是用戶可以連接到數(shù)據(jù)庫(kù),必須授權(quán)其CREATE SESSION權(quán)限
- 如果建立用戶時(shí)沒(méi)有為表空間指定QUOTA子句,那么用戶在特定表空間上的配額為0,用戶將不能在相應(yīng)的表空間上建立數(shù)據(jù)對(duì)象。?
- 初始建立的用戶沒(méi)有任何權(quán)限,不能執(zhí)行任何數(shù)據(jù)庫(kù)操作。


修改用戶


用戶創(chuàng)建完后,管理員可以對(duì)用戶進(jìn)行修改,包括修改用戶口令,改變用戶默認(rèn)表空間、臨時(shí)表空間、磁盤配額及資源限制等。修改用戶的語(yǔ)法與創(chuàng)建的用戶的語(yǔ)法基本相似,只是把創(chuàng)建用戶語(yǔ)法中的“CREATE”關(guān)鍵字替換成“ALTER”罷了。?
修改用戶的磁盤限額?
如果DBA在創(chuàng)建用戶時(shí),指定了用戶在某個(gè)表空間的磁盤限額,那么經(jīng)過(guò)一段時(shí)間,該用戶使用該表空間已經(jīng)達(dá)到了DBA所設(shè)置的磁盤限額時(shí),Oracle系統(tǒng)就會(huì)顯示如圖13-2所示的錯(cuò)誤提示。?
這里寫圖片描述
表示該用戶使用的資源已經(jīng)超出了限額,DBA需要為該用戶適當(dāng)增加資源。


?----修改用戶east在表空間上的磁盤限額為20m(原始為10m,先增加10m)。
SQL> alter user east quota 20m on tbsp_1;
修改用戶的口令?
用戶的口令在使用一段時(shí)間之后,根據(jù)系統(tǒng)安全的需要或在PROFILE文件中(資源配置文件)設(shè)置的規(guī)定,用戶必須要修改口令。


----修改用戶east的新口令為123456(原始為mrsoft)。
SQL> alter user east identified by 123456;
解鎖被鎖住的用戶?
Oracle默認(rèn)安裝完成后,為了安全起見(jiàn),很多用戶處于LOCKED狀態(tài),DBA可以對(duì)LOCKED狀態(tài)的用戶解除鎖定。


----使用alter user命令解除被鎖定的賬戶SH。
SQL> alter user SH account unlock;
刪除用戶


刪除用戶通過(guò)DROP USER語(yǔ)句完成的,刪除用戶后,Oracle會(huì)從數(shù)據(jù)字典中刪除用戶、方案及其所有對(duì)象方案,語(yǔ)法如下:


drop user user_name[cascade]
參數(shù)說(shuō)明如下:


user_name:要?jiǎng)h除的用戶名。 cascade:級(jí)聯(lián)刪除選項(xiàng),如果用戶包含數(shù)據(jù)庫(kù)對(duì)象,則必須加?
CASCADE選項(xiàng),此時(shí)連同該用戶所擁有的對(duì)象一起刪除。
----使用drop user語(yǔ)句刪除用戶df,并連同該用戶所擁有的對(duì)象一起刪除。
SQL> drop user df cascade;
用戶權(quán)限管理


權(quán)限簡(jiǎn)介


根據(jù)系統(tǒng)管理方式的不同,在Oracle數(shù)據(jù)庫(kù)中將權(quán)限分為兩大類:系統(tǒng)權(quán)限和對(duì)象向權(quán)限。?
系統(tǒng)權(quán)限是在系統(tǒng)級(jí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取和使用的機(jī)制,比如,用戶是否能夠連接到數(shù)據(jù)庫(kù)系統(tǒng)(SESSION權(quán)限),執(zhí)行系統(tǒng)級(jí)的DDL語(yǔ)句(如CREAT、ALTER、和DROP)等。?
對(duì)象權(quán)限是指某一個(gè)用戶對(duì)其他用戶的表、視圖、序列、存儲(chǔ)過(guò)程、函數(shù)、包等的操作權(quán)限。不同類型的對(duì)象具有不同的對(duì)象權(quán)限,對(duì)于某些模式對(duì)象,比如簇、索引、觸發(fā)器、數(shù)據(jù)庫(kù)鏈接等沒(méi)有相應(yīng)的實(shí)體權(quán)限,這些權(quán)限由系統(tǒng)權(quán)限進(jìn)行管理。


授權(quán)操作


在Oracle 11g中含有200多種系統(tǒng)特權(quán),并且所有這些系統(tǒng)特權(quán)均被列舉在SYSTEM_PRIVILEGE_MAP數(shù)據(jù)目錄視圖中。授權(quán)操作使用GRANT命令,其語(yǔ)法格式如下:


grant sys_privi | role to user | role | public [with admin option]
參數(shù)說(shuō)明如下:


sys_privi:表示Oracle系統(tǒng)權(quán)限,系統(tǒng)權(quán)限是一組約定的保留字。比如,若能夠創(chuàng)建表,則為“CREATE TABLE”。 role:角色,關(guān)于角色會(huì)在后面小節(jié)中介紹。 user:具體的用戶名,或者是一些列的用戶名。 public:保留字,代表Oracle系統(tǒng)的所有用戶。 with admin option:表示被授權(quán)者可以再將權(quán)限授予另外的用戶。?
—-為用戶east授予連接和開發(fā)系統(tǒng)權(quán)限,并嘗試使用east連接數(shù)據(jù)庫(kù)。
SQL> connect system/1qaz2wsx
已連接。
SQL> grant connect,resource to east;
授權(quán)成功。?
SQL> connect east/123456;
已連接。
在上面的代碼中,使用east連接數(shù)據(jù)庫(kù)后,Oracle顯示“已連接”,這說(shuō)明給east授予“connect”的權(quán)限是成功的。另外,如果想要east將這兩個(gè)權(quán)限可以傳遞給其他的用戶,則需要在grant語(yǔ)句中使用“with admin option”關(guān)鍵字。


?----在創(chuàng)建用戶dongfang和xifang后,首先system將創(chuàng)建session和創(chuàng)建-table的權(quán)限授權(quán)給dongfang,然后dongfang再將這兩個(gè)權(quán)限傳遞給xifang,最后通過(guò)xifang這個(gè)用戶創(chuàng)建一個(gè)數(shù)據(jù)表
SQL> create user dongfang identified by mrsoft
? 2 ?default tablespace users
? 3 ?quota 10m on users;
?用戶已創(chuàng)建。
?SQL> create user xifang identified by mrsoft
? 2 ?default tablespace users
? 3 ?quota 10m on users;
?用戶已創(chuàng)建。
?SQL> grant create session,create table to dongfang with admin option;
?授權(quán)成功。
?SQL> connect dongfang/mrsoft;
已連接。
SQL> grant create session,create table to xifang;
?授權(quán)成功。
?SQL> connect xifang/mrsoft;
已連接。
SQL> create table tb_xifang
? 2 ?( id number,
? 3 ? ?name varchar2(20)
? 4 ?);
?表已創(chuàng)建。
回收系統(tǒng)權(quán)限


一般用戶若被授予過(guò)高的權(quán)限就可能給Oracle系統(tǒng)帶來(lái)安全隱患。作為Oracle系統(tǒng)的管理員,應(yīng)該能夠查詢當(dāng)前Oracle系統(tǒng)各個(gè)用戶的權(quán)限,并且能夠使用REVOKE命令撤銷用戶的某些不要的系統(tǒng)權(quán)限,REVOKE命令的語(yǔ)法格式如下:


revoke sys_privi | role from user | role | public
參數(shù)說(shuō)明如下:


sys_privi:系統(tǒng)權(quán)限或角色; role:角色; user:具體的用戶名; public:保留字,代表Oracle系統(tǒng)所有的用戶;
—- 撤銷east用戶的resource系統(tǒng)權(quán)限,代碼及運(yùn)行結(jié)果如下。


SQL> connect system/1qaz2wsx;
已連接。
SQL> revoke resource from east;
撤銷成功。
如果數(shù)據(jù)庫(kù)管理員用GRANT命令給用戶A授予系統(tǒng)權(quán)限是帶有WITH ADMIN OPTION選項(xiàng),則該用戶A有權(quán)將系統(tǒng)權(quán)限再次授予另外的用戶B。在這種情況下,如果數(shù)據(jù)庫(kù)管理員使用REVOKE命令撤銷A用戶的系統(tǒng)權(quán)限,則用戶B的系統(tǒng)權(quán)限仍然有效。?
首先撤銷用戶dongfang的create table權(quán)限,然后嘗試是否還可以通過(guò)用戶xifang創(chuàng)建數(shù)據(jù)表(注:是dongfang將create table權(quán)限傳遞給xifang),代碼及運(yùn)行結(jié)果如下。


SQL> revoke create table from dongfang;
撤銷成功。
SQL> connect xifang/mrsoft;
已連接。
SQL> create table tb_xifang_2
? 2 ?( id number,
? 3 ? name varchar2(10)
? 4 ?);
表已創(chuàng)建。
對(duì)象授權(quán)


與將系統(tǒng)權(quán)限授予用戶基本相同,授予對(duì)象權(quán)限給用戶或角色也使用GRANT命令,其語(yǔ)法格式如下:


Grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]
參數(shù)說(shuō)明如下:


obj_privi:表示對(duì)象的權(quán)限,可以是ALTER、EXECUTE、SELECT、UPDATE和INSERT等; role:角色名; user:被授權(quán)的用戶名; with admin option:表示被授權(quán)者可再將系統(tǒng)權(quán)限授予其他的用戶; with hierarchy option:在對(duì)象的子對(duì)象(在視圖上再建立視圖)上授權(quán)給用戶。
----給用戶xifang授予select、insert、delete和update表soctt.emp的權(quán)限。
SQL> grant select,insert,delete,update on scott.emp to xifang;
授權(quán)成功。
回收對(duì)象權(quán)限


要從用戶或角色中撤銷對(duì)象權(quán)限,仍然要使用REVOKE命令,其語(yǔ)法格式如下:


revoke obj_privi | all on schema.object from user | role | public cascade constraints
參數(shù)說(shuō)明如下:


obj_privi:表示對(duì)象的權(quán)限。 public:保留字,代表Oracle系統(tǒng)的所有權(quán)限。 cascade ascade constraints:表示有關(guān)聯(lián)關(guān)系的權(quán)限也被撤銷。
----從xifang用戶撤銷scott.emp表的update和delete權(quán)限。
SQL> connect system/1qaz2wsx;
已連接。
SQL> revoke delete,update on scott.emp from xifang;
撤銷成功。
說(shuō)明:如果數(shù)據(jù)庫(kù)管理員GRANT命令給用戶A授予對(duì)象權(quán)限時(shí)帶有WITH ADMIN OPTION選項(xiàng),則該用戶A有權(quán)將權(quán)限再次授予另外的用戶B。在這種情況下,如果數(shù)據(jù)庫(kù)管理員用REVOKE命令撤銷A用戶的對(duì)象權(quán)限時(shí),用戶B的對(duì)象權(quán)限也被撤銷。由此可見(jiàn),在進(jìn)行系統(tǒng)權(quán)限回收和進(jìn)行對(duì)象權(quán)限回收時(shí),效果是不同的。


查詢用戶與權(quán)限


用戶被授予的系統(tǒng)權(quán)限或?qū)ο髾?quán)限都被記錄在Oracle的數(shù)據(jù)字典里,了解某個(gè)用戶被授予哪些系統(tǒng)權(quán)限和對(duì)象權(quán)限是確保應(yīng)用系統(tǒng)安全的重要工作。表是Oracle 11g用于存放用戶、系統(tǒng)權(quán)限、對(duì)象權(quán)限有關(guān)的數(shù)據(jù)字典。


這里寫圖片描述
40-50女性如何留住月經(jīng)! 【點(diǎn)擊進(jìn)入】
月經(jīng)量少,月經(jīng)不調(diào),月經(jīng)推遲,如何調(diào)理月經(jīng)? 全國(guó)免費(fèi)咨詢熱線:400-600-8218
查 看


角色管理


角色簡(jiǎn)介


角色是一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)實(shí)體,它包括一組權(quán)限。也就是說(shuō),角色是包括一個(gè)或者多個(gè)權(quán)限的集合,它并不被哪個(gè)用戶所擁有。角色可以被授予任何用戶,也可以從用戶中將角色收回。?
使用角色可以簡(jiǎn)化權(quán)限的管理,可以僅用一條語(yǔ)句就能從用戶那里授予或回收權(quán)限,而不必對(duì)用戶一一授權(quán)。使用角色還可以實(shí)現(xiàn)權(quán)限的動(dòng)態(tài)管理,比如,隨著應(yīng)用的變化可以增加或者減少角色的權(quán)限,這樣通過(guò)改變角色的權(quán)限,就實(shí)現(xiàn)了改變多個(gè)用戶的權(quán)限。?
角色、用戶及權(quán)限是一組關(guān)系密切的對(duì)象,既然角色是一組權(quán)限的集合,那么,它只有被授予某個(gè)用戶才能有意義,可以用如圖所示的圖形來(lái)幫助我們理解角色、用戶及權(quán)限的關(guān)系。?
這里寫圖片描述
各行業(yè)真賬實(shí)操,15天免費(fèi)試學(xué) 【點(diǎn)擊進(jìn)入】
20多個(gè)行業(yè)真賬實(shí)操,105位老會(huì)計(jì)線上輔導(dǎo), 做賬報(bào)稅30天包學(xué)精通!首選會(huì)計(jì)學(xué)堂!
查 看
vcfJq8qxssXE3Mq508NPUkFDTEXPtc2z18rUtKGjIDxicj4KICAgIMHtzeKjrNTatLS9qL3HyavKsaOsv8nS1M6qvcfJq8no1sPTptPDsLLIq9DUoaO9x8mrtcSwssir0NTNqLn9zqq9x8mryejWw7/awe69+NDQsaO7pKOssdjQ68zhuanV/ci3tcS/2sHussXUytDt0N64xLvyyejWw73HyauhozwvcD4KCgoKPGgyIGlkPQ=="預(yù)定義角色">預(yù)定義角色


所謂系統(tǒng)預(yù)定義角色是指在數(shù)據(jù)庫(kù)安裝完成后由系統(tǒng)自動(dòng)創(chuàng)建的一些常用角色,這些角色已經(jīng)由系統(tǒng)授予了相應(yīng)的系統(tǒng)權(quán)限,可以由數(shù)據(jù)庫(kù)管理員直接使用。一旦將這些角色授予用戶以后,用戶便具有了角色中所包含的系統(tǒng)權(quán)限。下面列出的這幾個(gè)系統(tǒng)預(yù)定義角色是最常被用到的。


CONNECT; RESOURCE; DBA; EXP_FULL_DATABASE;
IMP_FULL_DATABASE。


角色CONNECT,RESOURCE及DBA主要用于數(shù)據(jù)庫(kù)管理,這3個(gè)角色之間相互沒(méi)有包含關(guān)系(有些系統(tǒng)權(quán)限可能有重疊)。數(shù)據(jù)庫(kù)管理員需要分別授予CONNECT,RESOURCE和DBA角色。對(duì)于一般的數(shù)據(jù)庫(kù)開發(fā)人員,則需要授予CONNECT,RESOURCE角色。?
角色I(xiàn)MP_FULL_DATABASE和EXP_FULL_DATABASE分別用于操作數(shù)據(jù)庫(kù)的導(dǎo)入或?qū)С龉ぞ?#xff0c;如,操作數(shù)據(jù)庫(kù)工具EXPDP,IMPDP,或者系統(tǒng)的EXP,IMP。在使用這些工具進(jìn)行整個(gè)數(shù)據(jù)庫(kù)的到導(dǎo)出與導(dǎo)入工作時(shí),需要具備這兩個(gè)角色。


這里寫圖片描述
別去算命了,生肖決定你的財(cái)富! 【點(diǎn)擊進(jìn)入】
你的生肖決定了你這輩子是窮苦命, 還是富貴命!生肖本命佛改變你的運(yùn)勢(shì)!
查 看


不同版本的Oracle預(yù)定義的角色不一樣多,但都可以從DBA_ROLES數(shù)據(jù)字典中查詢到,下面通過(guò)該數(shù)據(jù)字典來(lái)看一下Oracle 11g的預(yù)定義系統(tǒng)角色有哪些。


----使用select語(yǔ)句查詢dba_roles數(shù)據(jù)字典中的角色信息。
SQL> set pagesize 50;
SQL> select * from dba_roles;
?這里寫圖片描述


創(chuàng)建角色與授權(quán)


如果系統(tǒng)預(yù)定義的角色不符合用戶需要,那么,數(shù)據(jù)庫(kù)管理員可以創(chuàng)建更多的角色,創(chuàng)建用戶自定義角色可以使用CREATE ROLE語(yǔ)句來(lái)實(shí)現(xiàn),其語(yǔ)法格式如下:


create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]
參數(shù)說(shuō)明如下:


role_name:角色名; identified by password:角色口令; identified by exeternally:表示角色名在操作系統(tǒng)下驗(yàn)證; identified globally:表示用戶是Oracle安全域中心服務(wù)器來(lái)驗(yàn)證,此角色由全局用戶來(lái)使用。
----創(chuàng)建一個(gè)名為designer的角色,該角色的口令為123456。
SQL> connect system/1qaz2wsx;
已連接。
SQL> create role designer identified by 123456;
一旦角色創(chuàng)建完成,就可以對(duì)角色進(jìn)行授權(quán),給角色授權(quán)也是使用GRANT…TO語(yǔ)句來(lái)實(shí)現(xiàn)的。如果系統(tǒng)管理員具有GRANT_ANY_PRVILEGE權(quán)限,就可以對(duì)某個(gè)角色進(jìn)行授權(quán)。比如,授權(quán)CREATE SESSION,CREATE SYNONYM,CREATE VIEW等。


----給designer角色授予create view和create table權(quán)限。
SQL> grant create view,create table to designer;
在角色獲得了權(quán)限之后,就可以把這個(gè)有使用價(jià)值的角色授予給某個(gè)用戶了。把角色授予給某個(gè)用戶仍然使用GRANT…TO語(yǔ)句來(lái)實(shí)現(xiàn)。


?----把designer角色授權(quán)給用戶dongfang,代碼及運(yùn)行結(jié)果如下。
SQL> grant designer to dongfang;
管理角色


在學(xué)習(xí)過(guò)管理用戶(包括創(chuàng)建、修改、刪除等操作)之后,再學(xué)習(xí)如何管理角色就相對(duì)簡(jiǎn)單多了,因?yàn)檫@二者之間有很多相似之處,這里僅通過(guò)一些簡(jiǎn)單實(shí)例來(lái)對(duì)角色的管理進(jìn)行說(shuō)明。?
查看角色所包含的權(quán)限?
查看角色權(quán)限通常使用ROLE_SYS_PRIVS數(shù)據(jù)字典,來(lái)看下面的例子。


----查詢角色designer被屬于的權(quán)限有哪些。
SQL> select * from role_sys_privs where role = 'DESIGNER';
?這里寫圖片描述


修改角色密碼?
修改角色密碼包括取消角色密碼和修改角色密碼兩種情況,可以使用ALTER ROLE語(yǔ)句來(lái)實(shí)現(xiàn)。


?----首先取消designer角色的密碼,然后再重新給該角色設(shè)置一個(gè)密碼。
SQL> alter role designer not identified;
角色已丟棄。
SQL> alter role designer identified by mrsoft;
角色已丟棄。
設(shè)置當(dāng)前用戶要生效的角色?
角色的生效是一個(gè)什么概念呢?假設(shè)用戶a有b1,b2,b3三個(gè)角色,那么,如果b1未生效,則b1所包含的權(quán)限對(duì)于a來(lái)講是不擁有的,只有角色生效了,角色內(nèi)的權(quán)限才作用于用戶,最大可生效角色數(shù)由參數(shù)MAX_ENABLED_ROLES設(shè)定;用戶登錄后,Oracle將所有直接賦值給用戶的權(quán)限和用戶默認(rèn)角色中的權(quán)限賦給用戶。設(shè)置角色生效可使用SET ROLE語(yǔ)句。?
創(chuàng)建一個(gè)無(wú)需密碼驗(yàn)證的角色queryer,然后設(shè)置該角色生效,接下來(lái)再設(shè)置帶有密碼的角色designer也生效。


SQL> create role queryer;
角色已創(chuàng)建。
SQL> set role queryer;
角色集
SQL> set role designer identified by mrsoft;
角色集
說(shuō)明:如果要設(shè)置帶有密碼的角色生效,則必須在SET ROLE語(yǔ)句后面使用“IDENTIFIED BY”關(guān)鍵字指定角色的密碼。?
刪除角色?
刪除角色很簡(jiǎn)單,使用DROP ROLE語(yǔ)句即可實(shí)現(xiàn),來(lái)看下面的例子。


----使用drop role語(yǔ)句刪除角色queryer。
SQL> drop role queryer;
角色已刪除。
刪除角色后,原來(lái)?yè)碛性摻巧挠脩魧⒉辉贀碛性摻巧?#xff0c;相應(yīng)的權(quán)限也將失去。


角色與權(quán)限查詢


創(chuàng)建角色和用戶以后,給角色和用戶授予的權(quán)限被記錄在Oracle數(shù)據(jù)字典里,作為Oracle數(shù)據(jù)庫(kù)管理員,需要了解角色被授予了哪些權(quán)限及用戶被授予了哪些權(quán)限和角色,從而對(duì)這個(gè)數(shù)據(jù)庫(kù)的所有用戶進(jìn)行全面的管理,如表所示是Oracle 11g用于存放用戶、角色及權(quán)限的相關(guān)數(shù)據(jù)字典。


這里寫圖片描述


----查詢HR用戶被授予的系統(tǒng)角色。
SQL> select granted_role,default_role from dba_role_privs
? 2 ?where grantee = 'HR';
?這里寫圖片描述


在某個(gè)模式下,如果用戶要確定當(dāng)前會(huì)話中的所有有效角色,可以通過(guò)SESSION_ROLE數(shù)據(jù)字典來(lái)查詢。


----在scott模式下,查詢當(dāng)前用戶的所有有效角色。
SQL> connect scott/1qaz2wsx;
已連接。
SQL> select * from session_roles;
?這里寫圖片描述


資源配置PROFILE


PROFILE簡(jiǎn)介


PROFILE作為用戶配置文件,它是密碼限制、資源限制的命名集合。PROFILE文件作為Oracle安全策略的重要組成部分,利用它可以對(duì)數(shù)據(jù)庫(kù)用戶進(jìn)行基本的資源限制,并且可以對(duì)用戶的密碼進(jìn)行管理。
在安裝數(shù)據(jù)庫(kù)時(shí),Oracle會(huì)自動(dòng)建立名為DEFAULT的默認(rèn)配置文件。如果沒(méi)有為新創(chuàng)建的用戶指定DEFAULT文件,Oracle將自動(dòng)為它指定DEFAULT配置文件。初始的DEFAULT文件沒(méi)有進(jìn)行任何密碼和資源限制。使用PROFILE文件時(shí)需要注意如下事項(xiàng)。


建立用戶時(shí),如果不指定PROFILE選項(xiàng),Oracle會(huì)自動(dòng)將DEFAULT分配給相應(yīng)的數(shù)據(jù)庫(kù)用戶。 建立PROFILE文件時(shí),如果只設(shè)置了部分密碼和資源限制選項(xiàng),其他選項(xiàng)會(huì)自動(dòng)使用默認(rèn)值,即使DEFAULT文件中有相應(yīng)選項(xiàng)的值。 使用PROFILE管理密碼時(shí),密碼管理選項(xiàng)總是處于被激活狀態(tài),但是如果使用PROFILE管理資源,必須要激活資源限制。 一個(gè)用戶只能分配一個(gè)PROFILE文件。如果要同時(shí)管理用戶的密碼和資源,那么在建立PROFILE時(shí)應(yīng)該同時(shí)指定密碼和資源選項(xiàng)。
使用PROFILE管理密碼


當(dāng)操作人員要連接到Oracle數(shù)據(jù)庫(kù)時(shí),需要提供用戶名和密碼。對(duì)于黑客或某些人而言,他們可能通過(guò)猜測(cè)或反復(fù)實(shí)驗(yàn)來(lái)破解密碼。為了加強(qiáng)密碼的安全性,可以使用PROFILE文件管理密碼。PROFILE文件提供了一些密碼管理選項(xiàng),他們提供了強(qiáng)大的密碼管理功能,從而確保密碼的安全。為 了實(shí)現(xiàn)密碼限制,必須首先建立PROFILE文件。建立PROFILE文件是使用CREATE PROFILE語(yǔ)句完成的, 一般情況下,該語(yǔ)句是由DBA執(zhí)行的,如果要以其他用戶身份建立PROFILE文件,則要求該用戶必須具有CREATE PROFILE系統(tǒng)權(quán)限。?
使用PROFILE文件可以實(shí)現(xiàn)如下四種密碼管理:賬戶鎖定、密碼的過(guò)期時(shí)間、密碼歷史和密碼的復(fù)雜度。?
1.賬戶鎖定?
賬戶的鎖定策略是指用戶在連續(xù)輸入多少次錯(cuò)誤密碼后,Oracle會(huì)自動(dòng)鎖定用戶的賬戶,并且可以規(guī)定賬戶的鎖定時(shí)間。Oracle為鎖定賬戶提供了以下兩個(gè)參數(shù)。


FAILED_LOGIN_ATEMPTS 該參數(shù)限制用戶在登錄到Oracle數(shù)據(jù)庫(kù)時(shí)允許失敗的次數(shù)。一旦某個(gè)用戶嘗試登陸數(shù)據(jù)庫(kù)的次數(shù)達(dá)到該值,則系統(tǒng)將該用戶賬戶鎖定。 PASSWORD_LOCK_TIME 該參數(shù)用于指定賬戶被鎖定的天數(shù)。
---- 創(chuàng)建的profile文件,要求設(shè)置連續(xù)失敗次數(shù)為5,超過(guò)該次數(shù)后,賬戶將被鎖定7天,然后使用alter user語(yǔ)句將profile文件(即lock_account)分配給用戶dongfang。


SQL> create profile lock_account limit
? 2 ?failed_login_attempts 5
? 3 ?password_lock_time 7;


配置文件已創(chuàng)建


SQL> alter user dongfang profile lock_account;


用戶已更改。
在建立lock_account文件并將該文件分配給用戶dongfang后,如果以用戶dongfang身份連接到數(shù)據(jù)庫(kù),并且連續(xù)連接失敗5次后,Oracle將自動(dòng)鎖定該用戶賬戶。此時(shí),即使為用戶dongfang提供了正確的密碼,也無(wú)法連接到數(shù)據(jù)庫(kù)。?
在建立lock_account文件時(shí),由于指定password_lock_time的參數(shù)為7,所以賬戶鎖定天數(shù)達(dá)到7天后,Oracle會(huì)自動(dòng)解鎖賬戶。?
說(shuō)明:如果建立PROFILE文件時(shí)沒(méi)有提供該參數(shù),將自動(dòng)使用默認(rèn)值UNLIMITED,這種情況下,需要DBA手動(dòng)解鎖用戶賬戶。


2.密碼的過(guò)期時(shí)間?
密碼的過(guò)期時(shí)間是指強(qiáng)制用戶定期修改自己的密碼,當(dāng)密碼過(guò)期后,Oracle會(huì)隨時(shí)提醒用戶修改密碼。密碼寬限期是指密碼到期之后的寬限使用時(shí)間。默認(rèn)情況下,建立用戶并為其提供密碼之后,密碼會(huì)一直生效。為了防止其他人員破解用戶賬戶的密碼,可以強(qiáng)制普通用戶定期改變密碼。為了將強(qiáng)制用戶定期修改密碼,Oracle提供了如下參數(shù)。


PASSWORD_LIFE_TIME 該參數(shù)用于設(shè)置用戶密碼的有效時(shí)間,單位為天數(shù)。超過(guò)這一段時(shí)間,用戶必須重新設(shè)置口令。 PASSWORD_GRACE_TIME 該參數(shù)用于設(shè)置口令失效的“寬限時(shí)間”。如果口令到達(dá)PASSWORD_LIFE_TIME設(shè)置的失效時(shí)間,設(shè)置寬限時(shí)間后,用戶仍然可以繼續(xù)使用一段時(shí)間。
----下面創(chuàng)建一個(gè)profile文件(即password_lift_time),并設(shè)置用戶的密碼有效期為30天,密碼寬限期為3天,然后使用alter user語(yǔ)句將profile文件(即password_lift_time)分配給用戶dongfang。
SQL> create profile password_lift_time limit
? 2 ?password_life_time 30
? 3 ?password_grace_time 3;


配置文件已創(chuàng)建


SQL> alter user dongfang profile password_lift_time;


用戶已更改。
?這里寫圖片描述


若果用戶在30天內(nèi)沒(méi)有修改密碼,那么在第31天、第32天、第33天連接時(shí),仍然會(huì)顯示類似的警告信息。如果在33天內(nèi)仍然沒(méi)有修改密碼,那么當(dāng)?shù)?4天連接時(shí),Oracle會(huì)強(qiáng)制用戶修改密碼,否則不允許連接到數(shù)據(jù)庫(kù)。?
3.密碼歷史?
密碼歷史是用于控制賬戶密碼的可重復(fù)使用次數(shù)或可重用時(shí)間。使用密碼歷史參數(shù)后,Oracle會(huì)將密碼修改信息存放到數(shù)據(jù)字典中。這樣,當(dāng)修改密碼時(shí),Oracle會(huì)對(duì)新、舊密碼進(jìn)行比較,以確保用戶不會(huì)重用過(guò)去已經(jīng)用過(guò)的密碼。關(guān)于密碼歷史有如下兩個(gè)參數(shù)。


PASSWORD_REUSE_TIME 該參數(shù)指定密碼可重用的時(shí)間,單位為天。


PASSWORD_REUSE_MAX 該參數(shù)設(shè)置口令在能夠被重新使用之前,必須改變的次數(shù)。?
說(shuō)明:在使用密碼歷史選項(xiàng)時(shí),只能使用其中的一個(gè)參數(shù),并將另一個(gè)參數(shù)設(shè)置為UNLIMITED。?
4.密碼復(fù)雜度?
在PROFILE文件中,可以通過(guò)指定的函數(shù)來(lái)強(qiáng)制用戶的密碼必須具有一定的復(fù)雜度。例如,強(qiáng)制用戶的密碼不能與用戶名相同。使用校驗(yàn)函數(shù)驗(yàn)證用戶密碼的復(fù)雜度時(shí),只需要將這個(gè)函數(shù)的名稱指定給PROFILE文件中的PASSWORD_VERIFY_FUNCTION參數(shù),Oracle就會(huì)自動(dòng)使用該函數(shù)對(duì)用戶的密碼和格式進(jìn)行驗(yàn)證。?
在Oracle 11g中,驗(yàn)證密碼復(fù)雜度功能有新的改進(jìn)。在$ORACLE_HOME/rdbms/admin目錄下創(chuàng)建了一個(gè)新的密碼驗(yàn)證文件UTLPWDMG.SQL,其中不僅提供了先前的驗(yàn)證函數(shù)VERIFY_FUNCTION,還提供了一個(gè)新建的VERIFY_FUNCTION_11G函數(shù)。


使用PROFILE管理資源


在大而復(fù)雜的多用戶數(shù)據(jù)庫(kù)環(huán)境中,因?yàn)橛脩舯姸?#xff0c;所以系統(tǒng)資源可能會(huì)成為影響性能的主要瓶頸,為了有效地利用系統(tǒng)資源,應(yīng)該根據(jù)用戶所承擔(dān)任務(wù)的不同為其分配合理資源。PROFILE不僅可用于管理用戶密碼,還可以用于管理用戶資源。需要注意,如果是使用PROFILE管理資源,必須將RESOURCE_LIMIT參數(shù)設(shè)置為TRUE,以激活資源限制。由于該參數(shù)是動(dòng)態(tài)參數(shù),所以可以使用ALTER SYSTEM語(yǔ)句進(jìn)行修改。


----首先使用show命令查看RESOURCE_LIMIT參數(shù)的值,然后使用alter system命令修改該參數(shù)的值為true,從而激活資源限制。
SQL> show parameter resource_limit;
NAME ? ? ? ? ? ? ? ?TYPE ? ? ? ? ? ?VALUE
-------------------- ? ? ? ?----------- ? ? ? ? ------
resource_limit ? ? ? ? ?boolean ? ? ? ? FALSE
SQL> alter system set resource_limit=true;
系統(tǒng)已更改。
利用PROFILE配置文件,可以對(duì)以下系統(tǒng)資源進(jìn)行限制:


CPU時(shí)間:為了防止無(wú)休止地使用CPU時(shí)間,限制用戶每次調(diào)用是使用的CPU時(shí)間以及在一次會(huì)話期間所使用的CPU時(shí)間。 邏輯讀:為了防止過(guò)多使用系統(tǒng)的I/O操作,限制每次調(diào)用即會(huì)話時(shí)讀取的邏輯數(shù)據(jù)塊數(shù)目。 用戶的并發(fā)會(huì)話數(shù)。 會(huì)話空閑的限制:當(dāng)一個(gè)會(huì)話空閑的時(shí)間達(dá)到了限制值時(shí),當(dāng)前事務(wù)被回滾,會(huì)話被終止并且所占用的資源被釋放。 會(huì)話可持續(xù)的時(shí)間:如果一個(gè)會(huì)話的總計(jì)連接時(shí)間達(dá)到了該限制值,當(dāng)前事務(wù)被回滾,會(huì)話被終止并釋放所占用的資源。 會(huì)話所使用的SGA空間限制。
當(dāng)一個(gè)會(huì)話或SQL語(yǔ)句占用的資源超過(guò)PROFILE文件中的限制時(shí),Oracle將終止并回退當(dāng)前的事務(wù),然后向用戶返回錯(cuò)誤的信息,如果受到的限制是會(huì)話級(jí)的,在提交或回退事務(wù)后,用戶會(huì)話將被終止;而受到調(diào)用級(jí)限制時(shí),用戶會(huì)話還能夠繼續(xù)進(jìn)行,只是當(dāng)前執(zhí)行的SQL語(yǔ)句將被終止。下面是PROFILE文件中對(duì)各種資源限制的參數(shù)。


SESSION_PER_USER:用戶可以同時(shí)連接的會(huì)話數(shù)量。如果用戶的連接數(shù)達(dá)到該限制,則試圖登錄時(shí)將產(chǎn)生一條錯(cuò)誤信息。 CPU_PER_SESSION:限制用戶再一次數(shù)據(jù)庫(kù)會(huì)話期間可以使用的CPU時(shí)間,單位為百分之一秒。當(dāng)達(dá)到該時(shí)間值后,系統(tǒng)就會(huì)終止該會(huì)話。如果用戶還需要執(zhí)行操作,則必須重建立連接。 CUP_PER_CALL:該參數(shù)用戶限制每條SQL語(yǔ)句所能使用的CPU時(shí)間,參數(shù)值是一個(gè)整數(shù),單位百分之一秒。 LOGICAL_READS_PER_SESSION:限制每個(gè)會(huì)話所能讀取的數(shù)據(jù)塊數(shù)量,包括從內(nèi)存中讀取的數(shù)據(jù)塊和從磁盤中讀取的數(shù)據(jù)塊。 CONNECT_TIME:限制每個(gè)用戶連接到數(shù)據(jù)庫(kù)的最長(zhǎng)時(shí)間,單位分鐘,當(dāng)連接時(shí)間超出該設(shè)置時(shí),該鏈接終止。 IDLE_TIME:該參數(shù)限制每個(gè)用戶會(huì)話連接到數(shù)據(jù)庫(kù)的最長(zhǎng)時(shí)間。超過(guò)該空閑時(shí)間的會(huì)話,系統(tǒng)會(huì)終止該會(huì)話。
維護(hù)PROFILE文件


在Oracle中,PROFILE文件也是一種數(shù)據(jù)資源。DBA也可以使用相應(yīng)的語(yǔ)句對(duì)其進(jìn)行管理,包括修改配置文件、刪除配置文件按、激活或禁用配置文件。?
1.修改PROFILE文件?
在創(chuàng)建PROFILE文件之后,還可以使用ALTER PROFILE語(yǔ)句修改其中的資源參數(shù)和密碼參數(shù),來(lái)看下面的例子。


----對(duì)password_lift_time文件(即PROFILE文件)的資源限制參數(shù)進(jìn)行修改。
SQL> alter profile password_lift_time limit
? 2 ?cpu_per_session 20000
? 3 ?sessions_per_user 10
? 4 ?cpu_per_call 500
? 5 ?password_life_time 180
? 6 ?failed_login_attempts 10;
配置文件已更改
說(shuō)明:對(duì)配置文件所做的修改只有在用戶開始新的會(huì)話時(shí)才會(huì)生效


2.刪除PROFILE文件?
使用DROP PROFILE語(yǔ)句可以刪除PROFILE文件。如果要?jiǎng)h除的配置文件已經(jīng)被指定給了用戶,則必須在DROP PROFILE語(yǔ)句中使用CASCADE關(guān)鍵字,來(lái)看下面的例子。


----刪除被分配給dongfang這個(gè)用戶的password_lift_time配置文件。
SQL> drop profile password_lift_time cascade;
配置文件已刪除。
說(shuō)明:如果為用戶指定的配置文件被刪除,則Oracle將自動(dòng)為用戶重新指定DEFAULT配置文件


顯示PROFILE信息


在PROFILE文件被創(chuàng)建后,其信息被存儲(chǔ)在數(shù)據(jù)字典中。通過(guò)查詢這些數(shù)據(jù)字典,可以了解PROFILE文件的信息。?
1.顯示用戶的資源配置信息?
建立或修改用戶時(shí),可以為用戶分配PROFILE文件,如果沒(méi)有為用戶分配PROFILE文件,Oracle會(huì)自動(dòng)將DEFAULT分配給用戶。通過(guò)查詢數(shù)據(jù)字典視圖DBA_USERS,可以顯示用戶使用的PROFILE文件,下面來(lái)看一個(gè)例子。


----顯示用戶的DONGFANG所使用的PROFILE文件。
SQL> select profile from dba_users where username='DONGFANG';
PROFILE
------------------------
LOCK_ACCOUNT
2.顯示指定PROFILE文件的資源配置信息?
建立或修改PROFILE文件時(shí),Oracle將會(huì)PROFILE參數(shù)存放在數(shù)據(jù)字典中。通過(guò)查詢DBA_PROFILES,可以顯示PROFILE的密碼限制、資源限制信息,下面來(lái)看一個(gè)例子。


----顯示RESOURCE_LIMIT文件的密碼和資源限制信息。
SQL> column limit for a20
SQL> select resource_name,resource_type,limit
? 2 ?from dba_profiles
3 ?where profile = 'LOCK_ACCOUNT';
========

總結(jié)

以上是生活随笔為你收集整理的Oracle用户管理学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。