原创,转载请注明
其实如果要说这类日志的重要性,当然2个数据库都知道它的重要性。也淡淡的说一下。日志是进行数据库恢复重要的组建。用于将数据库恢复到故障点,也就是我们通常说的滚动,ORACLE叫他LOGFILE,而SQL SERVER 叫他事务日志。
ORACLE中有归档模式和非归档模式,而这对应了SQL SERVER 中的恢复模式的完整恢复模式和简单恢复模式。完整恢复模式和归档模式都是支持恢复到故障点的,而非归档模式和简单模式其实说白了都是不保存各自数据库的历史LOGFILE和事务日志,所以不能完成时间点恢复。
在支持数据库恢复到故障点上,也就是ORACLE的归档模式和SQL SERVER 完整恢复模式,ORACLE采用了多个LOGFILE GROUP,并且使用额外的进行ARCH来对logfile进行归档为ARCHIVE LOGFILE,LOGFILE GROUP是循环使用的。而SQL SERVER 没有这样灵活,SQL SERVER 中的事务日志是在不段增长的。当然2者的思想其实是相同的。如果不对oracle 的ARCHIVE LOGFILE进行备份而删除他那使用之前的备份是不能进行恢复的,而SQL SERVER也是一样不过更狠,如果不进行事务日志备份的话那事务日志不会截断,也就是不段增加,知道达到最大值。
当进行基于时间点恢复的时候,ORACLE如果出现归档日志断点那将会出现错误,而SQL SERVER如果出现事务日志备份断点同样不能恢复。
下面是ORACLE RMAN恢复命令
recover database until cancel;
这个命令会自动使用控制文件中最新的DATABASE backup。然后应用相应的归档日志,知道最后一个。
下面是SQL SERVER T-SQL恢复命令
RESTORE DATABASE [mydw] FROM DISK = N'D:\SQLSERVERTESTBAK\mydw.bak' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10 用来恢复全备份
GO
RESTORE LOG [mydw] FROM DISK = N'D:\SQLSERVERTESTBAK\mydwlogfile.bak' WITH FILE = 1, NOUNLOAD, STATS = 10 用来恢复事务日志备份
GO