【故障处理】遭遇ORA-00376&ORA-01110~慌了一批

2024年 7月 22日 79.3k 0

一个归档系统,收到要查询2013年的数据,启动应用程序,发现应用报错数据库文件有问题,我的天啊,这么个老系统,我备份还在不。。心慌但必须冷静

1. 启动应用程序报错:

ORA-00376: 此时无法读取文件 108
ORA-01110: 数据文件 108…

【故障处理】遭遇ORA-00376&ORA-01110~慌了一批-1

登录数据库,查询相关的数据也提示报错

【故障处理】遭遇ORA-00376&ORA-01110~慌了一批-2

2. 追查根源

(1) 查看物理文件
数据文件还在磁盘,更新时间显示6月26日凌晨,这个时间点,刚好是数据库正在做备份的时间,可能是当时断电导致

(2)查看文件的状态

select name, status from v$datafile order by file#;

PS: 查询发现除了系统表空间,其他文件都处于recover状态,需要进行介质恢复

3. 恢复数据

3.1 尝试恢复数据库文件108,遭遇ORA-00308

SQL> select file#,name,status from v$datafile where file#=108;

FILE# NAME STATUS
---------- -------------------------------------- -------
108 E:\ORADATA\XX\XXX_02.DBF RECOVER

> rman target /
RMAN > recover datafile 108;
ORA-00279: 更改 333025732781 (在 06/14/2024 05:20:42 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ARCHIVELOG\ARC68419_0805202371.001.ARC
ORA-00280: 更改 333025732781 (用于线程 1) 在序列 #68419 中

指定日志: {=suggested | filename | AUTO | CANCEL}

ORA-00308: 无法打开归档日志 'D:\ARCHIVELOG\ARC68419_0805202371.001.ARC'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

PS: 告警,提示找不到相关规定文件,查看磁盘的物理文件确实不存在。查看归档的备份,有相关日期的,先恢复归档日志

3.2 恢复相关归档日志

(1)查看需要进行恢复的归档日志,有220个文件

select g.SEQUENCE#,g.NAME,g.FIRST_TIME,g.NEXT_TIME from v$archived_log g
where g.SEQUENCE#>=68419

(2)恢复归档日志,登录rman进行恢复,由于数据量大,按服务器配置,开启并行 (时间比较久,具体看归档的大小)

run
{
set archivelog destination to 'D:\archivelog';
allocate channel ch1 type disk;
allocate channel ch2 type disk;
allocate channel ch3 type disk;
allocate channel ch4 type disk;
allocate channel ch5 type disk;
allocate channel ch6 type disk;
allocate channel ch7 type disk;
allocate channel ch8 type disk;
restore archivelog from logseq 68421 until logseq 68636;
release channel ch1;
release channel ch2;
release channel ch3;
release channel ch4;
release channel ch5;
release channel ch6;
release channel ch7;
release channel ch8;
}

3.3 恢复数据文件

RMAN> recover datafile 108 ;

启动 recover 于 22-7月 -24
使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 68419 已作为文件 D:\ARCHIVELOG\ARC68419_0805202371.001.ARC 存在于磁盘上
存档日志线程 1 序列 68420 已作为文件 D:\ARCHIVELOG\ARC68420_0805202371.001.ARC 存在于磁盘上
。。。省了一批

存档日志文件名 =D:\ARCHIVELOG\ARC68419_0805202371.001.ARC 线程 =1 序列 =68419
存档日志文件名 =D:\ARCHIVELOG\ARC68420_0805202371.001.ARC 线程 =1 序列 =68420
介质恢复完成, 用时: 00:00:02
完成 recover 于 22-7月 -24

3.4 online数据文件

SQL> alter database datafile 108 online ;

数据库已更改。

再次查询数据文件状态,都是online,已正常

SQL> select name, status from v$datafile order by file#;

到此,已经完成修复,应用正常启动。马上来一个全备(备份一定要有)

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论