[2025-06-06] RAC환경에서 로컬 파일 시스템에 데이터 파일을 잘못 만든 후 ASM 영역으로 move하는 방법 (19c)
[실습
환경]
OS : Oracle Linux Server 7.9 (Linux rdb01d
5.4.17-2102.201.3.el7uek.x86_64)
DB : Oracle Database 19c Enterprise Edition
Release 19.0.0.0.0 - Production (Version 19.27.0.0.0)
RAC1 :
ol7ora19r1(192.168.0.21) : ORA19R1
RAC2 : ol7ora19r2(192.168.0.22) :
ORA19R2
0. 실수로
인해 RAC환경에서 filesystem에 데이터 파일을 생성
--RAC1번에서
CREATE
TABLESPACE TS_TEST DATAFILE 'DATA1' SIZE 100M AUTOEXTEND ON NEXT 50M
MAXSIZE 500M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT
AUTO;
--> +DATA1으로 했어야
하는데 DATA1으로 지정한
상황!!
col
file_name for a50
select file_name from DBA_DATA_FILES;
FILE_NAME
--------------------------------------------------
+DATA1_NEW/ORA19R/DATAFILE/system.264.1202825797
+DATA1_NEW/ORA19R/DATAFILE/sysaux.265.1202825873
+DATA1_NEW/ORA19R/DATAFILE/undotbs2.267.1202826057
+DATA1_NEW/ORA19R/DATAFILE/users.268.1202826071
/u01/app/oracle/product/19c/db_1/dbs/DATA1
+DATA1_NEW/ORA19R/DATAFILE/undotbs1.266.1202826029
--> /u01/app/oracle/product/19c/db_1/dbs/ 위치에 파일이 만들어진 상황
--RAC1번에서 새로 만든 테이블 스페이스에 테이블
생성하고 데이터 입력
create table sys.tb_test_1
(
col1 number
)
tablespace
ts_test
;
insert into tb_test_1 values(1);
commit;
--RAC2번에서는 아래와 같은 에러가
발생함
[2025-06-07:21:06:16][ol7ora19r2]<SYS@ORA19R2> select * from sys.tb_test_1;
select * from
sys.tb_test_1
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 2 - see DBWR
trace file
ORA-01110: data file 2:
'/u01/app/oracle/product/19c/db_1/dbs/DATA1'
--지금부터 해당 파일을 asm 영역으로(공유스토리지 영역으로) 옮겨야함!
--RAC1번에서
[ORA19R1:oracle@ol7ora19r1][/u01/app/oracle/product/19c/db_1/dbs]$ ls
-alrt
total 129868
-rw-r--r--. 1 oracle
oinstall 3079 May 14 2015
init.ora
drwxrwxr-x. 75 oracle oinstall 4096
Jun 3 12:55 ..
-rw-r-----. 1 oracle asmadmin 19709952
Jun 3 13:05 snapcf_ORA19R1.f
-rw-r--r--. 1 oracle
oinstall 1951 Jun 6 17:14
initORA19R1.ora
-rw-rw----. 1 oracle
asmadmin 1544 Jun 6 20:08
hc_ORA19R1.dat
drwxr-xr-x. 2 oracle
oinstall 4096 Jun 7 20:36
.
-rw-r-----. 1 oracle asmadmin 104865792 Jun 7 21:07
DATA1
-rw-r-----. 1 oracle asmadmin 8388608 Jun 7
21:11 id_ORA19R1.dat
--> DATA1 파일을 ASM영역으로 넣어야함
1. 해당 데이터 파일 offline 시키기
--RAC1번에서
수행
[2025-06-07:21:15:37][ol7ora19r1]<SYS@ORA19R1> alter database datafile '/u01/app/oracle/product/19c/db_1/dbs/DATA1'
offline;
Database altered.
Elapsed: 00:00:00.16
2. file system에 있는 datafile을 asm으로 복사
--RAC1번에서
수행
[ORA19R1:oracle@ol7ora19r1][/u01/app/oracle/product/19c/db_1/dbs]$ alias
rt
alias rt='rman target /'
[ORA19R1:oracle@ol7ora19r1][/u01/app/oracle/product/19c/db_1/dbs]$ rt
Recovery
Manager: Release 19.0.0.0.0 - Production on Sat Jun 7 21:17:53 2025
Version
19.27.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORA19R (DBID=1824822448)
--RMAN의 COPY DATAFILE명령을 사용함
RMAN>
copy datafile '/u01/app/oracle/product/19c/db_1/dbs/DATA1' to
'+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf';
copy datafile
'/u01/app/oracle/product/19c/db_1/dbs/DATA1' to
'+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf';
Starting backup at 2025-06-07
21:21:41
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile
copy
input datafile file number=00002
name=/u01/app/oracle/product/19c/db_1/dbs/DATA1
output file
name=+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf tag=TAG20250607T212141 RECID=1
STAMP=1203196902
channel ORA_DISK_1: datafile copy complete, elapsed time:
00:00:01
Finished backup at 2025-06-07 21:21:42
Starting
Control File and SPFILE Autobackup at 2025-06-07 21:21:42
piece
handle=/home/oracle/rman_backup/ORA19R/autobackup/c-1824822448-20250607-03
comment=NONE
Finished Control File and SPFILE Autobackup at 2025-06-07
21:21:43
[+ASM1:grid@ol7ora19r1][/home/grid]$ asmcmd ls -sl
+DATA1_NEW/ORA19R/DATAFILE/
Type Redund Striped
Time
Sys Block_Size Blocks
Bytes Space Name
DATAFILE
UNPROT COARSE JUN 06 20:00:00
Y 8192 213761
1751130112 1757413376 SYSAUX.265.1202825873
DATAFILE
UNPROT COARSE JUN 06 20:00:00
Y 8192 147201
1205870592 1212153856 SYSTEM.264.1202825797
DATAFILE
UNPROT COARSE JUN 07 21:00:00
Y 8192
12801 104865792 109051904
TS_TEST.271.1203196901
DATAFILE UNPROT COARSE JUN 06
20:00:00 Y
8192 105601 865083392 872415232
UNDOTBS1.266.1202826029
DATAFILE UNPROT COARSE JUN 06
20:00:00 Y
8192 9601 78651392
79691776 UNDOTBS2.267.1202826057
DATAFILE UNPROT
COARSE JUN 06 22:00:00
Y
8192 641
5251072 8388608 USERS.268.1202826071
DATAFILE UNPROT COARSE
JUN 07 21:00:00 N
8192 12801 104865792 109051904
ts_test.dbf =>
+DATA1_NEW/ORA19R/DATAFILE/TS_TEST.271.1203196901
3.
control file 정보 rename
--RAC1번에서 수행
[ORA19R1:oracle@ol7ora19r1][/u01/app/oracle/product/19c/db_1/dbs]$ alias
ss
alias ss='rlwrap sqlplus "/as sysdba"'
[ORA19R1:oracle@ol7ora19r1][/u01/app/oracle/product/19c/db_1/dbs]$ ss
SQL*Plus:
Release 19.0.0.0.0 - Production on Sat Jun 7 21:26:54 2025
Version
19.27.0.0.0
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release
19.0.0.0.0 - Production
Version 19.27.0.0.0
[2025-06-07:21:26:54][ol7ora19r1]<SYS@ORA19R1> alter database rename file '/u01/app/oracle/product/19c/db_1/dbs/DATA1' to '+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf';
--> 컨트롤 파일안의 데이터 경로가 바뀜
Database altered.
Elapsed: 00:00:00.12
4. rman 정보 갱신 및 recover
[ORA19R1:oracle@ol7ora19r1][/u01/app/oracle/product/19c/db_1/dbs]$ rt
Recovery
Manager: Release 19.0.0.0.0 - Production on Sat Jun 7 21:32:50 2025
Version
19.27.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORA19R (DBID=1824822448)
--RMAN까지 해당 파일의 위치를 제대로 인식 시켜줌 (위에서 컨트롤 파일 RENAME했어도 해줘야함)
RMAN>
switch datafile '+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf' to
copy;
switch datafile '+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf' to
copy;
using target database control file instead of recovery
catalog
datafile 2 switched to datafile copy
"+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf"
--RMAN이 해당 파일의 존재를 인식하고 있기 때문에 RECOVER DATAFILE을 함
(오프라인 하는 과정에서 REDO에만 남아있는 트랜잭션 내용까지 모두 적용 시켜야 다시 ONLINE 시킬 수 있음)
RMAN>
recover datafile
'+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf';
recover datafile
'+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf';
Starting recover at 2025-06-07
21:35:33
using target database control file instead of recovery
catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=575
instance=ORA19R1 device type=DISK
starting
media recovery
media recovery complete, elapsed time:
00:00:01
Finished recover at 2025-06-07 21:35:35
5. 데이터 파일을
online 시킴
[2025-06-07:21:36:12][ol7ora19r1]<SYS@ORA19R1> alter database datafile '+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf' online;
Database altered.
Elapsed: 00:00:00.11
6. rac2번에서도
해당 테이블 스페이스(해당 데이터 파일)내 테이블을 잘 읽을 수 있는지 확인
[2025-06-07:21:06:16][ol7ora19r2]<SYS@ORA19R2> select * from sys.tb_test_1;
COL1
----------
1
1 row selected.
Elapsed:
00:00:00.02
--12c 이후로는
online datafile move 기능이 있음 - 시작
alter database move datafile
'/u01/app/oracle/product/19c/db_1/dbs/DATA1' to
'+DATA1_NEW/ORA19R/DATAFILE/ts_test.dbf';
--> 위 명령으로 온라인 중에 가능함
--이렇게 한 후 RAC2번 노드에서 (파일인식이 되지 않았던 범인노드에서) 아래의 명령을 수행
alter system check datafiles;
--12c 이후로는 online datafile move 기능이 있음 - 종료
'Oracle > RAC' 카테고리의 다른 글
| [2025-05-18] RAC에서 Voting Disk replace 실습 (12cR2) (0) | 2025.10.07 |
|---|---|
| [2025-05-29] Interconnect Private IP 정보 변경(네트워크 인터페이스명 변경) (12cR2) (0) | 2025.09.28 |
| [2025-05-31] RAC환경에서 Cluster Name 변경 (12cR2) (0) | 2025.07.18 |
| [2025-05-31] RAC환경에서 Scan Name 변경 (12cR2) (0) | 2025.07.18 |
| [2025-05-29] Interconnect Private IP 정보 변경(네트워크 인터페이스명 변경) (12cR2) (0) | 2025.07.13 |