成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle如何查看當(dāng)前賬號(hào)的相關(guān)信息總結(jié)

數(shù)據(jù)庫 Oracle
關(guān)于Oracle數(shù)據(jù)庫的賬號(hào),我們?cè)诰S護(hù)數(shù)據(jù)庫的時(shí)候,偶爾可能需要獲取一些特殊信息。

[[405038]]

本文轉(zhuǎn)載自微信公眾號(hào)「DBA閑思雜想錄」,作者瀟湘隱者。轉(zhuǎn)載本文請(qǐng)聯(lián)系DBA閑思雜想錄公眾號(hào)。  

關(guān)于Oracle數(shù)據(jù)庫的賬號(hào),我們?cè)诰S護(hù)數(shù)據(jù)庫的時(shí)候,偶爾可能需要獲取一些特殊信息。例如,賬號(hào)的創(chuàng)建時(shí)間、賬號(hào)的狀態(tài)、賬號(hào)的鎖定時(shí)間.....。正常情況下,我們可以通過DBA_USERS獲取大部分相關(guān)信息。但是有一些特殊信息,還必須通過不常用底層基表sys.user$來獲取。

  1. SQL> DESC DBA_USERS; 
  2.  Name                                      Null?    Type 
  3.  ----------------------------------------- -------- ---------------------------- 
  4.  USERNAME                                  NOT NULL VARCHAR2(30) 
  5.  USER_ID                                   NOT NULL NUMBER 
  6.  PASSWORD                                           VARCHAR2(30) 
  7.  ACCOUNT_STATUS                            NOT NULL VARCHAR2(32) 
  8.  LOCK_DATE                                          DATE 
  9.  EXPIRY_DATE                                        DATE 
  10.  DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30) 
  11.  TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30) 
  12.  CREATED                                   NOT NULL DATE 
  13.  PROFILE                                   NOT NULL VARCHAR2(30) 
  14.  INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30) 
  15.  EXTERNAL_NAME                                      VARCHAR2(4000) 

其實(shí)我們經(jīng)常使用的DBA_USERS是同義詞,對(duì)應(yīng)SYS.DBA_USERS這個(gè)視圖。如果你想查看SYS.DBA_USERS的定義,可以通過下面方式:

  1. --ORACLE 10g 
  2.  
  3. SQL>SELECT DBMS_METADATA.GET_DDL('VIEW''DBA_USERS''SYS'FROM DUAL; 
  4.  
  5.  
  6.  CREATE OR REPLACE FORCE VIEW "SYS"."DBA_USERS" ( 
  7.   "USERNAME" 
  8. "USER_ID" 
  9. "PASSWORD" 
  10. "ACCOUNT_STATUS" 
  11. "LOCK_DATE" 
  12. "EXPIRY_DATE" 
  13. "DEFAULT_TABLESPACE" 
  14. "TEMPORARY_TABLESPACE" 
  15. "CREATED" 
  16. "PROFILE" 
  17. "INITIAL_RSRC_CONSUMER_GROUP" 
  18. "EXTERNAL_NAME"AS  
  19.   select u.name, u.user#, u.password
  20.        m.status, 
  21.        decode(u.astatus, 4, u.ltime, 
  22.                          5, u.ltime, 
  23.                          6, u.ltime, 
  24.                          8, u.ltime, 
  25.                          9, u.ltime, 
  26.                          10, u.ltime, to_date(NULL)), 
  27.        decode(u.astatus, 
  28.               1, u.exptime, 
  29.               2, u.exptime, 
  30.               5, u.exptime, 
  31.               6, u.exptime, 
  32.               9, u.exptime, 
  33.               10, u.exptime, 
  34.               decode(u.ptime, '', to_date(NULL), 
  35.                 decode(pr.limit#, 2147483647, to_date(NULL), 
  36.                  decode(pr.limit#, 0, 
  37.                    decode(dp.limit#, 2147483647, to_date(NULL), u.ptime + 
  38.                      dp.limit#/86400), 
  39.                    u.ptime + pr.limit#/86400)))), 
  40.        dts.name, tts.name, u.ctime, p.name
  41.        nvl(cgm.consumer_group, 'DEFAULT_CONSUMER_GROUP'), 
  42.        u.ext_username 
  43.        from sys.user$ u left outer join sys.resource_group_mapping$ cgm 
  44.             on (cgm.attribute = 'ORACLE_USER' and cgm.status = 'ACTIVE' and 
  45.                 cgm.value = u.name), 
  46.             sys.ts$ dts, sys.ts$ tts, sys.profname$ p, 
  47.             sys.user_astatus_map m, sys.profile$ pr, sys.profile$ dp 
  48.        where u.datats# = dts.ts# 
  49.        and u.resource$ = p.profile# 
  50.        and u.tempts# = tts.ts# 
  51.        and u.astatus = m.status# 
  52.        and u.type# = 1 
  53.        and u.resource$ = pr.profile# 
  54.        and dp.profile# = 0 
  55.        and dp.type#=1 
  56.        and dp.resource#=1 
  57.        and pr.type# = 1 
  58.        and pr.resource# = 1 

通過上面的視圖定義,我們可以知道,大部分?jǐn)?shù)據(jù)來自于底層基表sys.user$。關(guān)于表sys.user$的結(jié)構(gòu)如下,我們可以從sql.bsq中可以得到sys.user$的定義。

  1. SQL> DESC sys.user
  2.  Name                                      Null?    Type 
  3.  ----------------------------------------- -------- ---------------------------- 
  4.  USER#                                     NOT NULL NUMBER 
  5.  NAME                                      NOT NULL VARCHAR2(30)  
  6.  TYPE#                                     NOT NULL NUMBER 
  7.  PASSWORD                                           VARCHAR2(30) 
  8.  DATATS#                                   NOT NULL NUMBER 
  9.  TEMPTS#                                   NOT NULL NUMBER 
  10.  CTIME                                     NOT NULL DATE 
  11.  PTIME                                              DATE 
  12.  EXPTIME                                            DATE 
  13.  LTIME                                              DATE 
  14.  RESOURCE$                                 NOT NULL NUMBER 
  15.  AUDIT$                                             VARCHAR2(38) 
  16.  DEFROLE                                   NOT NULL NUMBER 
  17.  DEFGRP#                                            NUMBER 
  18.  DEFGRP_SEQ#                                        NUMBER 
  19.  ASTATUS                                   NOT NULL NUMBER 
  20.  LCOUNT                                    NOT NULL NUMBER 
  21.  DEFSCHCLASS                                        VARCHAR2(30) 
  22.  EXT_USERNAME                                       VARCHAR2(4000) 
  23.  SPARE1                                             NUMBER 
  24.  SPARE2                                             NUMBER 
  25.  SPARE3                                             NUMBER 
  26.  SPARE4                                             VARCHAR2(1000) 
  27.  SPARE5                                             VARCHAR2(1000) 
  28.  SPARE6                                             DATE 

其中,我們可以獲取一下關(guān)鍵字段信息,具體如下

  1. NAME    用戶(User)或角色(Role)的名字  
  2. TYPE#   0表示Role,1表示User 
  3. CTIME   用戶的創(chuàng)建時(shí)間 
  4. PTIME   密碼最后一次修改時(shí)間 
  5. EXPTIME     密碼過期的時(shí)間 
  6. LTIME       賬號(hào)最后一次鎖定的時(shí)間 
  7. LCOUNT      用戶登錄失敗次數(shù)。 

下面我們簡單測試驗(yàn)證一下,

  1. SQL> CREATE USER TEST IDENTIFIED BY "Test#1232134$#3" DEFAULT TABLESPACE TBS_TEST_DATA TEMPORARY TABLESPACE  TEMP
  2.  
  3. User created. 
  4. SQL> GRANT CONNECT TO TEST; 
  5. SQL> @get_user_info.sql 
  6.  
  7. Session altered. 
  8.  
  9. Enter value for user_name: TEST 
  10. old   9: WHERE NAME=('&USER_NAME'
  11. new   9: WHERE NAME=('TEST'
  12.  
  13. NAME                                TYPE# CTIME               PTIME               EXPTIME             LTIME                   LCOUNT 
  14. ------------------------------ ---------- ------------------- ------------------- ------------------- ------------------- ---------- 
  15. TEST                                    1 2021-06-10 14:10:01 2021-06-10 14:10:01                                                  0 
  16.  
  17. SQL> ALTER USER TEST IDENTIFIED BY "kER124"
  18.  
  19. User altered. 
  20.  
  21. SQL> @get_user_info.sql 
  22.  
  23. Session altered. 
  24.  
  25. Enter value for user_name: TEST 
  26. old   9: WHERE NAME=('&USER_NAME'
  27. new   9: WHERE NAME=('TEST'
  28.  
  29. NAME                                TYPE# CTIME               PTIME               EXPTIME             LTIME                   LCOUNT 
  30. ------------------------------ ---------- ------------------- ------------------- ------------------- ------------------- ---------- 
  31. TEST                                    1 2021-06-10 14:10:01 2021-06-10 14:10:50                                                  0 
  32.  
  33. SQL> ALTER USER TEST ACCOUNT LOCK; 
  34.  
  35. User altered. 
  36.  
  37. SQL> @get_user_info.sql 
  38.  
  39. Session altered. 
  40.  
  41. Enter value for user_name: TEST 
  42. old   9: WHERE NAME=('&USER_NAME'
  43. new   9: WHERE NAME=('TEST'
  44.  
  45. NAME                                TYPE# CTIME               PTIME               EXPTIME             LTIME                   LCOUNT 
  46. ------------------------------ ---------- ------------------- ------------------- ------------------- ------------------- ---------- 
  47. TEST                                    1 2021-06-10 14:10:01 2021-06-10 14:10:50                     2021-06-10 14:11:27          0 
  48.  
  49. SQL>  

其中g(shù)et_user_info.sql的腳本如下

  1. $ more get_user_info.sql  
  2. ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
  3. SELECT  NAME 
  4.       , TYPE# 
  5.       , CTIME 
  6.       , PTIME 
  7.       , EXPTIME 
  8.       , LTIME 
  9.       , LCOUNT 
  10. FROM user
  11. WHERE NAME=('&USER_NAME'); 

另外,我們來測試一下賬號(hào)登錄失敗次數(shù),在實(shí)驗(yàn)前先解鎖賬號(hào),用錯(cuò)誤的賬號(hào)密碼嘗試登錄數(shù)據(jù)庫,你會(huì)發(fā)現(xiàn)LCOUNT就變成1了。

  1. SQL> @get_user_info.sql 
  2.  
  3. Session altered. 
  4.  
  5. Enter value for user_name: TEST 
  6. old   9: WHERE NAME=('&USER_NAME'
  7. new   9: WHERE NAME=('TEST'
  8.  
  9. NAME                                TYPE# CTIME               PTIME               EXPTIME             LTIME                   LCOUNT 
  10. ------------------------------ ---------- ------------------- ------------------- ------------------- ------------------- ---------- 
  11. TEST                                    1 2021-06-10 14:10:01 2021-06-10 14:10:50                     2021-06-10 14:11:27          1 
  12.  
  13. SQL>  

那么這個(gè)LCOUNT字段的值是一直累加到超過閾值鎖定呢?還是中間會(huì)清零呢?什么情況下會(huì)清零呢?如果你使用正確的密碼成功登錄數(shù)據(jù)庫后,你會(huì)發(fā)現(xiàn)LCOUNT的值就清零了。如下截圖所示:

  1. $ sqlplus /nolog 
  2.  
  3. SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jun 10 14:30:41 2021 
  4.  
  5. Copyright (c) 1982, 2007, Oracle.  All Rights Reserved. 
  6.  
  7. SQL> connect TEST 
  8. Enter password:  
  9. Connected. 

也就是說,只要你在鎖定之前,一旦成功登錄之后,該計(jì)數(shù)會(huì)被清零。在有些版本中,由于Bug,也會(huì)出現(xiàn)LCOUNT沒有正確反映登錄失敗次數(shù)的情況,例如Lcount neither reset on correct login nor incremented after incorrect login thru JDBC (Doc ID 2675398.1)中記錄了這樣的案例。另外,ORACLE 12C 后新增了一個(gè)功能,它會(huì)記錄用戶的最后一次登錄時(shí)間:SPARE6字段記錄用戶的最后一次登錄時(shí)間.

參考資料:

https://www.eygle.com/archives/2009/07/profile_failed_login_attempts.html

https://dbaora.com/sys-user-table-in-oracle-last-password-change-time-last-locked-last-expired-creation-time-failed-logon/

Lcount neither reset on correct login nor incremented after incorrect login thru JDBC (Doc ID 2675398.1)

https://bijoos.com/oraclenotes/2013/153/

 

責(zé)任編輯:武曉燕 來源: DBA閑思雜想錄
相關(guān)推薦

2010-04-27 10:52:05

Oracle外部表

2010-04-06 09:20:58

Oracle job

2010-05-04 18:00:56

Oracle事務(wù)

2010-05-27 16:03:22

Linux查看cpu

2021-06-09 15:55:34

Oracle賬號(hào)鎖定

2010-04-26 15:00:32

Oracle當(dāng)前連接數(shù)

2010-04-26 15:45:45

Oracle外部表

2011-08-22 18:01:11

OracleCPU和PSU補(bǔ)丁

2010-05-27 17:17:29

Linux查看環(huán)境變量

2010-03-09 14:30:45

Linux全部硬件信息

2010-04-01 14:35:36

Oracle綁定變量

2010-06-07 11:33:11

Linux查看環(huán)境變量

2011-08-02 16:44:00

Oracle數(shù)據(jù)庫角色權(quán)限默認(rèn)表空間

2015-10-28 15:35:33

Oracle策略

2010-04-19 09:37:22

Oracle查詢語句

2010-04-07 11:39:16

Oracle常用

2009-09-25 10:48:07

Linux硬件信息操作系統(tǒng)

2010-04-14 13:22:10

Oracle系統(tǒng)函數(shù)

2011-05-19 14:29:49

Oraclerownum

2010-10-27 16:39:23

oracle查詢
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线视频成人 | 日韩不卡一区二区 | 亚洲图片视频一区 | 日本高清不卡视频 | 免费三级网 | 雨宫琴音一区二区在线 | 亚洲三级在线观看 | av一级一片 | 亚洲一区二区三区久久久 | 国产一二区在线 | av在线天堂 | 精品一区二区三区在线观看国产 | 国产精品免费播放 | 久久久久久久久久性 | 日韩 欧美 二区 | 欧美黄色网络 | 国产一区二区三区视频 | 午夜精品一区二区三区在线视频 | 一区二区三区久久 | 91久久久久久久久久久 | 91av在线看| 国产剧情一区二区三区 | 中文字幕精品一区二区三区精品 | 国产成人亚洲精品 | 围产精品久久久久久久 | 亚洲精品乱码久久久久久9色 | 九一在线观看 | 成人免费大片黄在线播放 | 91久久久www播放日本观看 | 久久99网站| 亚洲成人免费视频 | 国产一级一级毛片 | 国产资源在线观看 | 亚洲精品国产a久久久久久 午夜影院网站 | 亚洲一区视频在线 | 国产精品美女久久久 | 久久久www成人免费无遮挡大片 | 亚洲一区二区三区在线观看免费 | 91五月婷蜜桃综合 | 久久久久国产一区二区三区 | 精品毛片 |