一个维保客户和我说他们测试库删除了日志文件导致库无法启动,让我帮忙看看
客户现场现况
1. 磁盘空间使用100%
| [oracle@We1-db_Test ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 880K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda1 40G 38G 92M 100% / tmpfs 783M 0 783M 0% /run/user/0 | 2. 数据库redo被删除了部分,而且是active状态的被删除
| [oracle@We1-db_Test ~]$ ls -l /opt/app/oracle/oradata/orcl/redo0* -rw-r----- 1 oracle oinstall 52429312 Jan 15 15:29 /opt/app/oracle/oradata/orcl/redo04.log -rw-r----- 1 oracle oinstall 52429312 Jan 15 16:26 /opt/app/oracle/oradata/orcl/redo05.log SQL> select group#,SEQUENCE#,STATUS FROM V$lOG; GROUP# SEQUENCE# STATUS ---------- ---------- ---------------- 1 8989 CURRENT 2 0 UNUSED 5 0 UNUSED 4 0 UNUSED 3 8988 ACTIVE SQL> select member from v$logfile; MEMBER ----------------------------------------------------- /opt/app/oracle/oradata/orcl/redo03.log /opt/app/oracle/oradata/orcl/redo02.log /opt/app/oracle/oradata/orcl/redo01.log /opt/app/oracle/oradata/orcl/redo04.log /opt/app/oracle/oradata/orcl/redo05.log | 基于当前情况,直接open库无望,但是空间不足问题需要先解决,不然恢复过程中创建redo空间不足依旧会报错卡死,所以先清理了监听和alert等日志,系统空闲了3G多空间,可以进行恢复操作
| [oracle@We1-db_Test trace]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 880K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda1 40G 34G 3.9G 90% / tmpfs 783M 0 783M 0% /run/user/0 | 恢复数据库
1. 由于active redo丢失,毫无疑问,直接强制拉库,使用_allow_resetlogs_corruption参数开干
| SQL> startup mount pfile='/tmp/pfile'; ORACLE instance started. Total System Global Area 2455228416 bytes Fixed Size 2255712 bytes Variable Size 905970848 bytes Database Buffers 1526726656 bytes Redo Buffers 20275200 bytes Database mounted. SQL> recover database until cancel; ORA-00283: recovery session canceled due to errors ORA-01610: recovery using the BACKUP CONTROLFILE option must be done SQL> recover database using backup controlfile; ORA-00279: change 311982775 generated at 12/31/2025 17:35:11 needed for thread 1 ORA-00289: suggestion : /opt/app/oracle/fast_recovery_area/ORCL/archivelog/2026_01_16/o1_mf_1_8988_%u_.a rc ORA-00280: change 311982775 for thread 1 is in sequence #8988 Specify log: {=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [2663], [0], [311982792], [0], [311982833], [], [], [], [], [], [], [] Process ID: 11917 Session ID: 576 Serial number: 3 | alert日志报错
| Fri Jan 16 21:25:31 2026 Assigning activation ID 1750515127 (0x6856bdb7) Thread 1 opened at log sequence 1 Current log# 1 seq# 1 mem# 0: /opt/app/oracle/oradata/orcl/redo01.log Successful open of redo thread 1 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Fri Jan 16 21:25:31 2026 SMON: enabling cache recovery Errors in file /opt/app/oracle/diag/rdbms/orcl/we1db/trace/we1db_ora_11917.trc (incident=81753): ORA-00600: internal error code, arguments: [2663], [0], [311982792], [0], [311982833], [], [] Incident details in: /opt/app/oracle/diag/rdbms/orcl/we1db/incident/incdir_81753/we1db_ora_11917_i81753.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Errors in file /opt/app/oracle/diag/rdbms/orcl/we1db/trace/we1db_ora_11917.trc: ORA-00600: internal error code, arguments: [2663], [0], [311982792], [0], [311982833], [], [] Errors in file /opt/app/oracle/diag/rdbms/orcl/we1db/trace/we1db_ora_11917.trc: ORA-00600: internal error code, arguments: [2663], [0], [311982792], [0], [311982833], [], [] Error 600 happened during db open, shutting down database USER (ospid: 11917): terminating the instance due to error 600 Instance terminated by USER, pid = 11917 ORA-1092 signalled during: alter database open resetlogs... opiodr aborting process unknown ospid (11917) as a result of ORA-1092 Fri Jan 16 21:25:33 2026 ORA-1092 : opitsk aborting process | 不幸数据库遇到ORA-600 2663错误,这个故障在以前的文章中描述过,基本上和ORA-600 2662的处理思路类似,这里直接使用 atch_SCN for Linux进行恢复
2. 使用Patch_SCN处理数据库SCN
| SQL> startup nomount pfile='/tmp/pfile'; ORACLE instance started. Total System Global Area 2455228416 bytes Fixed Size 2255712 bytes Variable Size 905970848 bytes Database Buffers 1526726656 bytes Redo Buffers 20275200 bytes SQL>@rectl Control file created. SQL> recover database; Media recovery complete. |
| SQL> alter database open; Database altered. SQL> SELECT CURRENT_SCN FROM V$DATABASE; CURRENT_SCN ---------------- 322002903 | 到这里完成数据库open操作,后续逻辑导出完成恢复任务
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |