current じゃない SQL_ID で実行すると、ORA-00866
SQL> alter system cancel sql '265,55799,3hz88jmt9x6x0' alter system cancel sql '265,55799,3hz88jmt9x6x0' * ERROR at line 1: ORA-00866: invalid or non-existent SQL ID
存在しない、sid, serial# で実行すると ORA-00030 (kill session の場合も同じ)
SQL> alter system cancel sql '265,1,3hz88jmt9x6x0'; alter system cancel sql '265,1,3hz88jmt9x6x0' * ERROR at line 1: ORA-00030: User session ID does not exist.
アイドルセッションに実行しても何も起きない。
SQL> alter system cancel sql '265,52873,3hz88jmt9x6x0'; System altered.
実効済みのSQLはそのままだし、当然、セッションも切られていないのでロールバックもされていない。
なんですが、、、、なぜかSQL実行おわった後のアイドルセッションに 2回、CANCEL SQL を実行したら。ORA-1031 になってしまった。
キャンセルした端末
SQL> alter system cancel sql '265,4053,3hz88jmt9x6x0'; System altered. SQL> r 1* alter system cancel sql '265,4053,3hz88jmt9x6x0' System altered. SQL>
キャンセル対象のセッション
SQL> insert into test1 select count(*) from v$parameter a,v$parameter b; 1 row created. SQL> ※ここで、2回 alter system caancel sql を実行 SQL> select * from test1; ERROR: ORA-01013: user requested cancel of current operation no rows selected SQL>
新機能で安定してるとはいえなさそう。
他にも、何も実行していないセッションに、cancel sql を繰り返し実行したら、なぜか対象のセッションで ORA-03106 が発生するようになってしまった。。。
SQL> select * from test1; select * from test1 * ERROR at line 1: ORA-03106: fatal two-task communication protocol error
多分シグナルを送っているので、繰り返しシグナルを送った結果、変な挙動になったんだと思う。
サポートに問い合わせたい。。。