残留セッション
データベースに接続中にあるセッションではSQL実行中にフリーズしたがセッションは生き残っている場合やデータベースをシャットダウンしたいが接続中のユーザが残っている場合などが想定される。後者の場合、 shutdown immediate なら、トランザクションが終了するのを待たずにロールバックしてセッションを切断するからよいが、normal や transactional では切断されるまで待ちが発生してしまう。このような時にセッションを手動で終了させる方法が有効である。
ユーザのセッションを強制終了させる例
SCOTTユーザでログイン
C:\work>sqlplus SCOTT/oracle
SQL*Plus: Release 11.2.0.1.0 Production on 金 2月 3 01:41:47 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
管理ユーザでログイン(別窓)
C:\work>sqlplus SYSTEM/oracle
SQL*Plus: Release 11.2.0.1.0 Production on 金 2月 3 01:54:56 2017
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
v$sessionでSCOTTユーザの情報を取得
SQL> select sid, serial#, username, program from v$session where username = 'SCOTT';
SID SERIAL# USERNAME PROGRAM
---------- ---------- ------------------------------ -------------------
30 482 SCOTT sqlplus.exe
セッション強制終了
SQL> alter system kill session '30, 482';
システムが変更されました。
再度v$sessionでSCOTTユーザの情報を取得
SQL> select sid, serial#, username, program from v$session where username = 'SCOTT';
レコードが選択されませんでした。
SCOTTユーザーで検索を実行
セッションが強制終了されたためエラーになる。
SQL> select * from emp;
select * from emp
*
行1でエラーが発生しました。:
ORA-00028: セッションは強制終了されました。
その他
SQL> alter user scott account unlock;
ユーザーが変更されました。
SQL> alter user scott identified by "oracle";
ユーザーが変更されました。
コメントをお書きください