使用Oracle的PROFILE對(duì)用戶資源限制和密碼限制的研究與探索_第1頁
使用Oracle的PROFILE對(duì)用戶資源限制和密碼限制的研究與探索_第2頁
使用Oracle的PROFILE對(duì)用戶資源限制和密碼限制的研究與探索_第3頁
使用Oracle的PROFILE對(duì)用戶資源限制和密碼限制的研究與探索_第4頁
使用Oracle的PROFILE對(duì)用戶資源限制和密碼限制的研究與探索_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、使用Oracle的PROFILE對(duì)用戶資源限制和密碼限制的研究與探索1.用戶創(chuàng)建語句 PROFILE選項(xiàng)“引發(fā)的血案”如果大家細(xì)心的話,在創(chuàng)建用戶的語法中有這么一個(gè)選項(xiàng)“PROFILE profile”。下面是 Oracle 11gR2官方文檔中關(guān)于創(chuàng)建用戶的語法描述(較之 10g的文檔可讀性加強(qiáng)了,當(dāng)然功能也同樣有所增加):CREATE USER userIDENTIFIED  BY password      EXTERNALLY  AS 'c

2、ertificate_DN' AS 'kerberos_principal_name'       GLOBALLY  AS ' directory_DN '  DEFAULT TABLESPACE tablespaceTEMPORARY TABLESPACE tablespace tablespace_group_name  

3、QUOTA  size_clause UNLIMITED  ON tablespace .PROFILE profilePASSWORD EXPIREACCOUNT  LOCK UNLOCK  DEFAULT TABLESPACE tablespaceTEMPORARY TABLESPACE tablespace tablespace_group_name  QUOTA 

4、60;size_clause UNLIMITED  ON tablespace .PROFILE profilePASSWORD EXPIREACCOUNT  LOCK UNLOCK ENABLE EDITIONS. 2.提問:PROFILE選項(xiàng)是做什么用的呢?回答:簡要的說,PROFILE在Oracle數(shù)據(jù)庫對(duì) 數(shù)據(jù)庫用戶能夠使用的資源做進(jìn)一步的限制的一種手段,如對(duì)連接到某個(gè)用戶的session或 sql所能使用的CPU資源進(jìn)行控制,又如控制Oracle用戶的密碼

5、 管理策略等等3.查看系統(tǒng)的默認(rèn)PROFILE1)通過dba_profiles視圖查看一下系統(tǒng)中默認(rèn)都有哪些PROFILE數(shù)據(jù)庫創(chuàng)建以后,系統(tǒng)中只會(huì)存在一個(gè)名為DEFAULT的默認(rèn)PROFILE,在用戶創(chuàng)建之后,如果不做特殊指定,每個(gè)用戶的PROFILE都會(huì)默認(rèn)的使用個(gè)默認(rèn)的PROFILE。sysora10g> select distinct profile from dba_profiles;PROFILE-DEFAULT2)全面查看一下這個(gè)PROFILE都包含哪些限制定義sysora10g> select *

6、 from dba_profiles;PROFILE    RESOURCE_NAME                    RESOURCE LIMIT- - - -DEFAULT    COMPOSITE_LIMIT   &#

7、160;              KERNEL   UNLIMITEDDEFAULT    SESSIONS_PER_USER                KERNEL   UNLIMITEDDE

8、FAULT    CPU_PER_SESSION                  KERNEL   UNLIMITEDDEFAULT    CPU_PER_CALL            

9、         KERNEL   UNLIMITEDDEFAULT    LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITEDDEFAULT    LOGICAL_READS_PER_CALL    

10、;       KERNEL   UNLIMITEDDEFAULT    IDLE_TIME                        KERNEL   UNLIMITEDDEFAULT

11、    CONNECT_TIME                     KERNEL   UNLIMITEDDEFAULT    PRIVATE_SGA          

12、60;           KERNEL   UNLIMITEDDEFAULT    FAILED_LOGIN_ATTEMPTS            PASSWORD 10DEFAULT    PASSWORD_LIFE_TIME 

13、60;             PASSWORD UNLIMITEDDEFAULT    PASSWORD_REUSE_TIME              PASSWORD UNLIMITEDDEFAULT    PASSWORD

14、_REUSE_MAX               PASSWORD UNLIMITEDDEFAULT    PASSWORD_VERIFY_FUNCTION         PASSWORD NULLDEFAULT    PASSWORD_LOCK_TIME&

15、#160;              PASSWORD UNLIMITEDDEFAULT    PASSWORD_GRACE_TIME              PASSWORD UNLIMITED16 rows selected.3)結(jié)論

16、通過上面的查看,可以得到這個(gè)系統(tǒng)默認(rèn)的PROFILE “DEFAULT”的配置信息只對(duì)密碼的錯(cuò)誤嘗試次數(shù)做了限制(最多可以錯(cuò)誤輸錯(cuò)10次密碼),如果我們啟用了PROFILE(下面有介紹如何啟用和停止PROFILE),默認(rèn)的限制只有這些。如果想要改變限制條件,有兩種方法:第一種方法是可以對(duì)這個(gè)默認(rèn)的PROFILE做個(gè)性化的調(diào)整;第二種方法是再重新定制一個(gè)新的PROFILE滿足新的需求。4.對(duì)創(chuàng)建PROFILE的標(biāo)準(zhǔn)語法做一下“解剖麻雀”(更多細(xì)節(jié)可以參考Oracle的官方文檔)1)創(chuàng)建PROFILE的語法如下:CREATE PROFILE profile  

17、; LIMIT resource_parameters 對(duì)資源的限制         | password_parameters 對(duì)密碼的限制.;2)對(duì)數(shù)據(jù)庫資源做限制時(shí),下面是全部可用的參數(shù): SESSIONS_PER_USER 每個(gè)用戶名所允許的并行會(huì)話數(shù)  | CPU_PER_SESSION   一個(gè)會(huì)話一共可以使用的CPU時(shí)間,單位是百分之一秒  | CPU_PER_CALL      一次SQL調(diào)用(解析、執(zhí)行和獲取

18、)允許使用的CPU時(shí)間  | CONNECT_TIME      限制會(huì)話連接時(shí)間,單位是分鐘  | IDLE_TIME         允許空閑會(huì)話的時(shí)間,單位是分鐘  | LOGICAL_READS_PER_SESSION 限制會(huì)話對(duì)數(shù)據(jù)塊的讀取,單位是塊  | LOGICAL_READS_PER_CALL    限制SQL調(diào)用對(duì)數(shù)據(jù)塊的讀取,單位是塊  | COMPOSITE_LI

19、MIT   “組合打法” integer | UNLIMITED | DEFAULT | PRIVATE_SGA   限制會(huì)話在SGA中Shared Pool中私有空間的分配 size_clause | UNLIMITED | DEFAULT 3)對(duì)密碼做限制時(shí),下面是全部可用的參數(shù): FAILED_LOGIN_ATTEMPTS 帳戶被鎖定之前可以錯(cuò)誤嘗試的次數(shù)  | PASSWORD_LIFE_TIME  

20、;  密碼可以被使用的天數(shù),單位是天,默認(rèn)值180天  | PASSWORD_REUSE_TIME   密碼可重用的間隔時(shí)間(結(jié)合PASSWORD_REUSE_MAX)  | PASSWORD_REUSE_MAX    密碼的最大改變次數(shù)(結(jié)合PASSWORD_REUSE_TIME)  | PASSWORD_LOCK_TIME    超過錯(cuò)誤嘗試次數(shù)后,用戶被鎖定的天數(shù),默認(rèn)1天  | PASSWORD_GRACE_TIME   當(dāng)密碼過期之后還

21、有多少天可以使用原密碼 expr | UNLIMITED | DEFAULT | PASSWORD_VERIFY_FUNCTION function | NULL | DEFAULT 5.OK,語法已經(jīng)了然于胸,那么我們來實(shí)際創(chuàng)建一個(gè)PROFILE(這里的名字我們稱其為:sec_profile),在感性認(rèn)識(shí)的同時(shí)一同探索一下在這個(gè)過程中會(huì)遇到的一些有趣現(xiàn)象。1)嘗試創(chuàng)建一個(gè)混合型的PROFILE(包含 資源限制和密碼限制)sysora10g> CRE

22、ATE PROFILE sec_profile LIMIT2     SESSIONS_PER_USER          UNLIMITED3     CPU_PER_SESSION            UNLIMITED4  

23、;   CPU_PER_CALL               60005     CONNECT_TIME               606     LOGICAL_R

24、EADS_PER_SESSION  DEFAULT7     LOGICAL_READS_PER_CALL     60008     COMPOSITE_LIMIT            60000009     PRIVATE_SGA  

25、;              66K10     FAILED_LOGIN_ATTEMPTS      611     PASSWORD_LIFE_TIME         6012  &#

26、160;  PASSWORD_REUSE_TIME        6013     PASSWORD_REUSE_MAX         514     PASSWORD_LOCK_TIME         1/2415

27、     PASSWORD_GRACE_TIME        1016     PASSWORD_VERIFY_FUNCTION   verify_function17  /CREATE PROFILE sec_profile LIMIT*ERROR at line 1:ORA-07443: fu

28、nction VERIFY_FUNCTION not found2)報(bào)錯(cuò)原因?yàn)槭裁磿?huì)報(bào)錯(cuò)?錯(cuò)誤提示很清楚,VERIFY_FUNCTION這個(gè)函數(shù)不存在。既然知道不存在,那我們?nèi)绾蝿?chuàng)建它呢?回答:VERIFY_FUNCTION函數(shù)是通過utlpwdmg.sql腳本創(chuàng)建的,該腳本所在的目錄是$ORACLE_HOME/rdbms/admin/3)創(chuàng)建密碼復(fù)雜性檢驗(yàn)函數(shù)VERIFY_FUNCTION我們使用utlpwdmg.sql腳本創(chuàng)建以下這個(gè)VERIFY_FUNCTION密碼復(fù)雜度校驗(yàn)函數(shù)sysora10g> ?/rdbms/admin/utlpwdm

29、g.sqlFunction created.Profile altered.4)utlpwdmg.sql腳本中的小秘密細(xì)心的您在執(zhí)行utlpwdmg.sql腳本的過程中一定發(fā)現(xiàn)了有一個(gè)“Profile altered”的提示,難道這個(gè)腳本修改了某個(gè)PROFILE信息么?正如您所料,它修改了系統(tǒng)的默認(rèn)PROFILE “DEFAULT”,再次查看一下現(xiàn)在的DEFAULT的定義信息:sysora10g> select * from dba_profiles;PROFILE    RESOURCE

30、_NAME                    RESOURCE LIMIT- - - -DEFAULT    COMPOSITE_LIMIT              

31、0;   KERNEL   UNLIMITEDDEFAULT    SESSIONS_PER_USER                KERNEL   UNLIMITEDDEFAULT    CPU_PER_SESSION    

32、              KERNEL   UNLIMITEDDEFAULT    CPU_PER_CALL                     KERNEL &#

33、160; UNLIMITEDDEFAULT    LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITEDDEFAULT    LOGICAL_READS_PER_CALL           KERNEL   U

34、NLIMITEDDEFAULT    IDLE_TIME                        KERNEL   UNLIMITEDDEFAULT    CONNECT_TIME     &#

35、160;               KERNEL   UNLIMITEDDEFAULT    PRIVATE_SGA                      

36、;KERNEL   UNLIMITEDDEFAULT    FAILED_LOGIN_ATTEMPTS            PASSWORD 3DEFAULT    PASSWORD_LIFE_TIME             

37、  PASSWORD 60DEFAULT    PASSWORD_REUSE_TIME              PASSWORD 1800DEFAULT    PASSWORD_REUSE_MAX            

38、;   PASSWORD UNLIMITEDDEFAULT    PASSWORD_VERIFY_FUNCTION         PASSWORD VERIFY_FUNCTIONDEFAULT    PASSWORD_LOCK_TIME            

39、;   PASSWORD .0006DEFAULT    PASSWORD_GRACE_TIME              PASSWORD 1016 rows selected.與系統(tǒng)創(chuàng)建時(shí)的DEFAULT PROFILE相比較,之前只有10次密碼輸入錯(cuò)誤的限制,執(zhí)行完成這個(gè)函數(shù)創(chuàng)建之后,我們發(fā)現(xiàn)系統(tǒng)默認(rèn)的PROFILE已經(jīng)對(duì)系統(tǒng)有了一個(gè)非常嚴(yán)格

40、的約束。也就是說現(xiàn)在系統(tǒng)上的每一個(gè)用戶在默認(rèn)情況下都多了這些密碼方面的限制。5)驗(yàn)證一下新默認(rèn)的PROFILE “DEFAULT”關(guān)于錯(cuò)誤密碼輸入次數(shù)的限制我們模擬一下錯(cuò)誤輸錯(cuò)密碼三次后的效果,可以看到,在第四次輸入后,sec用戶被鎖定了。sysora10g> conn sec/aERROR:ORA-01017: invalid username/password; logon deniedWarning: You are no longer connected to&

41、#160;ORACLE.sysora10g> conn sec/aERROR:ORA-01017: invalid username/password; logon deniedsysora10g> conn sec/aERROR:ORA-01017: invalid username/password; logon deniedsysora10g> conn sec/aERROR:ORA-28000: the acc

42、ount is locked6)使用dba_users視圖比較一下用戶的前后狀態(tài)用戶sec已經(jīng)因錯(cuò)誤密碼輸入次數(shù)超過3此導(dǎo)致用戶被鎖定了,進(jìn)一步比較一下用戶的狀態(tài)。sysora10g> col USERNAME for a10sysora10g> col ACCOUNT_STATUS for a20sysora10g> col PROFILE for a10sysora10g> select USERNAME,A

43、CCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE from dba_users where username = 'SEC'USERNAME   ACCOUNT_STATUS       LOCK_DATE           EXPIRY_DATE- - - 

44、-SEC        OPENsysora10g> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE from dba_users where username = 'SEC'USERNAME   ACCOUNT_STATUS       LOCK_DATE&

45、#160;          EXPIRY_DATE- - - -SEC        LOCKED(TIMED)        2009-10-11 16:05:03 2009-12-09 08:46:367)既然默認(rèn)的PROFILE發(fā)生了變化,那么就會(huì)面臨一個(gè)實(shí)際問題,如何恢

46、復(fù)成原始狀態(tài)呢?這里給出一個(gè)比較簡單的方法,就是使用ALTER PROFILE命令修改成原來的模樣sysora10g> ALTER PROFILE DEFAULT LIMIT2   COMPOSITE_LIMIT             UNLIMITED3   SESSIONS_PER_USER     

47、60;     UNLIMITED4   CPU_PER_SESSION             UNLIMITED5   CPU_PER_CALL                UNLIMITED6

48、   LOGICAL_READS_PER_SESSION   UNLIMITED7   LOGICAL_READS_PER_CALL      UNLIMITED8   IDLE_TIME                   UN

49、LIMITED9   CONNECT_TIME                UNLIMITED10   PRIVATE_SGA                 UNLIMITED11  &

50、#160;FAILED_LOGIN_ATTEMPTS       1012   PASSWORD_LIFE_TIME          UNLIMITED13   PASSWORD_REUSE_TIME         UNLIMITED14   P

51、ASSWORD_REUSE_MAX          UNLIMITED15   PASSWORD_VERIFY_FUNCTION    NULL16   PASSWORD_LOCK_TIME          UNLIMITED17   PASSWORD_GRACE_

52、TIME         UNLIMITED18  /Profile altered.8)最后我們重新創(chuàng)建一下這個(gè)實(shí)驗(yàn)PROFILE:sec_profile,可以預(yù)測,這次一定會(huì)成功滴sysora10g> CREATE PROFILE sec_profile LIMIT2     SESSIONS_PER_USER     

53、0;    UNLIMITED3     CPU_PER_SESSION            UNLIMITED4     CPU_PER_CALL               60005

54、     CONNECT_TIME               606     LOGICAL_READS_PER_SESSION  DEFAULT7     LOGICAL_READS_PER_CALL     60008

55、60;    COMPOSITE_LIMIT            60000009     PRIVATE_SGA                66K10     FAILED

56、_LOGIN_ATTEMPTS      611     PASSWORD_LIFE_TIME         6012     PASSWORD_REUSE_TIME        6013     PASSWORD_

57、REUSE_MAX         514     PASSWORD_LOCK_TIME         1/2415     PASSWORD_GRACE_TIME        1016    &

58、#160;PASSWORD_VERIFY_FUNCTION   verify_function17  /Profile created.創(chuàng)建成功鳥在這個(gè) 實(shí)驗(yàn)中,我們使用了PROFILE幾乎所有的參數(shù),惟一沒有包含的參數(shù)是IDLE_TIME,目的僅僅是為了說明一個(gè)細(xì)節(jié):如果該P(yáng)ROFILE被授權(quán)給用戶后,這個(gè)被省略的IDLE_TIME參數(shù)將繼承默認(rèn)PROFILE “DEFALT”中的定義。對(duì)上面我們創(chuàng)建的PROFILE逐行做一下詮釋,以便加深理解:第 2行:對(duì)用戶的并發(fā)連接會(huì)話數(shù)不做限制第 3行:對(duì)于連接到用戶的每一個(gè)session的

59、CPU時(shí)間的使用不做限制第 4行:一次調(diào)用消耗的CPU時(shí)間不能超過60秒(不超過一分鐘)第 5行:連接到用戶的每次會(huì)話時(shí)間不能超過60分鐘(不超過一個(gè)小時(shí))第 6行:一次會(huì)話使用的物理讀與邏輯讀數(shù)據(jù)塊總量與DEFAULT profile中定義保持一致第 7行:一次調(diào)用使用的物理讀與邏輯讀數(shù)據(jù)塊總量不超過6000個(gè)數(shù)據(jù)塊第 8行:一次會(huì)話總的資源消耗不超過6000000個(gè)服務(wù)單元(service units)第 9行:一次會(huì)話在SGA中不能分配超過66K的空間第10行:帳戶被鎖定之前允許6次的錯(cuò)誤嘗試第11行:超過此生命周期后密碼作廢第12行:密碼重用時(shí)間60天第13行:密碼重用之前密碼需要完成

60、5次改變第14行:超過錯(cuò)誤嘗試次數(shù)后,用戶將被鎖定1小時(shí)第15行:當(dāng)密碼過期之后原密碼還可以使用10天第16行:使用密碼復(fù)雜度校驗(yàn)函數(shù)verify_function對(duì)密碼做檢查再單獨(dú)深入解釋一下第12行和13行組合搭配之后的含義:也就是說只有完成了5次的密碼修改后并且已經(jīng)超過60天后,之前的密碼才能夠再一次被使用。9)通過dba_profiles視圖再一次查看一下此時(shí)系統(tǒng)中存在的PROFILE的信息sysora10g> col PROFILE for a12sysora10g> col RESOURCE_NAME 

61、;for a25sysora10g> col LIMIT for a15sysora10g> select * from dba_profiles order by 1,2;PROFILE      RESOURCE_NAME             RESOURCE 

62、;LIMIT- - - -DEFAULT      COMPOSITE_LIMIT           KERNEL   UNLIMITEDDEFAULT      CONNECT_TIME          

63、    KERNEL   UNLIMITEDDEFAULT      CPU_PER_CALL              KERNEL   UNLIMITEDDEFAULT      CPU_PER_SESSION  &

64、#160;        KERNEL   UNLIMITEDDEFAULT      FAILED_LOGIN_ATTEMPTS     PASSWORD 3DEFAULT      IDLE_TIME         

65、;        KERNEL   UNLIMITEDDEFAULT      LOGICAL_READS_PER_CALL    KERNEL   UNLIMITEDDEFAULT      LOGICAL_READS_PER_SESSION KERNEL  

66、0;UNLIMITEDDEFAULT      PASSWORD_GRACE_TIME       PASSWORD 10DEFAULT      PASSWORD_LIFE_TIME        PASSWORD 60DEFAULT      P

67、ASSWORD_LOCK_TIME        PASSWORD .0006DEFAULT      PASSWORD_REUSE_MAX        PASSWORD UNLIMITEDDEFAULT      PASSWORD_REUSE_TIME   

68、0;   PASSWORD 1800DEFAULT      PASSWORD_VERIFY_FUNCTION  PASSWORD VERIFY_FUNCTIONDEFAULT      PRIVATE_SGA               KERNEL

69、0;  UNLIMITEDDEFAULT      SESSIONS_PER_USER         KERNEL   UNLIMITEDSEC_PROFILE  COMPOSITE_LIMIT           KERNEL   50

70、00000SEC_PROFILE  CONNECT_TIME              KERNEL   45SEC_PROFILE  CPU_PER_CALL              KERNEL   3000SEC

71、_PROFILE  CPU_PER_SESSION           KERNEL   UNLIMITEDSEC_PROFILE  FAILED_LOGIN_ATTEMPTS     PASSWORD 5SEC_PROFILE  IDLE_TIME       

72、60;         KERNEL   DEFAULTSEC_PROFILE  LOGICAL_READS_PER_CALL    KERNEL   1000SEC_PROFILE  LOGICAL_READS_PER_SESSION KERNEL   DEFAULTSEC_PROFILE  PASSWOR

73、D_GRACE_TIME       PASSWORD 10SEC_PROFILE  PASSWORD_LIFE_TIME        PASSWORD 60SEC_PROFILE  PASSWORD_LOCK_TIME        PASSWORD .0416SEC_PROFILE 

74、 PASSWORD_REUSE_MAX        PASSWORD 5SEC_PROFILE  PASSWORD_REUSE_TIME       PASSWORD 60SEC_PROFILE  PASSWORD_VERIFY_FUNCTION  PASSWORD VERIFY_FUNCTIONSEC_PROFILE  PR

75、IVATE_SGA               KERNEL   15360SEC_PROFILE  SESSIONS_PER_USER         KERNEL   UNLIMITED32 rows selected.10)刪除PROFILE既然有創(chuàng)建,

76、就一定對(duì)應(yīng)著刪除,刪除方法很簡單,語法如下:DROP PROFILE profile  CASCADE  如果創(chuàng)建的PROFILE已經(jīng)授權(quán)給了具體的用戶,則需要使用CASCADE選項(xiàng)級(jí)聯(lián)的收回相應(yīng)的限制信息,在收回這些限制信息之后將會(huì)以系統(tǒng)默認(rèn)的PROFILE對(duì)該用戶進(jìn)行限制。刪除示例如下:sysora10g> drop profile SEC_PROFILE cascade;Profile dropped.如果該P(yáng)ROFILE已經(jīng)授權(quán)給具體的用戶,使用不帶有cascade選項(xiàng)的

77、刪除命令將得到如下的報(bào)錯(cuò)信息:sysora10g> drop profile SEC_PROFILE;drop profile SEC_PROFILE*ERROR at line 1:ORA-02382: profile SEC_PROFILE has users assigned, cannot drop without CASCADE6.關(guān)于PROFILE內(nèi)容何時(shí)生效的一點(diǎn)注意事項(xiàng)這里討論需要談到一個(gè)系統(tǒng)參數(shù),它就是

78、resource_limit。如果要開啟“資源限制”的話,這個(gè)參數(shù)必須是“TRUE”的狀態(tài)sysora10g> show parameter resource_limitNAME            TYPE                 VALUE- -&#

79、160;-resource_limit  boolean              FALSE這里有一個(gè)小細(xì)節(jié)不得不提:之所以稱這個(gè)參數(shù)為resource_limit(資源限制)而沒有稱作“profile_limit”,是因?yàn)檫@個(gè)參數(shù)只對(duì)PROFILE中的資源限制部分起作用,如果是默認(rèn)的FALSE狀態(tài),表示PROFILE定義中的資源限制條件不起作用,只有該參數(shù)為TRUE時(shí),資源限制的定義才生效。不過,關(guān)于PROFILE中密碼限制的條件則

80、與這個(gè)參數(shù)無關(guān),無論這個(gè)參數(shù)設(shè)置為什么值,有關(guān)密碼限制的條件都會(huì)默認(rèn)生效,從這個(gè)細(xì)節(jié)上可以看出來Oracle對(duì)用戶密碼的重視程度。因此關(guān)于PROFILE的生效情況結(jié)論是:1)用戶所有擁有的PROFILE中有關(guān)密碼的限制永遠(yuǎn)生效,不受限制。2)用戶所有擁有的PROFILE中有關(guān)資源的限制與resource_limit參數(shù)的設(shè)置有關(guān),當(dāng)為TRUE時(shí)生效,當(dāng)為FALSE時(shí)(默認(rèn)值是FALSE)無效。7.一切都OK了,最后我們來演示一下將新創(chuàng)建的PROFILE sec_profile指定給具體用戶sec的操作sysora10g> alter user sec

81、0;profile sec_profile;User altered.sysora10g> select USERNAME,PROFILE from dba_users where USERNAME = 'SEC'USERNAME   PROFILE- -SEC        SEC_PROFILE8.【附】密碼驗(yàn)證函數(shù)VERIFY_FUNCTION的創(chuàng)建

82、腳本內(nèi)容utlpwdmg.sql,供參考。ora10gsecDB /home/oracle$ cat $ORACLE_HOME/rdbms/admin/utlpwdmg.sqlRemRem $Header: utlpwdmg.sql 31-aug-2000.11:00:47 nireland Exp $RemRem utlpwdmg.sqlRemRem  Copyright (c) Oracle Corporation 1996,

83、60;2000. All Rights Reserved.RemRem    NAMERem      utlpwdmg.sql - script. for Default Password Resource LimitsRemRem    DESCRIPTIONRem      This 

84、;is a script. for enabling the password management featuresRem      by setting the default password resource limits.RemRem    NOTESRem      This 

85、file contains a function for minimum checking of passwordRem      complexity. This is more of a sample function that the customerRem      can use

86、 to develop the function for actual complexity checks that theRem      customer wants to make on the new password.RemRem    MODIFIED   (MM/DD/YY)Rem&#

87、160;   nireland    08/31/00 - Improve check for username=password. #1390553Rem    nireland    06/28/00 - Fix null old password test. #1341892Rem  

88、0; asurpur     04/17/97 - Fix for bug479763Rem    asurpur     12/12/96 - Changing the name of password_verify_functionRem    asurpur    

89、; 05/30/96 - New script. for default password managementRem    asurpur     05/30/96 - CreatedRem- This script. sets the default password resource parameters- Th

90、is script. needs to be run to enable the password features.- However the default resource parameters can be changed based- on the need.- A default password complexity

91、0;function is also provided.- This function makes the minimum complexity checks like- the minimum length of the password, password not same as the- username, etc. The use

92、r may enhance this function according to- the need.- This function must be created in SYS schema.- connect sys/<password> as sysdba before running the scriptCREATE OR

93、60;REPLACE FUNCTION verify_function(username varchar2,password varchar2,old_password varchar2)RETURN boolean ISn boolean;m integer;differ integer;isdigit boolean;ischar  boolean;ispunct boolean;digitarray varchar2(20);punctar

94、ray varchar2(25);chararray varchar2(52);BEGINdigitarray:= '0123456789'chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'punctarray:='!"#$%&()*+,-/:;<=>?_'- Check if the password is same as&#

95、160;the usernameIF NLS_LOWER(password) = NLS_LOWER(username) THENraise_application_error(-20001, 'Password same as or similar to user');END IF;- Check for the minimum length of the passwo

96、rdIF length(password) < 4 THENraise_application_error(-20002, 'Password length less than 4');END IF;- Check if the password is too simple. A dictionary of words may be- 

97、maintained and a check may be made so as not to allow the words- that are too simple for the password.IF NLS_LOWER(password) IN ('welcome', 'database', 'ac

98、count', 'user', 'password', 'oracle', 'computer', 'abcd') THENraise_application_error(-20002, 'Password too simple');END IF;- Check if the password contains at lea

99、st one letter, one digit and one- punctuation mark.- 1. Check for the digitisdigit:=FALSE;m := length(password);FOR i IN 1.10 LOOPFOR j IN 1.m LOOPIF substr(password,j,1) =

100、60;substr(digitarray,i,1) THENisdigit:=TRUE;GOTO findchar;END IF;END LOOP;END LOOP;IF isdigit = FALSE THENraise_application_error(-20003, 'Password should contain at least one digit, one character and&

101、#160;one punctuation');END IF;- 2. Check for the character<<findchar>>ischar:=FALSE;FOR i IN 1.length(chararray) LOOPFOR j IN 1.m LOOPIF substr(password,j,1) = substr(chararray,i,1) THENisc

102、har:=TRUE;GOTO findpunct;END IF;END LOOP;END LOOP;IF ischar = FALSE THENraise_application_error(-20003, 'Password should contain at least one digit, one character and one punctuation');END IF;- 3. Check for the punctuation<<findp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論