Oracle SCN (System Change Number) 分析
1. SCN 概念
SCN (System Change Number) 是 Oracle 数据库中的一个逻辑时间戳,它具有以下特点:
- 单调递增
- 全局唯一
- 用于标识数据库变更的时间点
2. startScn 在 LogMiner 中的作用
2.1 基本功能
// 在 LogMinerStreamingChangeEventSource 中的使用
private void validateStartScn(OracleOffsetContext offsetContext) {
if (offsetContext != null && offsetContext.getScn() != null) {
// 验证 SCN 是否有效
if (!connection.isScnValid(offsetContext.getScn())) {
throw new IllegalStateException("SCN " + offsetContext.getScn() + " is not valid");
}
}
}
startScn 用于:
- 确定 LogMiner 开始读取的位置
- 保证数据捕获的连续性
- 支持断点续传