私が入社した時には既に稼働していた販売システムの一部で障害が発生、マスタの変更処理中にパソコンが固まり、強制終了をした所レコードがロックされてしまった様子。
その販売システムは今は付き合いのないシステム会社が作ったもので、VB6とOracleという構成。
画面単位のロック解除処理はメニューに用意されているのだが、今回の様なレコード単位のロック解除は用意されていないので直接データベースを操作する必要があるようで調べてみたところ、どうやらOracleのプロセスがサーバ側に残っていて、それが該当するレコードをロックしているようだった。
そのプロセスを解除する方法を上司に聞いてみたのだが、そのシステムはタッチしていないみたいでやった事が無いとの事、私自身もOracleは学生の時にちょっと触った程度なのでまずは調べてみたのだが、手順としては
1、SQLPlusを起動して以下のSQLを実行
select s.sid ,s.serial# from v$session s ,v$locked_object l
2、データをロックしているセッションを確認して、以下のSQL?を実行
ALTER SYSTEM KILL SESSION 'sid,serial#'
となるようなのだが、セッションの特定が出来ないのと、明日でもいいとの事だったので明日のサーバ起動後にもう一度様子を見ようという事になった。
良く考えてみると自社の基幹システムのデータベースの詳細を知っている人がいないというのは結構まずい気がする。
時間を見て色々と学んでおく必要がありそうだ。
その販売システムは今は付き合いのないシステム会社が作ったもので、VB6とOracleという構成。
画面単位のロック解除処理はメニューに用意されているのだが、今回の様なレコード単位のロック解除は用意されていないので直接データベースを操作する必要があるようで調べてみたところ、どうやらOracleのプロセスがサーバ側に残っていて、それが該当するレコードをロックしているようだった。
そのプロセスを解除する方法を上司に聞いてみたのだが、そのシステムはタッチしていないみたいでやった事が無いとの事、私自身もOracleは学生の時にちょっと触った程度なのでまずは調べてみたのだが、手順としては
1、SQLPlusを起動して以下のSQLを実行
select s.sid ,s.serial# from v$session s ,v$locked_object l
2、データをロックしているセッションを確認して、以下のSQL?を実行
ALTER SYSTEM KILL SESSION 'sid,serial#'
となるようなのだが、セッションの特定が出来ないのと、明日でもいいとの事だったので明日のサーバ起動後にもう一度様子を見ようという事になった。
良く考えてみると自社の基幹システムのデータベースの詳細を知っている人がいないというのは結構まずい気がする。
時間を見て色々と学んでおく必要がありそうだ。