프린트 하기 URL 복사

OS 환경 : Oracle Linux 9.6 (64bit)

 

DB 환경 : Oracle Database 19.28.0.0

 

방법 : 오라클 19c ADG 구성 중 db_file_name_convert, log_file_name_convert 파라미터 테스트

본문에서는 adg duplicate 명령 수행시 db_file_name_convert, log_file_name_convert 파라미터 설정에 따라 어떻게 동작하는지를 확인해봄
참고로 환경은 Restart(ASM) to Restart(ASM) 환경임

 

 

테스트
케이스1. db_file_name_convert에 ASM to FS 복제할때처럼 ASM 전체 경로 모두 삽입('+DATA/ORACLE19/DATAFILE','+DATA/ORACLE19STB/DATAFILE')
pfile 수정

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
$ vi initoracle19stb.ora
*.audit_file_dest='/app/oracle/admin/oracle19stb/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='+DATA/control01.ctl'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_file_name_convert='+DATA/ORACLE19/DATAFILE','+DATA/ORACLE19STB/DATAFILE','+DATA/ORACLE19/TEMPFILE','+DATA/ORACLE19STB/TEMPFILE'
*.log_file_name_convert='+DATA/ORACLE19/DATAFILE','+DATA/ORACLE19STB/DATAFILE'
*.db_unique_name='oracle19stb'
*.db_name='oracle19'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oracle19stbXDB)'
*.fal_client='ORACLE19STB'
*.fal_server='ORACLE19'
*.log_archive_config='DG_CONFIG=(oracle19,oracle19stb)'
*.log_archive_dest_1='location=/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=oracle19stb'
*.log_archive_dest_2='service=oracle19 lgwr async noaffirm valid_for=(online_logfiles,primary_role) db_unique_name=oracle19'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=4
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=522m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1564m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

 

 

nomount 기동 후 rman duplicate 수행

1
2
3
4
SQL> startup force nomount
$ rman target sys/oracle@oracle19 auxiliary sys/oracle@oracle19stb
RMAN> duplicate target database for standby from active database dorecover;
(진행됨)

 

 

하지만 alert log 확인시 아래 에러 발생함

1
2
3
4
5
6
7
8
9
10
11
12
13
$ tail -300f /app/oracle/diag/rdbms/oracle19stb/oracle19stb/trace/alert_oracle19stb.log
*****************************************
WARNING: The converted filename '+DATA/ORACLE19STB/DATAFILE/users.265.1220456367'
         is an ASM fully qualified filename.
         Changing the filename to '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295'.
         Please rename it accordingly.
*****************************************
2026-06-08T21:20:38.810028+09:00
Errors in file /app/oracle/diag/rdbms/oracle19stb/oracle19stb/trace/oracle19stb_mz00_19898.trc:
ORA-01110: data file 4: '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295'
ORA-01565: error in identifying file '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295'
ORA-17503: ksfdopn:2 Failed to open file +DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295
ORA-15012: ASM file '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295' does not exist

 

 

케이스2. db_file_name_convert에 ASM 디스크그룹 이름만 삽입('+DATA/ORACLE19/DATAFILE','+DATA')
pfile 수정

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
$ vi initoracle19stb.ora
*.audit_file_dest='/app/oracle/admin/oracle19stb/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='+DATA/control01.ctl'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_file_name_convert='+DATA/ORACLE19/DATAFILE','+DATA','+DATA/ORACLE19/TEMPFILE','+DATA'
*.log_file_name_convert='+DATA/ORACLE19/DATAFILE','+DATA'
*.db_unique_name='oracle19stb'
*.db_name='oracle19'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oracle19stbXDB)'
*.fal_client='ORACLE19STB'
*.fal_server='ORACLE19'
*.log_archive_config='DG_CONFIG=(oracle19,oracle19stb)'
*.log_archive_dest_1='location=/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=oracle19stb'
*.log_archive_dest_2='service=oracle19 lgwr async noaffirm valid_for=(online_logfiles,primary_role) db_unique_name=oracle19'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=4
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=522m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1564m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

 

 

nomount 기동 후 rman duplicate 수행

1
2
3
4
SQL> startup force nomount
$ rman target sys/oracle@oracle19 auxiliary sys/oracle@oracle19stb
RMAN> duplicate target database for standby from active database dorecover;
(진행됨)

 

 

하지만 alert log 확인시 케이스1과 동일한 에러 발생함

1
2
3
4
5
6
7
8
9
10
11
12
13
$ tail -300f /app/oracle/diag/rdbms/oracle19stb/oracle19stb/trace/alert_oracle19stb.log
*****************************************
WARNING: The converted filename '+DATA/users.265.1220456367'
         is an ASM fully qualified filename.
         Changing the filename to '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295'.
         Please rename it accordingly.
*****************************************
2026-06-08T21:22:51.264733+09:00
Errors in file /app/oracle/diag/rdbms/oracle19stb/oracle19stb/trace/oracle19stb_mz00_21186.trc:
ORA-01110: data file 4: '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295'
ORA-01565: error in identifying file '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295'
ORA-17503: ksfdopn:2 Failed to open file +DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295
ORA-15012: ASM file '+DATA/MUST_RENAME_THIS_DATAFILE_4.4294967295.4294967295' does not exist

 

 

케이스3. db_file_name_convert, log_file_name_convert 파라미터 주석처리 후 db_create_file_dest만 '+DATA'로 지정
pfile 수정

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
$ vi initoracle19stb.ora
*.audit_file_dest='/app/oracle/admin/oracle19stb/adump'
*.audit_trail='none'
*.compatible='19.0.0'
*.control_files='+DATA/control01.ctl'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
#*.db_file_name_convert='+DATA/ORACLE19/DATAFILE','+DATA','+DATA/ORACLE19/TEMPFILE','+DATA'
#*.log_file_name_convert='+DATA/ORACLE19/DATAFILE','+DATA'
*.db_unique_name='oracle19stb'
*.db_name='oracle19'
*.diagnostic_dest='/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oracle19stbXDB)'
*.fal_client='ORACLE19STB'
*.fal_server='ORACLE19'
*.log_archive_config='DG_CONFIG=(oracle19,oracle19stb)'
*.log_archive_dest_1='location=/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=oracle19stb'
*.log_archive_dest_2='service=oracle19 lgwr async noaffirm valid_for=(online_logfiles,primary_role) db_unique_name=oracle19'
*.log_archive_format='%t_%s_%r.arc'
*.log_archive_max_processes=4
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=522m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1564m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

 

 

nomount 기동 후 rman duplicate 수행

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
SQL> startup force nomount
$ rman target sys/oracle@oracle19 auxiliary sys/oracle@oracle19stb
RMAN> duplicate target database for standby from active database dorecover;
 
Recovery Manager: Release 19.0.0.0.0 - Production on Mon Jun 8 21:25:00 2026
Version 19.28.0.0.0
 
Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
 
connected to target database: ORACLE19 (DBID=3400652514)
connected to auxiliary database: ORACLE19 (not mounted)
 
RMAN> duplicate target database for standby from active database dorecover;
duplicate target database for standby from active database dorecover;
Starting Duplicate Db at 2026-06-08 21:25:03
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=24 device type=DISK
current log archived
 
contents of Memory Script:
{
   backup as copy reuse
   passwordfile auxiliary format  '/app/oracle/product/19c/dbs/orapworacle19stb'   ;
}
executing Memory Script
 
Starting backup at 2026-06-08 21:25:06
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=273 device type=DISK
Finished backup at 2026-06-08 21:25:08
duplicating Online logs to Oracle Managed File (OMF) location
duplicating Datafiles to Oracle Managed File (OMF) location
 
contents of Memory Script:
{
   restore clone from service  'oracle19' standby controlfile;
}
executing Memory Script
 
Starting restore at 2026-06-08 21:25:08
using channel ORA_AUX_DISK_1
 
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
output file name=+DATA/control01.ctl
Finished restore at 2026-06-08 21:25:12
 
contents of Memory Script:
{
   sql clone 'alter database mount standby database';
}
executing Memory Script
 
sql statement: alter database mount standby database
 
contents of Memory Script:
{
   set newname for clone tempfile  1 to new;
   switch clone tempfile all;
   set newname for clone datafile  1 to new;
   set newname for clone datafile  2 to new;
   set newname for clone datafile  3 to new;
   set newname for clone datafile  4 to new;
   restore
   from  nonsparse   from service
 'oracle19'   clone database
   ;
   sql 'alter system archive log current';
}
executing Memory Script
 
executing command: SET NEWNAME
 
renamed tempfile 1 to +DATA in control file
 
executing command: SET NEWNAME
 
executing command: SET NEWNAME
 
executing command: SET NEWNAME
 
executing command: SET NEWNAME
 
Starting restore at 2026-06-08 21:25:17
using channel ORA_AUX_DISK_1
 
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to +DATA
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:35
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00002 to +DATA
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:08
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00003 to +DATA
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:03
channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00004 to +DATA
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2026-06-08 21:26:04
 
sql statement: alter system archive log current
current log archived
 
contents of Memory Script:
{
   restore clone force from service  'oracle19'
           archivelog from scn  1539416;
   switch clone datafile all;
}
executing Memory Script
 
Starting restore at 2026-06-08 21:26:05
using channel ORA_AUX_DISK_1
 
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=143
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_AUX_DISK_1: starting archived log restore to default destination
channel ORA_AUX_DISK_1: using network backup set from service oracle19
channel ORA_AUX_DISK_1: restoring archived log
archived log thread=1 sequence=144
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2026-06-08 21:26:07
 
datafile 1 switched to datafile copy
input datafile copy RECID=5 STAMP=1235424367 file name=+DATA/ORACLE19STB/DATAFILE/system.258.1235424319
datafile 2 switched to datafile copy
input datafile copy RECID=6 STAMP=1235424367 file name=+DATA/ORACLE19STB/DATAFILE/sysaux.259.1235424353
datafile 3 switched to datafile copy
input datafile copy RECID=7 STAMP=1235424367 file name=+DATA/ORACLE19STB/DATAFILE/undotbs1.260.1235424361
datafile 4 switched to datafile copy
input datafile copy RECID=8 STAMP=1235424367 file name=+DATA/ORACLE19STB/DATAFILE/users.261.1235424363
 
contents of Memory Script:
{
   set until scn  1539600;
   recover
   standby
   clone database
    delete archivelog
   ;
}
executing Memory Script
 
executing command: SET until clause
 
Starting recover at 2026-06-08 21:26:08
using channel ORA_AUX_DISK_1
 
starting media recovery
 
archived log for thread 1 with sequence 143 is already on disk as file /app/oracle/arch1_143_1220456354.arc
archived log for thread 1 with sequence 144 is already on disk as file /app/oracle/arch1_144_1220456354.arc
archived log file name=/app/oracle/arch1_143_1220456354.arc thread=1 sequence=143
archived log file name=/app/oracle/arch1_144_1220456354.arc thread=1 sequence=144
media recovery complete, elapsed time: 00:00:00
Finished recover at 2026-06-08 21:26:09
 
contents of Memory Script:
{
   delete clone force archivelog all;
}
executing Memory Script
 
released channel: ORA_DISK_1
released channel: ORA_AUX_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=273 device type=DISK
deleted archived log
archived log file name=/app/oracle/arch1_143_1220456354.arc RECID=1 STAMP=1235424365
deleted archived log
archived log file name=/app/oracle/arch1_144_1220456354.arc RECID=2 STAMP=1235424366
Deleted 2 objects
 
Finished Duplicate Db at 2026-06-08 21:26:14

문제없이 잘 수행됨

 

 

결론 : 결론 ASM to FS 인 경우는 fs의 경로를 다 적어줘야하고,
ASM to ASM인 경우는 db_file_name_convert, log_file_name_convert 파라미터는 지우거나 주석처리 후
OMF 방식인 db_create_file_dest='+DATA' 파라미터만 남겨둬야함

 

 

참조 : 

오라클 19c Restart(ASM) to 싱글(FS) ADG 구성 가이드 ( https://positivemh.tistory.com/1391 )
오라클 19c ADG Gap 발생시 rman duplicate 재수행 복구 시나리오 ( https://positivemh.tistory.com/1392 )
오라클 19c ADG Gap 발생시 rman 증분백업이용 복구 시나리오 ( https://positivemh.tistory.com/1394 )

http://erman-arslan-s-oracle-forum.124.s1.nabble.com/WARNING-The-converted-filename-is-an-ASM-fully-qualified-filename-td12462.html