資料庫會話記錄使用者登陸的密碼資訊

yangtingkun發表於2010-04-01

其實自從發現JOB中無法使用不指定使用者名稱的資料庫鏈時,就猜到了這一點。

 

 

以前認為Oracle只是在登陸的時候驗證一下使用者的密碼是否正確,並不會儲存或記錄下來,但是發現JOB無法使用不指定使用者名稱的資料庫鏈時,就發現可能事實並非如此。

今天在測試一個小例子的時候又確認了這一點:

$ sqlplus test/test

SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 4 1 10:42:53 2010

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.


連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> drop database link test11gr2;

資料庫連結已刪除。

SQL> create database link test11gr2
  2  using '172.25.198.230/test112';

資料庫連結已建立。

SQL> select * from global_name@test11gr2;
select * from global_name@test11gr2
                          *
1 行出現錯誤:
ORA-01017: invalid username/password; logon denied
ORA-02063:
緊接著 line (起自 TEST11GR2)


SQL> CONN TEST/TEST
已連線。
SQL> select * from global_name@test11gr2;

GLOBAL_NAME
--------------------------------------------------------------------------------
TEST112

SQL> SELECT * FROM V$VERSION@TEST11GR2;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> conn test/test
已連線。
SQL> select * from global_name@test11gr2;
select * from global_name@test11gr2
                          *
1 行出現錯誤:
ORA-01017: invalid username/password; logon denied
ORA-02063:
緊接著 line (起自 TEST11GR2)

10g環境下,建立了一個不帶使用者名稱的資料庫鏈,指向一個11.2的資料庫。當資料庫鏈不指定使用者名稱,就會使用當前的使用者和密碼作為遠端資料庫的使用者名稱、密碼,這要求當前資料庫的使用者名稱、密碼和遠端資料庫的使用者名稱、密碼一致。

有意思的是,雖然當前資料庫和遠端資料庫的使用者名稱、密碼保持一致,但是資料庫鏈並不一定可以正常使用。當使用者使用小寫密碼登陸的時候,資料庫鏈會報使用者名稱密碼錯誤,而如果使用者使用大小密碼登陸,則資料庫鏈可以正常訪問。

雖然在10g中,資料庫並不會區分密碼的大小寫,顯然會話將密碼資訊原封不動的儲存在會話的記憶體中,因此透過資料庫鏈連線遠端站點的時候提供的密碼也是有大小寫的區別的。

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-631045/,如需轉載,請註明出處,否則將追究法律責任。

相關文章