Oracle 9i on Linux RHEL 4
имеются старе холодные копии от 2015-05-08 и старее + архивлоги
копия от 2015-05-08 нормальная, проверено, поднимается работает.
текущее состояние базы так же сохранил.
случилось...
"упал" один из винтов и унес с собой все индексы + реду на этом диске (redo2)
автор |
---|
LOGFILE GROUP 1 ( '/oradata/KTSR/redo/redo01.log', '/oradata/KTSR/redo2/redo01.log', '/oradata/KTSR/redo3/redo01.log' ) SIZE 100M, GROUP 2 ( '/oradata/KTSR/redo/redo02.log', '/oradata/KTSR/redo2/redo02.log', '/oradata/KTSR/redo3/redo02.log' ) SIZE 100M, GROUP 3 ( '/oradata/KTSR/redo/redo03.log', '/oradata/KTSR/redo2/redo03.log', '/oradata/KTSR/redo3/redo03.log' ) SIZE 100M
|
но я так понимаю они дублируются по другим местоположениям.
распаковываю старую холодную копию от 2015-05-08, пытаюсь накатить архивлоги,
recover automatic database until time '2015-08-DD:HH:MM:SS';
но восстановление на любой момент времени, даже за пару недель до предполагаемого краха, всегда заканчивается подобной ошибкой:
автор |
---|
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01245: offline file 8 will be lost if RESETLOGS is done ORA-01110: data file 8: '/oradata/KTSR/idx/saridx01.dbf'
|
в алертлоге на этот момент:
автор |
---|
ORA-00313: open failed for members of log group 3 of thread 1 Thu Oct 8 13:51:42 2015 Recovery of Online Redo Log: Thread 1 Group 3 Seq 1270 Reading mem 0 Mem# 0 errs 0: /oradata/KTSR/redo/redo03.log Mem# 2 errs 0: /oradata/KTSR/redo3/redo03.log Terminal Recovery: done UNTIL CHANGE 604656662 ORA-1547 signalled during: ALTER DATABASE RECOVER automatic database until t...
|
попробовал ее открыть в NORESETLOGS
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open noresetlogs;
alter database open noresetlogs
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oradata/KTSR/data/system01.dbf'
SQL> recover datafile 1;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 2 needs media recovery
ORA-01110: data file 2: '/oradata/KTSR/undo/undotbs01.dbf'
SQL> recover datafile 2;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 3 needs media recovery
ORA-01110: data file 3: '/oradata/KTSR/data/drsys01.dbf'
SQL> recover datafile 3
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 4 needs media recovery
ORA-01110: data file 4: '/oradata/KTSR/data/tools01.dbf'
SQL> recover datafile 4
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: '/oradata/KTSR/data/users01.dbf'
SQL> recover datafile 5;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '/oradata/KTSR/data/xdb01.dbf'
SQL> recover datafile 6
Media recovery complete.
SQL> alter database open
2 ;
alter database open
*
ERROR at line 1:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '/oradata/KTSR/data/sardata01.dbf'
SQL> recover datafile 7;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: '/oradata/KTSR/data/sarlog01.dbf'
SQL> recover datafile 9;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 10 needs media recovery
ORA-01110: data file 10: '/oradata/KTSR/data/sarprov01.dbf'
SQL> recover datafile 10
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 11 needs media recovery
ORA-01110: data file 11: '/oradata/KTSR/data/sartc01.dbf'
SQL> recover datafile 11
Media recovery complete.
SQL> alter database open;
Database altered.
вроде открылась, но... индексы не подхватились, клиент не подключается.
в TOADовском запросе
SELECT t.tablespace_name "Tablespace", 'Datafile' "File Type",
t.status "Tablespace Status", d.status "File Status",
ROUND ((d.max_bytes - NVL (f.sum_bytes, 0)) / 1024 / 1024,
2
) "Used MB",
ROUND (NVL (f.sum_bytes, 0) / 1024 / 1024, 2) "Free MB",
t.initial_extent "Initial Extent", t.next_extent "Next Extent",
t.min_extents "Min Extents", t.max_extents "Max Extents",
t.pct_increase "Pct Increase",
SUBSTR (d.file_name, 1, 80) "Datafile name"
FROM (SELECT tablespace_name, file_id, SUM (BYTES) sum_bytes
FROM dba_free_space
GROUP BY tablespace_name, file_id) f,
(SELECT tablespace_name, file_name, file_id, MAX (BYTES) max_bytes,
status
FROM dba_data_files
GROUP BY tablespace_name, file_name, file_id, status) d,
dba_tablespaces t
WHERE t.tablespace_name = d.tablespace_name
AND f.tablespace_name(+) = d.tablespace_name
AND f.file_id(+) = d.file_id
GROUP BY t.tablespace_name,
d.file_name,
t.initial_extent,
t.next_extent,
t.min_extents,
t.max_extents,
t.pct_increase,
t.status,
d.max_bytes,
f.sum_bytes,
d.status
UNION ALL
SELECT h.tablespace_name, 'Tempfile', ts.status, t.status,
ROUND (SUM (NVL (p.bytes_used, 0)) / 1048576, 2),
ROUND ( SUM ((h.bytes_free + h.bytes_used) - NVL (p.bytes_used, 0))
/ 1048576,
2
),
-1, -- initial extent
-1, -- initial extent
-1, -- min extents
-1, -- max extents
-1, -- pct increase
t.file_name
FROM SYS.v_$temp_space_header h,
SYS.v_$temp_extent_pool p,
SYS.dba_temp_files t,
SYS.dba_tablespaces ts
WHERE p.file_id(+) = h.file_id
AND p.tablespace_name(+) = h.tablespace_name
AND h.file_id = t.file_id
AND h.tablespace_name = t.tablespace_name
AND ts.tablespace_name = h.tablespace_name
GROUP BY h.tablespace_name, t.status, t.file_name, ts.status
ORDER BY 1, 5 DESC
для файлов SAR_IDX все размеры по нулям, буд-то их нет, но они есть и читаются и пишутся прекрасно (на уровне файловой системы)
думается что какая-то бодяга с контроллами... ? :(
как вылечить?