Oracle日志组与SQL Server VLF状态对比

142 篇文章 26 订阅

Oracle: 

select * from v$log;

SQL Server : 

dbcc loginfo(dbname)

status含义:
0:reusable或unused
2:active或recoverable

或者用

SELECT [name], COUNT(l.database_id) AS 'vlf_count' FROM sys.databases s CROSS APPLY sys.dm_db_log_info(s.database_id) l GROUP BY [name] HAVING COUNT(l.database_id) > 100

status含义:
0 - VLF is inactive 
1 - VLF is initialized but unused 
2 - VLF is active.

状态含义对比

Oracle含义SQL Server含义备注
CURRENT当前正在使用的日志文件组。该联机重做日志组是活动的ACTIVEVLF中存在属于活动事务(未结束的事务)的日志记录 
ACTIVE 

该组是活动的但不是当前组,实例恢复时需要这组日志。

 

文件中的数据没有全部写入数据文件,一旦需要实例恢复,必须借助该文件中保存的内容。

 

已归档没归档均可。

RECOVERABLEVLF中不包含活动事务的日志记录,此时DB处于维护一个完整日志序列的状态,但是某些操作(例如数据库镜像、复制、日志备份等)还需要用到这些数据,因此不可以被覆盖。sqlserver的有点类似Oracle归档还没被DG应用不可删除
INACTIVE

该组联机重做日志当前处于空闲状态。

 

文件中的数据全部写入数据文件,实例恢复已不再需要这组联机重做日志组了。

 

已归档没归档均可。

REUSABLEVLF中的数据已经不需要了,可以被覆盖(该状态也称为“可截断”) 
UNUSED 

该联机重做日志文件组对应的文件还从未被写入过数据。

 

通常是刚创建或重建

UNUSEDVLF从未被使用 
CLEARING在执行了 ALTER DATABASE CLEAR LOGFILE 后,表示该组重做日志正被重建(重建后该状态会变成UNUSED)无对应  
CLEARING_CURRENT表示该组重做日志重建时出现错误,如io错误。无对应 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL Server 日志维护状态

以下两种情况视为sqlserver数据库处于非完整日志维护状态

1. 从未进行过全库备份

select last_log_backup_lsn from sys.database_recovery_status where db_name(database_id)='tpcc'
-- last_log_backup_lsn 为NULL

2. 数据库恢复模式为sample

select recovery_model_desc from sys.databases where name='tpcc'
-- 查询结果为SAMPLE

若sqlserver处于非完整日志维护状态

执行checkpoint操作后,sqlserver会直接重用日志文件中不包含活动事务的VLF,因为VLF可以不断被重用

若sqlserver处于完整日志维护状态

checkpoint操作不会重用VLF,执行事务日志备份后,sqlserver会自动重用reusable状态的VLF

 

参考:

https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-db-log-info-transact-sql?view=sql-server-2017

https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-transaction-log-architecture-and-management-guide?view=sql-server-2017#physical_arch

https://blog.51cto.com/jimshu/1174474

https://blog.csdn.net/u014531707/article/details/49996565

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hehuyi_In

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值