日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle数据库频繁被锁,oracle数据库用户频繁被锁

發布時間:2023/12/14 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle数据库频繁被锁,oracle数据库用户频繁被锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自己有一臺oracle數據庫,發現幾天不登錄,數據庫用戶就無法登錄,提示用戶被鎖,今天下定決心終于解決它,現在將解決過程寫出與大家一起分享。

如果用戶被鎖,首先應該要知道他是什么時候被鎖了。用oracle用戶登錄機器,執行

1.sqlplus / as sysdba ,以DBA用戶登錄,這時千萬不要先解鎖,而是要先查一下上次被鎖的時間。

2.

--修改當前會話的日期顯示格式

alter session set nls_date_format = 'yyyy-MM-dd hh24:mi:ss';

--查詢被鎖定賬號的鎖定時間

select username,lock_date? from dba_users where username like 'SJCKBILL';

查出來時間為:2012-05-17 15:44:21

3.找到 listener.log文件,如果不知道這個文件放到哪里,就只能用

find / -name listener.log

查到在/oracle/app/oracle/product/10.2.0/network/log/listener.log

4.進入這個目錄

發現文件很大,如果用cat 顯示太慢,執行 tail -20 listener.log

17-MAY-2012 15:44:21 * (CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3761)) * establish * storage * 0

17-MAY-2012 15:44:32 * (CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3762)) * establish * storage * 0

17-MAY-2012 15:44:38 * (CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3768)) * establish * storage * 0

17-MAY-2012 15:45:54 * (CONNECT_DATA=(SID=storage)(CID=(PROGRAM=E:\Program Files\plsql developer\plsqldev.exe)(HOST=COGNOS-SERVER)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=134.134.XX.XX)(PORT=3794)) * establish * storage * 0

發現那個時間段,是=134.134.XX.XX用 plsql 連續連接4次,問了這個人,才知道是不知道密碼,于是連接了4次,導致用戶被鎖。

6.? 總結

從上邊可以看到,造成Oracle的賬號被鎖定的原因是由于誤輸入用戶名和密碼導致,所以造成了該賬號登錄Oracle經常失敗,由于我們配置了Oracle的最大允許登錄錯誤次數為10,所以超過10次錯誤后賬號將被鎖定。

select * from dba_profiles where resource_name like 'FAILED_LOGIN_ATTEMPTS%';

查到?DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10

為10 次。

方法二:

捕捉嘗試登陸失敗的用戶信息

最近一個應用的用戶被鎖,查了一下發現在profile里設置了100次嘗試登陸的限制,為了定位具體嘗試登陸的時間及ip等相關信息,需要寫一個trigger進行捕捉,以下來自網上:

create or replace trigger logon_denied_to_alert

after servererror on database

declare

message?? varchar2(120);

IP??????? varchar2(15);

v_os_user varchar2(80);

v_module? varchar2(50);

v_action? varchar2(50);

v_pid???? varchar2(10);

v_sid???? number;

begin

IF (ora_is_servererror(1017)) THEN

if sys_context('userenv', 'network_protocol') = 'tcp' then

IP := sys_context('userenv', 'ip_address');

else

select distinct sid into v_sid from sys.v_$mystat;

SELECT p.SPID

into v_pid

FROM V$PROCESS p, V$SESSION v

WHERE p.ADDR = v.PADDR

AND v.sid = v_sid;

end if;

v_os_user := sys_context('userenv', 'os_user');

dbms_application_info.READ_MODULE(v_module, v_action);

message := to_char(sysdate, 'Dy Mon dd HH24:MI:SS YYYY') ||

' logon denied from ' || nvl(IP, v_pid) || ' ' || v_os_user ||

' with ' || v_module || ' ' || v_action;

sys.dbms_system.ksdwrt(2, message);

end if;

end;

/

當有用戶嘗試登陸失敗后,alert日志里記錄了如下信息:

Mon Feb 22 03:50:13 2010 logon denied from 192.168.80.19 oracle with (TNS V1-V3)

該trigger只是記錄登陸失敗的信息,正常成功登陸不會記錄。

總結

以上是生活随笔為你收集整理的oracle数据库频繁被锁,oracle数据库用户频繁被锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。