我已经恢复了数据库并应用了存档日志。如何知道我已恢复到的最新事务时间戳?
这是 Oracle 10g R2 标准(未启用闪回)
答案1
复制自这一页:
[...] 确保所有在线数据文件的 SCN 都已同步,然后我们才能正常打开数据库。因此,运行以下 SQL 语句(如下所示)来确定数据文件是否已同步。请注意,我们查询的是 V$DATAFILE_HEADER,因为我们想知道物理数据文件头中记录的 SCN,而不是 V$DATAFILE,后者从控制文件中获取信息。
select status, checkpoint_change#,
to_char(checkpoint_time, 'DD-MON-YYYY HH24:MI:SS') as checkpoint_time,
count(*)
from v$datafile_header
group by status, checkpoint_change#, checkpoint_time
order by status, checkpoint_change#, checkpoint_time;
上述查询的结果必须为联机数据文件返回一行且仅一行,这意味着它们已根据 SCN 同步。否则,如果结果为联机数据文件返回多行,则数据文件仍未同步。在这种情况下,我们需要应用归档日志或重做日志来同步所有联机数据文件。顺便说一下,请注意 V$DATAFILE_HEADER 中的 CHECKPOINT_TIME,它指示数据文件恢复的日期和时间。
要验证整个数据库是否已恢复到相同的 SCN:
select checkpoint_change# from v$database;