프린트 하기 URL 복사

OS 환경 : Oracle Linux 8.7 (64bit)

 

DB 환경 : Oracle Database 19.27.0.0

 

에러 : ORA-19502: write error on file "/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_9.LOG", block number 2566145 (block size=512)

asm to fs로 clone db 생성 시 파일시스템 공간 부족으로 인해 redo가 제대로 생성되지 못하고 에러가 발생한 문제

 

 

현재 redo 경로 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SQL> 
set lines 200 pages 1000
col member for a60
select l.group#, member, l.status, bytes/1024/1024 mb, sequence#
from v$log l, v$logfile f
where f.group# = l.group#
order by 1,2;
 
    GROUP# MEMBER                                                       STATUS                   MB  SEQUENCE#
---------- ------------------------------------------------------------ ---------------- ---------- ----------
         1 +DATA/ORA19DBFS/ONLINELOG/group_1.287.1223736640             INACTIVE               2048       1136
         1 +DATA/ORA19DBFS/ONLINELOG/group_1.312.1223736659             INACTIVE               2048       1136
         2 +DATA/ORA19DBFS/ONLINELOG/group_2.259.1220526317             INACTIVE               2048       1137
         2 +DATA/ORA19DBFS/ONLINELOG/group_2.313.1223736715             INACTIVE               2048       1137
         3 +DATA/ORA19DBFS/ONLINELOG/group_3.260.1220526321             ACTIVE                 2048       1138
         3 +DATA/ORA19DBFS/ONLINELOG/group_3.314.1223736719             ACTIVE                 2048       1138
         4 +DATA/ORA19DBFS/ONLINELOG/group_4.261.1220526325             CURRENT                2048       1139
         4 +DATA/ORA19DBFS/ONLINELOG/group_4.315.1223736721             CURRENT                2048       1139
         5 +DATA/ORA19DBFS/ONLINELOG/group_5.262.1220526327             INACTIVE               2048       1135
         5 +DATA/ORA19DBFS/ONLINELOG/group_5.316.1223736723             INACTIVE               2048       1135
         6 +DATA/ORA19DBFS/ONLINELOG/group_6.270.1220527063             ACTIVE                 2048       1016
         6 +DATA/ORA19DBFS/ONLINELOG/group_6.317.1223736725             ACTIVE                 2048       1016
         7 +DATA/ORA19DBFS/ONLINELOG/group_7.271.1220527067             CURRENT                2048       1017
         7 +DATA/ORA19DBFS/ONLINELOG/group_7.318.1223736729             CURRENT                2048       1017
         8 +DATA/ORA19DBFS/ONLINELOG/group_8.272.1220527069             INACTIVE               2048       1013
         8 +DATA/ORA19DBFS/ONLINELOG/group_8.319.1223736731             INACTIVE               2048       1013
         9 +DATA/ORA19DBFS/ONLINELOG/group_9.273.1220527073             INACTIVE               2048       1014
         9 +DATA/ORA19DBFS/ONLINELOG/group_9.320.1223736733             INACTIVE               2048       1014
        10 +DATA/ORA19DBFS/ONLINELOG/group_10.274.1220527077            INACTIVE               2048       1015
        10 +DATA/ORA19DBFS/ONLINELOG/group_10.321.1223736735            INACTIVE               2048       1015
 
20 rows selected.

 

 

redo rename 수행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SQL>
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_1.287.1223736640' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_1.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_2.259.1220526317' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_2.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_3.260.1220526321' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_3.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_4.261.1220526325' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_4.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_5.262.1220526327' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_5.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_6.270.1220527063' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_6.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_7.271.1220527067' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_7.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_8.272.1220527069' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_8.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_9.273.1220527073' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_9.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_10.274.1220527077' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G1_10.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_1.312.1223736659' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_1.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_2.313.1223736715' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_2.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_3.314.1223736719' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_3.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_4.315.1223736721' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_4.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_5.316.1223736723' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_5.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_6.317.1223736725' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_6.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_7.318.1223736729' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_7.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_8.319.1223736731' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_8.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_9.320.1223736733' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_9.LOG';
alter database rename file '+DATA/ORA19DBFS/ONLINELOG/group_10.321.1223736735' to '/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_10.LOG';
 
Database altered.

 

 

redo 경로 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SQL> 
set lines 200 pages 1000
col member for a60
select l.group#, member, l.status, bytes/1024/1024 mb, sequence#
from v$log l, v$logfile f
where f.group# = l.group#
order by 1,2;
 
    GROUP# MEMBER                                                       STATUS                   MB  SEQUENCE#
---------- ------------------------------------------------------------ ---------------- ---------- ----------
         1 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_1.LOG               INACTIVE               2048       1136
         1 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_1.LOG               INACTIVE               2048       1136
         2 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_2.LOG               INACTIVE               2048       1137
         2 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_2.LOG               INACTIVE               2048       1137
         3 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_3.LOG               ACTIVE                 2048       1138
         3 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_3.LOG               ACTIVE                 2048       1138
         4 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_4.LOG               CURRENT                2048       1139
         4 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_4.LOG               CURRENT                2048       1139
         5 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_5.LOG               INACTIVE               2048       1135
         5 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_5.LOG               INACTIVE               2048       1135
         6 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_6.LOG               ACTIVE                 2048       1016
         6 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_6.LOG               ACTIVE                 2048       1016
         7 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_7.LOG               CURRENT                2048       1017
         7 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_7.LOG               CURRENT                2048       1017
         8 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_8.LOG               INACTIVE               2048       1013
         8 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_8.LOG               INACTIVE               2048       1013
         9 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_9.LOG               INACTIVE               2048       1014
         9 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_9.LOG               INACTIVE               2048       1014
        10 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_10.LOG              INACTIVE               2048       1015
        10 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_10.LOG              INACTIVE               2048       1015
 
20 rows selected.

현재는 redo 경로가 컨틑롤파일 상에서만 변경되었고
실제 OS에는 존재하지 않음

 

 

db를 resetlogs로 기동

1
2
3
4
5
6
7
8
9
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-19502: write error on file "/app/oracle/oradata/ORA19DBFS_BK/REDO_G2_9.LOG", block number 2566145 (block size=512)
ORA-27072: File I/O error
Additional information: 4
Additional information: 2566145
Additional information: 3584

조금 대기후 에러 발생함

 

 

에러 발생함

1
2
3
4
5
6
7
8
9
10
11
12
$ df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             3.9G     0  3.9G   0% /dev
tmpfs                7.0G     0  7.0G   0% /dev/shm
tmpfs                3.9G   59M  3.9G   2% /run
tmpfs                3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/ol-root   80G   62G   19G  78% /
/dev/sda1            100G  100G    0G 100% /app
/dev/sdb1           1014M  310M  705M  31% /boot
tmpfs                797M   12K  797M   1% /run/user/42
tmpfs                797M     0  797M   0% /run/user/54321
tmpfs                797M     0  797M   0% /run/user/0

현재 redo 저장 경로인 /app 파일시스템이 100% full임

 

 

redo 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SQL> 
set lines 200 pages 1000
col member for a60
select l.group#, member, l.status, bytes/1024/1024 mb, sequence#
from v$log l, v$logfile f
where f.group# = l.group#
order by 1,2;
 
    GROUP# MEMBER                                                       STATUS                   MB SEQUENCE#
---------- ------------------------------------------------------------ ---------------- ---------- ----------
         1 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_1.LOG               UNUSED                 2048          0
         1 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_1.LOG               UNUSED                 2048          0
         2 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_2.LOG               UNUSED                 2048          0
         2 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_2.LOG               UNUSED                 2048          0
         3 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_3.LOG               UNUSED                 2048          0
         3 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_3.LOG               UNUSED                 2048          0
         4 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_4.LOG               CURRENT                2048          0
         4 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_4.LOG               CURRENT                2048          0
         5 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_5.LOG               UNUSED                 2048          0
         5 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_5.LOG               UNUSED                 2048          0
         6 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_6.LOG               UNUSED                 2048          0
         6 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_6.LOG               UNUSED                 2048          0
         7 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_7.LOG               CURRENT                2048          0
         7 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_7.LOG               CURRENT                2048          0
         8 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_8.LOG               UNUSED                 2048          0
         8 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_8.LOG               UNUSED                 2048          0
         9 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_9.LOG               CLEARING               2048          0
         9 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_9.LOG               CLEARING               2048          0
        10 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_10.LOG              CLEARING               2048          0
        10 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_10.LOG              CLEARING               2048          0
 
20 rows selected.

1~8번까지 redo는 cleaning이 완료되어 unused 상태가 되었지만 9번, 10번 /app 경로의 용량 부족으로 redo는 cleaning이 완료되지 못함
실제 파일도 1~8번 redo만 생성됨

 

 

이상태에서 다시 db를 open 상태로 변경하려 하면 에러가 발생함

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--옵션 없이 open 시도시
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
 
--noresetlogs로 open 시도시
SQL> alter database open noresetlogs;
alter database open noresetlogs
*
ERROR at line 1:
ORA-01588: must use RESETLOGS option for database open
 
--resetlogs로 open 시도시
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [ksvworkmsgalloc: bad reaper], [0x080010003], [], [], [], [], [], [], [], [], [], []

 

 

 

해결 방법 : os 공간 확보 후 redo 수동 cleaning 후 open 재수행

os 공간 확보 후 redo 수동 cleaning 후 open 재수행
일단 db 종료

1
2
3
4
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

 

 

os 경로 공간 확보
(미사용 파일 삭제 등)

 

 

mount 상태로 기동

1
2
3
4
5
6
7
8
9
SQL> startup mount
ORACLE instance started.
 
Total System Global Area 1.0737E+10 bytes
Fixed Size                    8950920 bytes
Variable Size                 1577058304 bytes
Database Buffers         9126805504 bytes
Redo Buffers                   24600576 bytes
Database mounted.

 

 

9, 10번 redo 수동 cleaning 수행

1
2
3
4
5
6
7
SQL> alter database clear logfile group 9;
 
Database altered.
 
SQL> alter database clear logfile group 10;
 
Database altered.

 

 

redo 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SQL> 
set lines 200 pages 1000
col member for a60
select l.group#, member, l.status, bytes/1024/1024 mb, sequence#
from v$log l, v$logfile f
where f.group# = l.group#
order by 1,2;
 
    GROUP# MEMBER                                                       STATUS                   MB SEQUENCE#
---------- ------------------------------------------------------------ ---------------- ---------- ----------
         1 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_1.LOG                                UNUSED                       2048             0
         1 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_1.LOG                                UNUSED                       2048             0
         2 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_2.LOG                                UNUSED                       2048             0
         2 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_2.LOG                                UNUSED                       2048             0
         3 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_3.LOG                                UNUSED                       2048             0
         3 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_3.LOG                                UNUSED                       2048             0
         4 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_4.LOG                                CURRENT                2048          1139
         4 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_4.LOG                                CURRENT                2048          1139
         5 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_5.LOG                                UNUSED                       2048             0
         5 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_5.LOG                                UNUSED                       2048             0
         6 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_6.LOG                                UNUSED                       2048             0
         6 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_6.LOG                                UNUSED                       2048             0
         7 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_7.LOG                                CURRENT                2048          1017
         7 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_7.LOG                                CURRENT                2048          1017
         8 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_8.LOG                                UNUSED                       2048             0
         8 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_8.LOG                                UNUSED                       2048             0
         9 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_9.LOG                                UNUSED                       2048             0
         9 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_9.LOG                                UNUSED                       2048             0
        10 /app/oracle/oradata/ORA19DBFS_BK/REDO_G1_10.LOG                                UNUSED                       2048             0
        10 /app/oracle/oradata/ORA19DBFS_BK/REDO_G2_10.LOG                                UNUSED                       2048             0
 
20 rows selected.

정상적으로 unused 상태가 됨

 

 

db resetlogs로 기동

1
2
3
SQL> alter database open resetlogs;
 
Database altered.

정상 기동됨

 

 

원인 : os 파일시스템 공간 부족으로 인해 open resertlogs 명령 수행시 redo cleaning에 문제가 발생함

os 파일시스템 공간 부족으로 인해 open resertlogs 명령 수행시
일부 redo만 cleaning되고 일부 redo는 되지 않아 발생한 문제

 

 

참조 : 

오라클 12c R2 RAC to RAC ADG redo log 삭제 및 추가 및 리사이즈 하기 ( https://positivemh.tistory.com/832 )