登入oracle資料庫時很久無反應的問題處理一例

2021-09-02 12:37:00 字數 1428 閱讀 8680

原因是系統存在僵死的程序,促使session處於啟用狀態.

首先檢視alert.log檔案

接著檢視oracle程序

$ ps -ef|grep oracle

終止與oracle_sid有關的所有oracle過程:

$ ps -ef|grep $oracle_sid| grep -v grep|awk ''|xargs -i kill -9 {}

$ ipcs -mp

------ shared memory creator/last-op --------

shmid      owner      cpid       lpid     

4947969    oracle     26474      26488  

$ ipcrm shm 4947969

也可以用下面的方法.

先找到該oracle session對應的spid通過作業系統檢查有沒有僵死程序

下面的語句用來查詢哪些物件被鎖::

select do.object_name,

ss.sid,

ss.serial#,

lo.process,

lo.locked_mode,

ps.spid,

sql.sql_text

from v$locked_object lo,

dba_objects do,

v$session ss,

v$process ps,

v$sql sql

where lo.object_id = do.object_id

and session_id = ss.sid

and ps.addr = ss.paddr

and ss.sql_address = sql.address

and ss.sql_hash_value = sql.hash_value;

查到後可以看到他們的sid, serial#,然後用

alter system kill session '237,12574';
語句把這個sid結束掉.要是結束不掉,出現ora-00031: session marked for kill錯誤後.也就是說程序狀態被置為"killed",但是鎖定的資源很長時間沒有被釋放,這個時候怎麼辦呢,既然kill不掉sid,那我們試試把它的spid kill掉,執行下面的語句獲得程序(執行緒)號

select spid, osuser, s.program

from v$session s,v$process p

where s.paddr=p.addr and s.sid=237

然後再在作業系統上把這個spid kill掉.

登入oracle資料庫提示 無監聽

一般情況,先看一下服務管理中oracleoradb10g home1tnslistener,這個服務啟用了沒有,如果沒有啟用先手機啟動,再登入看是否能行,不行,再參考下面步驟檢查排除。我的啟動服務就ok了,鑑於這種問題遇到很多次了,貼出來記錄一下!首先執行cmdc users hp sqlplus ...

登入mysql資料庫 登入mysql資料庫

二 登入mysql 1 以 windowns 命令方式登入 首先 在 cmd命令裡 切換到mysql的bin目錄下 c program files mysql mysql server 8.0 bin cd c program files mysql mysql server 8.0 bin c p...

Oracle資料庫的sysdba許可權登入問題總結

oracle資料庫的sysdba許可權登入問題 資料庫用sysdba登入的驗證有兩種方式,一種是通過os認證,一種是通過密碼檔案驗證 登入方式有兩種,一種是在資料庫主機直接登入 用os認證的方式 一種是通過網路遠端登入 需要設定的引數有兩個,乙個是sqlnet.authentication serv...