对比三次操作生成的TRACE信息,发现对于最后一次的调用,Oracle根本没有去尝试读取任何触发器相关的信息。其实,不只是Oracle没有读取触发器的信息,Oracle实现上根本就没有进入SUSPEND的状态,换句话说,如果SUSPEND触发器失效的时候被调用,不是简单的阻止SUSPEND触发器再次被调用,而是使得当前会话无法在进入SUSPEND状态。
当前会话采用何种方式都无法在进入SUSPEND状态,即使关闭RESUMABLE,再重新打开:
SQL> ALTER SESSION DISABLE RESUMABLE;
会话已更改。
SQL> ALTER SESSION ENABLE RESUMABLE TIMEOUT 300;
会话已更改。
SQL> SELECT * FROM T_TRIGGER;
INFO
SYS TRIGGER
SQL> CREATE TABLE T_BIG (ID NUMBER)
2 TABLESPACE YANGTK
3 STORAGE (INITIAL250M);
CREATE TABLE T_BIG (ID NUMBER)
第1行出现错误:
ORA-01659:无法分配超出27的MINEXTENTS (在表空间YANGTK中)
SQL> SELECT * FROM T_TRIGGER;
INFO
SYS TRIGGER