프린트 하기

OS 환경 : Oracle Linux 8.7 (64bit)

 

DB 환경 : Oracle Database 19.28.0.0

 

에러 : ORA-27037: unable to obtain file status

datapump로 parallel로 import시 발생하는 에러
이전 게시글에서는 ORA-48128: opening of a symbolic link is disallowed가 발생했는데
참고 : ORA-48128: opening of a symbolic link is disallowed ( https://positivemh.tistory.com/1345 )
이번에는 해당 에러를 제외한 에러들만 발생함

 

 

impdp시 에러가 발생함

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
33
34
35
36
$ impdp system/oracle directory=testdir dumpfile=20260308_expdp_link_schema_%U.dmp logfile=20260308_expdp_link_schema.log parallel=4
(수행중)
..
ORA-31693: Table data object "APUSER"."DUMMY3" failed to load/unload and is being skipped due to error:
ORA-39155: error expanding dump file name "/oraimsi/20260308_expdp_link_schema_01.dmp"
ORA-19505: failed to identify file "/oraimsi/20260308_expdp_link_schema_01.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
 . . imported "APUSER"."DUMMY4"                            92.93 MB  810714 rows
 . . imported "APUSER"."DUMMY5"                            94.94 MB  325507 rows
 . . imported "APUSER"."DUMMY6"                            86.29 MB 1077658 rows
 . . imported "APUSER"."DUMMY7"                            93.68 MB 1164054 rows
 . . imported "APUSER"."DUMMY8"                            92.04 MB 1144852 rows
 . . imported "APUSER"."DUMMY9"                            86.02 MB  314745 rows
 . . imported "APUSER"."DUMMY10"                           87.58 MB 2427319 rows
 . . imported "APUSER"."DUMMY11"                           85.14 MB  479829 rows
ORA-31693: Table data object "APUSER"."DUMMY12" failed to load/unload and is being skipped due to error:
ORA-39155: error expanding dump file name "/oraimsi/20260308_expdp_link_schema_03.dmp"
ORA-19505: failed to identify file "/oraimsi/20260308_expdp_link_schema_03.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
 . . imported "APUSER"."DUMMY13"                           76.72 MB 1142388 rows
 . . imported "APUSER"."DUMMY14"                           12.15 MB   59268 rows
 . . imported "APUSER"."DUMMY15"                           76.47 MB  295532 rows
 . . imported "APUSER"."DUMMY16"                           72.63 MB  350628 rows
ORA-31693: Table data object "APUSER"."DUMMY17" failed to load/unload and is being skipped due to error:
ORA-39155: error expanding dump file name "/oraimsi/20260308_expdp_link_schema_03.dmp"
ORA-19505: failed to identify file "/oraimsi/20260308_expdp_link_schema_03.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
 . . imported "APUSER"."DUMMY18"                           65.33 MB  879548 rows
 . . imported "APUSER"."DUMMY19"                           65.07 MB  366576 rows
 . . imported "APUSER"."DUMMY20"                           61.11 MB 1053579 rows

impdp가 수행되면서 에러가 발생함
dumpfile을 읽기는 하는데 일부만 읽는것 같고 일부는 못읽는것 처럼 보임

 

 

해결 방법 : datapump시 cluster=no 옵션 사용

현재 rac로 구성되어 있는 db에 import 중임

 

 

expdp시에도 asis db가 rac여서 cluster=no 옵션을 사용 했었음
하지만 impdp시에는 rac임에도 cluster=no 옵션을 미사용 했었음

 

 

rac의 경우 dumpfile이 있는 directory 경로가 양쪽에 모두 보여야 import 작업을 정상적으로 수행할 수 있음
하지만 현재 1번 노드에만 마운트 되어있어 문제가 발생하였음

 

 

경로 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#1번 노드
$ df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             4.0M     0  4.0M   0% /dev
tmpfs                3.9G  1.1M  3.9G   1% /dev/shm
tmpfs                1.6G   12M  1.6G   1% /run
/dev/mapper/ol-root   92G   24G   69G  26% /
/dev/mapper/oraimsi  500G  450G   50G  90% /oraimsi
/dev/sda1            448M  404M   44M  91% /boot
tmpfs                794M   52K  794M   1% /run/user/42
 
#2번 노드
$ df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             4.0M     0  4.0M   0% /dev
tmpfs                3.9G  1.1M  3.9G   1% /dev/shm
tmpfs                1.6G   12M  1.6G   1% /run
/dev/mapper/ol-root   92G   24G   69G  26% /
/dev/sda1            448M  404M   44M  91% /boot
tmpfs                794M   52K  794M   1% /run/user/42
tmpfs                794M   36K  794M   1% /run/user/0

2번 노드는 /oraimsi가 없음

 

 

impdp시 cluster=no 옵션 사용

1
2
$ impdp system/oracle directory=testdir dumpfile=20260308_expdp_link_schema_%U.dmp logfile=20260308_expdp_link_schema.log parallel=4 cluster=no
(정상 수행됨)

 

 

원인 : RAC 환경에서 directory 경로가 양쪽노드에 마운트 되지 않은 문제

RAC 환경에서는 dumpfile이 위치한 directory 경로가 모든 노드(양쪽)에 동일하게 마운트되어 있어야 정상적인 import 작업이 가능함
경로가 양쪽 모두에 보여야 Data Pump가 여러 노드에 워커 프로세스를 자동으로 분배하여 빠르고 효과적으로 병렬(Parallel) import를 수행할 수 있음
하지만 현재 덤프 파일이 1번 노드에만 마운트되어 있어 2번 노드에 할당된 워커 프로세스가 파일을 읽지 못해 에러가 발생하였음
참고로 덤프 파일 경로가 전체 노드에 공유되지 않은 환경이거나 분산 처리로 인한 추가 오버헤드를 피하고 싶을 때 cluster=no 옵션을 적용하여 로컬 노드에서만 작업을 수행하도록 제한할 수 있음

 

 

참조 : 

https://mikedietrichde.com/2019/07/15/behavior-change-in-oracle-18c-19c-no-symbolic-links-for-data-pump-directories/
https://docs.oracle.com/en/database/oracle/oracle-database/18/upgrd/initialization-parameter-changes-oracle-database-18c.html#GUID-C03F4062-9AB6-4FFE-8CF8-28F8AF014783