|
|
顺便多说几句:
shutdown immediate 的时候由于回退所有没有完成的事务,所以如果有大事务在进行可能需要比较长的时间。 在不少系统中我遇见过如果起了job进程则很难成功(不是说起了job进程不能成功,我只是曾经猜测job进程有时会有影响,这是一个统计概率无理论支持)。
至于 shutdown abort ,绝大部分情况下不会出问题,能进行instance recovery,通常是在数据库正有大量IO时刻做 abort 才有可能出现问题,问题的表现通常又是文件的 检查点时间不一致。这时一般做个media recovery 就可以恢复。 分析这个现象我推测的结果就是,当大量IO出现的时候,检查点进程在更新控制文件和文件头的过程中(虽然这个过程很短),突然被终止,导致部分更新部分没有更新,就出现需要mediate recovery的情况。 更细一点,从理论上讲,如果dbwr正好更新了一个block的一部分但整个块的写还没有结束,则这个块就可能出现逻辑损坏。如果碰巧这个块是system表空间中的某些在启动时候需要读的块,则数据库就不能启动。
如果先执行了shutdown immediate ,并且等到系统基本无IO的情况下再abort,基本不会出现问题。从另外一个角度来说,即使不shutdown immediate,在系统无IO时刻直接abort,基本也不会出现什么问题。 |
|