熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle11gR1中大小寫敏感的密碼

2013-11-13 15:36:37  來源: Oracle 

  密碼大小寫敏感是Oracle g數據庫默認的一個新特性數據庫配置助手(DBCA)在創建數據庫期間允許你將這個設置返回到g以前的功能

  

  SEC_CASE_SENSITIVE_LOGON初始化參數控制密碼大小寫是否敏感如果現有應用程序與g的認證過程沖突你可以使用ALTER SYSTEM命令將這一功能關閉 

         SQL> SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON
  NAME TYPE VALUE
    
  sec_case_sensitive_logon boolean TRUE
  SQL>
  SQL> ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
  System altered
  SQL>

  下面的代碼說明了密碼大小寫敏感的功能首先將SEC_CASE_SENSITIVE_LOGON初始化參數設置為TRUE然後創建一個新用戶其密碼包含大小寫字母 

         CONN / AS SYSDBA
  ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE;
  CREATE USER test IDENTIFIED BY Test;
  GRANT CONNECT TO test;

  使用新創建的用戶正確的連接字符和大小寫錯誤的密碼進行連接嘗試會看到大小寫敏感功能起作用了  

         SQL> CONN test/Test
  Connected
  SQL> CONN test/test
  ERROR:
  ORA: invalid username/password; logon denied
  Warning: You are no longer connected to ORACLE
  SQL>

  將SEC_CASE_SENSITIVE_LOGON初始化參數設置為FALSE後就不區分密碼大小寫了 

         CONN / AS SYSDBA
  ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
  SQL> CONN test/Test
  Connected
  SQL> CONN test/test
  Connected
  SQL>

  需要記住的是即使大小寫敏感密碼參數沒有啟用在保存密碼時也是區分了大小寫的以便以後在啟用大小寫敏感參數時有效下面的代碼先禁用了大小寫敏感密碼然後創建了一個包含大小寫字符密碼的用戶  

         CONN / AS SYSDBA
  ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
  CREATE USER test IDENTIFIED BY Test;
  GRANT CONNECT TO test;

  正如你預料之中的那樣登陸時不用考慮密碼的大小寫

  如果我們啟用了大小寫敏感參數認證過程就會立即啟用大小寫驗證 

         CONN / AS SYSDBA
  ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = TRUE;
  SQL> CONN test/Test
  Connected
  SQL> CONN test/test
  ERROR:
  ORA: invalid username/password; logon denied
  Warning: You are no longer connected to ORACLE
  SQL>

  DBA_USERS視圖包括了一列PASSWORD_VERSIONS它表示密碼是由哪個數據庫版本創建的或最後修改的

         SQL> SELECT username password_versions FROM dba_users;
  USERNAME PASSWORD
   
  TEST G
  SPATIAL_WFS_ADMIN_USR G
  SPATIAL_CSW_ADMIN_USR G
  APEX_PUBLIC_USER G
  
  
  
  SYSTEM G
  SYS 

  MGMT_VIEW G
  OUTLN G
   rows selected
  SQL>

  用戶如果是從Oracle g導入的那麼PASSWORD_VERSIONS的值就是G維護區分大小寫的密碼不依賴於SEC_CASE_SENSITIVE_LOGON參數設置假設SEC_CASE_SENSITIVE_LOGON參數被設置為TRUE密碼立即變為大小寫敏感

  orapwd工具的ignorecase參數允許你控制在密碼文件中的密碼是否大小寫敏感它的默認值是n即默認大小寫敏感如果特權用戶(SYSDBA和SYSOPER)是從之前的數據庫版本中導入的它們的密碼也會包括在密碼文件中這些用戶將會保留大小寫敏感的密碼直到密碼被修改

  要在密碼文件中創建大小寫敏感的密碼使用ingnorecase=y選項重新創建密碼文件即可

  $ orapwd file=orapwDBGb entries= ignorecase=y password=mypassword

  數據庫連接的密碼也是大小寫敏感的下面列出了在不同數據庫版本之間連接時需要注意的問題


  &#g連接到g創建數據庫連接時密碼必須與遠程數據庫用戶的密碼大小寫一致
  &#; g連接到g以前的數據庫創建數據流連接時用的密碼大小寫隨意因為遠程數據庫會忽略大小寫的
  &#; g以前的數據庫連接到g必須將遠程用戶的密碼全部修改為大寫只有這樣才能通過g以前的數據庫驗證


From:http://tw.wingwit.com/Article/program/Oracle/201311/17000.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.