对在日志损坏时,什么时候需要加入隐含参数打开数据库的问题一直没弄清楚,做了一下测试,总结如下:(我也不知道对不对,请高手指正)
一、归档模式
1、损坏当前联机日志
1.1 非干净关闭
1.1.1、有活动事务
1.1.1.1、有备份
1)关闭数据库、备份现场、拷贝备份
2)recover database until cancel;(选择AUTO)
3)recover database until cancel;(选择CANCEL)
4)alter datbase open resetlogs;
5)做一次全备
1.1.1.2、无备份(需要加入隐含参数)
1)关闭数据库、加入隐含参数、拷贝备份
2)recover database until cancel;(选择CANCEL)
3)alter database open resetlogs;
4)注释隐含参数,并做一次全备
1.1.2、无活动事务
1)startup mount
2)alter database clear [unarchived] logfile group n;
3)alter database open;
1.2 干净关闭
参考1.1.2
2、损坏非当前联机日志
参考1.1.2
二、非归档模式
1、损坏当前联机日志
1.1 非干净关闭
1.1.1、有活动事务(需要加入隐含参数)
1)关闭数据库、保护现场、加入隐含参数
2)recover database until cancel;(选择CANCEL)
3)alter database open resetlogs;
4)做一次全备、注释隐含参数
1.1.2、无活动事务
1)startup mount
2)alter database clear [unarchived] logfile group n;
3)alter database open;
1.2 干净关闭
参考1.1.2
2、损坏非当前联机日志
参考1.1.2
总结:
1、归档模式下,只有损坏当前联机日志、当前联机日志有活动事务、且数据库无备份的情况下才需要加入隐含参数。
2、非归档模式下,只要损坏当前联机日志、且当前联机日志有活动事务,无论数据库是否有备份的情况下都需要加入隐含参数。