Gblog

おもにTips

ALTER SYSTEM CANCEL SQL の続き

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

 

 

多分シグナルを送っているので、繰り返しシグナルを送った結果、変な挙動になったんだと思う。

サポートに問い合わせたい。。。