Oracle在11g中對于安全方面進行了很大的改進,比如增加了密碼大小寫驗證,增加了密碼複雜度的驗證等等,在11g中,Oracle還提供了一個視圖,指出那些使用者的密碼沒有被修改過,仍然是資料庫預設密碼。
這個視圖是DBA_USERS_WITH_DEFPWD:
[oracle@bjtest ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 8月 31 19:42:27 2010
Copyright (c) 1982, 2009, Oracle. All rights reserved.
連接配接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select username from dba_users;
USERNAME
------------------------------
SYS
SYSTEM
A
TEST
YANGTK
TEST_TEST
OUTLN
MGMT_VIEW
FLOWS_FILES
MDSYS
ORDSYS
EXFSYS
DBSNMP
WMSYS
APPQOSSYS
APEX_030200
OWBSYS_AUDIT
ORDDATA
CTXSYS
ANONYMOUS
SYSMAN
XDB
ORDPLUGINS
OWBSYS
SI_INFORMTN_SCHEMA
OLAPSYS
ORACLE_OCM
XS$NULL
MDDATA
DIP
APEX_PUBLIC_USER
SPATIAL_CSW_ADMIN_USR
SPATIAL_WFS_ADMIN_USR
已選擇33行。
SQL> select username from dba_users_with_defpwd;
已選擇20行。
在視圖中列出的20個使用者就是Oracle預設密碼的使用者,如果使用者密碼被修改,就會從這個視圖中消失:
SQL> alter user dbsnmp identified by newpassword;
使用者已更改。
已選擇19行。
而且Oracle并不是簡單的監測是否密碼被修改,而是檢查密碼是否修改為别的值,如果新密碼和舊密碼保持一緻,那麼即使密碼被修改,這個使用者仍然在DBA_USERS_WITH_DEFPWD視圖中:
SQL> conn / as sysdba
已連接配接。
SQL> alter user xdb account unlock;
SQL> select * from dba_users_with_defpwd where username = 'XDB';
SQL> conn xdb/change_on_install
ERROR:
ORA-28001: the password has expired
更改 xdb 的密碼
新密碼:
重新鍵入新密碼:
密碼已更改
SQL> alter user xdb identified by change_on_install;
SQL> alter user xdb identified by newpassword;
未標明行