検討に入る:Oracleでは、ロックされたテーブルをユーザーに確認する方法と、ロックされたテーブルを解放する方法
886 ワード
現在のデータベースのどのテーブルがロックされているかを、PL/SQLでSQL文で調べられ、どのユーザがロックしているかを調べられます。
SELECT A.OWNER、 --OBJECT所属ユーザー A.OBJECT_NAME --OBJECT名称(表名) B.XIDUSN、 B.XIDSLOT、 B.XIDSQN、 B.SESSION_ID、 --ロックテーブルユーザのセッション B.ORACLE_USERNAME --ロックテーブルユーザのOracleユーザ名 B.OS_USER_NAME --ロックテーブルユーザのオペレーティングシステム登録ユーザ名 B.PROCESS、 B.LOCKED_MODE C.MACHINE、 --ロックテーブルユーザのコンピュータ名(例えば、WORKGROUTP\UserName) C.STATUS、 --ロック状態 C.SERVER、 C.SID、 C.SERIAL嚖、 C.PRORAM --ロックテーブルユーザ用データベース管理ツール(例えば、OB 9.exe)FROM ALL_OBJECTS A、 V$LOCKED_OBJECT B、 SYSS.GV_$SESSION C WHERE A.OBJECT_ID=B.OBJECT_ID AND B.PROCESS=C.PROCESSORDER BY 1,2は、現在のロックテーブルの項目を以下のコマンドで消すことができます。
alter system kill session'sid,serial舸'--例えば:alter system kill session'57,103325
SELECT A.OWNER、 --OBJECT所属ユーザー A.OBJECT_NAME --OBJECT名称(表名) B.XIDUSN、 B.XIDSLOT、 B.XIDSQN、 B.SESSION_ID、 --ロックテーブルユーザのセッション B.ORACLE_USERNAME --ロックテーブルユーザのOracleユーザ名 B.OS_USER_NAME --ロックテーブルユーザのオペレーティングシステム登録ユーザ名 B.PROCESS、 B.LOCKED_MODE C.MACHINE、 --ロックテーブルユーザのコンピュータ名(例えば、WORKGROUTP\UserName) C.STATUS、 --ロック状態 C.SERVER、 C.SID、 C.SERIAL嚖、 C.PRORAM --ロックテーブルユーザ用データベース管理ツール(例えば、OB 9.exe)FROM ALL_OBJECTS A、 V$LOCKED_OBJECT B、 SYSS.GV_$SESSION C WHERE A.OBJECT_ID=B.OBJECT_ID AND B.PROCESS=C.PROCESSORDER BY 1,2は、現在のロックテーブルの項目を以下のコマンドで消すことができます。
alter system kill session'sid,serial舸'--例えば:alter system kill session'57,103325