✨ 1.3 Oracle数据库归档状态
SQL> archive log list
archive log list 是 Oracle SQL*Plus 中一个非常实用的命令,用于查看数据库的归档日志模式状态以及当前归档日志的序列信息。它通常由 DBA 在执行备份、恢复或排查归档空间问题时使用。
一、命令作用
执行该命令可以快速了解:
- 数据库是否处于归档模式(Archive Mode)
- 自动归档是否开启
- 归档日志的目标位置
- 当前在线日志的序列号及下一个需要归档的日志序列
二、如何执行
在 SQL*Plus 中以 SYSDBA 身份连接:
sqlplus / as sysdba
SQL> archive log list;
三、输出示例与字段解释
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/archivelog
Oldest online log sequence 152
Next log sequence to archive 154
Current log sequence 154
| 字段 | 含义 |
|---|---|
| Database log mode | 显示数据库的归档模式:Archive Mode 表示已开启归档,No Archive Mode 表示未开启 |
| Automatic archival | 自动归档是否启用,通常为 Enabled(即后台进程 ARCn 会自动归档) |
| Archive destination | 归档日志的存储路径(可能显示 USE_DB_RECOVERY_FILE_DEST 如果使用了快速恢复区) |
| Oldest online log sequence | 当前在线日志组中最旧的日志序列号,该序列之前的所有日志都已归档 |
| Next log sequence to archive | 下一个需要归档的日志序列号(即当前正在写入的日志组完成后将归档的序列) |
| Current log sequence | 当前正在写入的日志序列号 |
四、常用相关操作
1. 查看所有归档目标
SHOW PARAMETER log_archive_dest;
可以显示所有配置的归档目标(如 log_archive_dest_1, log_archive_dest_2 等)。
2. 查看归档日志空间使用(快速恢复区)
如果使用了快速恢复区(FRA):
SELECT * FROM V$RECOVERY_FILE_DEST;
SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
3. 开启/关闭归档模式(需数据库在 MOUNT 状态下操作)
-- 开启归档模式(需要先 clean shutdown 数据库,然后 startup mount)
ALTER DATABASE ARCHIVELOG;
-- 开启自动归档
ALTER DATABASE ARCHIVELOG AUTO ON;
-- 关闭归档模式(需在 MOUNT 状态下)
ALTER DATABASE NOARCHIVELOG;
4. 手动归档当前日志组
ALTER SYSTEM ARCHIVE LOG CURRENT;
五、常见问题与应对
1. 归档日志空间满导致数据库挂起
当归档目标空间写满时,数据库会暂停事务,并报 ORA-00257: archiver error。解决方法:
- 增加空间(如添加新的归档目标、扩展磁盘)
- 清理过期或已备份的归档日志(使用 RMAN 或操作系统删除)
2. 如何安全删除归档日志?
推荐使用 RMAN 删除已备份的归档日志:
rman target /
DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE DISK;
或根据时间删除:
DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';
3. 查看归档日志生成频率
可以通过 V$LOG_HISTORY 或 V$ARCHIVED_LOG 查看:
SELECT TRUNC(COMPLETION_TIME) DAY, COUNT(*) ARCHIVES
FROM V$ARCHIVED_LOG
GROUP BY TRUNC(COMPLETION_TIME)
ORDER BY 1;
六、结合巡检场景
在数据库巡检中,archive log list 是必查项之一,主要用于:
- 确认归档模式是否符合业务需求(生产库通常应开启归档)
- 检查归档目标空间是否足够(防止空间写满)
- 监控当前日志切换频率,评估日志组大小是否合理
如果发现 Next log sequence to archive 和 Current log sequence 相差很大,或者 Oldest online log sequence 一直不变,可能表示归档进程异常或目标不可写,需要进一步检查警告日志。
如果需要针对某个具体场景(如归档空间清理、归档日志备份策略等)进一步了解,可以提供更多信息,我为你详细说明。
阅读:159
发布时间: