서로 다른 버퍼 캐시를 하나의 캐서처럼 쓰는 게 글로벌 캐시
디스크 I/O보다는 인스턴스 간의 네트워크를 통해 전송하는 게 좋다.
캐시 퓨전은 글로벌 버퍼 동기화하는 것.
vip를 쓰는 이유는 failover. 한 쪽이 에러가 나도 다른 쪽에서 수행할 수 있도록 하기 위함.
_________________________________________________________________________________
■ 동일한 행에 대해서 write
# [3, 31276]
# master node: rac2 node
# request node, hold node: rac1 node(exclusive)
# request node
SYS@racdb1> alter system flush buffer_cache;
SYS@racdb2> alter system flush buffer_cache;
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
no rows selected
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
no rows selected
<HR@racdb1> update hr.employees set salary = salary * 1.1 where employee_id = 100;
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000080FB37B0 xcur 2 1
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
no rows selected
HR@racdb2> update hr.employees set salary = salary * 1.1 where employee_id = 100;
-- waiting
(hang 상태)
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000080FB37B0 pi 0 0
pi는 글로벌한 dirty(dirty buffer) 상태를 의미한다.
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000082FF8090 xcur 2 0
SYS@racdb1> /
no rows selected
SYS@racdb2> /
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000082FF8090 xcur 2 0
SYS@racdb1> select inst_id, sid, serial#, event, blocking_instance, blocking_session
from gv$session
where event like '%TX%';
INST_ID SID SERIAL# EVENT BLOCKING_INSTANCE BLOCKING_SESSION
---------- ---------- ---------- ---------------------------------------- ----------------- ----------------
2 33 19061 enq: TX - row lock contention 1 52
rac1 노드의 52번 세션 때문에 저 대기 이벤트가 발생했다.
# alter system kill session 'sid,serial#'; -- 싱글에서 세션 죽이는 법
# alter system kill session 'sid,serial#,@inst_id'; -- rac에서 세션 죽이는 법
SYS@racdb1> alter system kill session '33,19061,@2';
System altered.
SYS@racdb1> select inst_id, sid, serial#, event, blocking_instance, blocking_session
from gv$session
where event like '%TX%';
no rows selected
HR@racdb2> update hr.employees set salary = salary * 1.1 where employee_id = 100;
update hr.employees set salary = salary * 1.1 where employee_id = 100
*
ERROR at line 1:
ORA-00028: your session has been killed
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
no rows selected
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000082FF8090 xcur 2 0
HR@racdb1> select salary from hr.employees where employee_id = 100;
SALARY
----------
26400
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
no rows selected
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000082FF8090 scur 1 0
HR@racdb1> select salary from hr.employees where employee_id = 100;
SALARY
----------
26400
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000080FB37B0 scur 1 1
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000082FF8090 scur 1 0
HR@racdb1> select salary from hr.employees where employee_id = 100;
SALARY
----------
24000
SYS@racdb1> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
LOCK_ELEMENT_ADD STATUS MODE_HELD LOCAL
---------------- ---------- ---------- ----------
0000000080FB37B0 xcur 2 1
SYS@racdb2> select b.lock_element_addr, b.status, e.mode_held, e.local
from v$bh b, v$gc_element e
where b.lock_element_addr = e.gc_element_addr
and b.file# = 3
and b.block# = 31276;
no rows selected
■ 문장 수준 읽기 일관성
select문이 수행되는 도중에 다른 세션에서 트랜잭션에 의해 데이터를 추가, 변경, 삭제가 발생하더라도 일관성 있는 결과 집합을 리턴하는 것을 의미한다.
오라클을 제외한 다른 데이터베이스는 모든 행을 lock을 사용해 dirty read를 방지한다. 즉, 읽기 작업에 대해 shared lock을 사용함으로써 exclusive lock이 걸린 row를 읽지 못하도록 한다.
오라클은 undo 데이터를 이용해서 완벽한 문장 수준 읽기 일관성을 보장한다.
■ consistent 모드 읽기
query가 시작된 시점을 기준으로 데이터를 읽는다.
쿼리 시작 시점과 블록의 마지막 변경 시점을 scn(system commit number)을 이용해서 데이터베이스 일관성을 체크한다.
scn 읽기 일관성과 동시성 제어를 위해 사용되고 생성된 리두 로그 정보의 순서를 식별하는 데에도 사용되며, 마지막 데이터 복구를 위해서도 사용된다.
SYS@racdb1> select current_scn, scn_to_timestamp(current_scn) from v$database;
CURRENT_SCN SCN_TO_TIMESTAMP(CURRENT_SCN)
----------- ---------------------------------------------------------------------------
3456379 24-JUL-26 04.55.59.000000000 AM
쿼리의 scn 번호는 블록의 scn번호보다 작거나 같은 거를 봐야 한다.
block scn ≤ query scn
예)
Query SCN = 100
블록 SCN = 90 → 읽을 수 있음
블록 SCN = 100 → 읽을 수 있음
블록 SCN = 110 → 읽을 수 없음. 트랜잭션 슬랏에 있는 Undo를 적용해 SCN 100 시점으로 되돌려 읽음
undo에 commit 이전 값이 들어있음.(변경 전 값)
transaction layer 안에 있는 transaction slot들에는 undo에 대한 정보가 들어있다. undo에 대해 포인팅이 되어있다.
필요한 undo를 찾아가기 위해서 undo segment 헤더 블록, 트랜잭션 슬랏을 같이 본다.
undo에 있는 값들은 쭉 갖고 있도록 보장하지 않음. 그래서 예전 변경 전 값을 찾으려고 했는데 overwrite되어 못 찾았으면 snapshot too old 오류가 나온다.
이 오류를 해결하기 법은 undo 공간을 여유있게 해놓는 것이다.
undo retention은 일시적으로 undo를 보장하여 일정 시간 지나면 사라지고 undo 테이블스페이스 공간이 부족하면 해당 시간(초 단위)이 지나지 않은 undo라도 overwrite(재사용)가 될 수 있는데, undo_retention 시간 동안 무조건 보장해야 하는 undo가 있으면 retention guarantee로 보장하면 된다.
undo segment 할당 못 받으면 무조건 기다려야 함.
■ current 모드 읽기
데이터를 찾아간 바로 그 시점의 최종값을 읽는다.
<<HR 1>>
HR@racdb1> create table hr.emp tablespace users as select * from hr.employees;
Table created.
# consistent 모드 읽기
HR@racdb1> select salary from hr.emp where employee_id = 200;
SALARY
----------
4400
# current 모드 읽기
HR@racdb1> update hr.emp set salary = salary + 100 where employee_id = 200;
1 row updated.
HR@racdb1> select salary from hr.emp where employee_id = 200;
SALARY
----------
4500
<<HR 2>>
# consistent 모드 읽기
HR@racdb1> select salary from hr.emp where employee_id = 200;
SALARY
----------
4400 <<- undo에 있는 이전 값을 가지고 cr블록을 생성한 후 보여준다.(읽기 일관성)
HR@racdb1> update hr.emp set salary = salary + 200 where employee_id = 200;
-- waiting(hang 상태)(hr 1세션에서 트랜잭션을 종료(commit 또는 rollback)할 때까지 기다려야 함.)
만약에 HR 1에서 commit을 한다면 이 결과는 어떻게 나올까? 4500 가지고 업데이트 수행해서 4700이 나오지 않을까?
다른 DB는 무조건 4700인데 오라클 같은 경우는 읽기 일관성이라는 게 있어서 4600으로 생각할 수도 있는데 아니다.
dml 작업의 경우는 current 모드로 되어 hang 상태가 풀리고 난 뒤의 작업으로 수행되어 4700이 나온다.
<<HR 1>>
HR@racdb1> commit;
Commit complete.
<<HR 2>>
# current 모드 읽고 갱신
HR@racdb1> update hr.emp set salary = salary + 200 where employee_id = 200;
1 row updated. -- hang 상태 풀림.
<<- hang 상태가 풀린 시점의 값을 가지고 update 진행하였다.(waiting에서 풀린 후 현재 블록에 있는 급여 정보를 가지고 수정)
HR@racdb1> select salary from hr.emp where employee_id = 200;
SALARY
----------
4700
<<HR 1>>
HR@racdb1> select salary from hr.emp where employee_id = 200;
SALARY
----------
4500
<<HR 2>>
HR@racdb1> commit;
Commit complete.
<<HR 1>>
HR@racdb1> select salary from hr.emp where employee_id = 200;
SALARY
----------
4700
----------------------------------------------------------------------------
<<HR 1>>
HR@racdb1> select salary from hr.emp where employee_id = 110;
SALARY
----------
8200
HR@racdb1> update hr.emp set salary = 9000 where employee_id = 110 and salary = 8200;
1 row updated.
HR@racdb1> select salary from hr.emp where employee_id = 110;
SALARY
----------
9000
<<HR 2>>
# 대상 행을 읽을 때(조회)는 consistent 모드로 읽고 실제값을 변경할 때(수정 및 삭제)는 current 모드로 읽고 변경한다.
HR@racdb1> update hr.emp set salary = 10000 where employee_id = 110 and salary = 9000;
0 rows updated.
-- 다른 DBMS는 이게 수행된다. 오라클은 트랜잭션 진행중인 거라서 읽기 일관성으로 인해서 작업 수행 안 됨. dirty read(다른 변경된 값으로 읽는 것(조회))가 되면 문제이므로 해당 row 자체를 수정 못하게 lock을 걺.
여기서는 current로만 보지 않는다. 읽기 일관성으로 봄.
HR@racdb1> update hr.emp set salary = 10000 where employee_id = 110 and salary = 8200;
-- waiting(hang 상태)(lock contention 발생)
<<HR 1>>
HR@racdb1> commit;
Commit complete.
<<HR 2>>
HR@racdb1> update hr.emp set salary = 10000 where employee_id = 110 and salary = 8200;
0 rows updated. -- hang 상태 풀림. 이 행이 (사원 아이디가 110이면서 급여가 9000인 행으로 변경되어) 이제 사라졌으므로 0건 수행된 걸로 뜸.
# SELECT는 consistent 모드로 읽는다.
# DML은 current 모드로 읽고 변경한다.
다만, 갱신할 대상 행을 식별하는 작업만큼은 consistent 모드로 읽는 작업을 수행한다.
* 조회하면서 미리 대상 row의 lock을 선점하는 것(row lock)은 SELECT ... FOR UPDATE
SELECT FOR UPDATE는 최신 상태의 행을 확인하고 잠금을 걸어야 하므로 current mode read를 사용
SELECT FOR UPDATE문을 조회하면 해당 행에 잠금이 걸려서 다른 세션에서 같은 행을 UPDATE하거나 DELETE하려고 하면 대기하게 된다.
SELECT FOR UPDATE는 대상 행에 row level lock을 미리 걸어 두는 기능이고, 이후 실제 DML이 수행되면 Undo가 생성되어 롤백과 읽기 일관성에 사용된다.

Database Concepts
This chapter explains how Oracle Database maintains consistent data in a multiuser database environment.
docs.oracle.com
■ Transaction
- 논리적으로 DML문을 하나로 묶어서 처리하는 작업 단위(atomicity(원자성) => 쪼갤 수 없음. all or nothing)
- 데이터베이스에서 하나의 정합성을 보장하며 완결성 있게 처리되어야 하는 논리적 작업 단위
내부적으로 여러 개의 SQL문을 묶어서 실행하지만 외부적으로는 하나의 작업처럼 처리한다.
- 정합성(Consistency): 데이터 간의 모순 없이 일치되는 상황(데이터의 앞뒤가 맞는 상태)
- 무결성(Integrity): 데이터가 결함 없이 정확하고 유효함에 초점을 맞춘다.(예: 컬럼 데이터 타입, 크기, 제약조건)
■ Transaction 특징(ACID)
1. Atomicity(원자성)
- all or nothing
- 트랜잭션은 논리적으로 쪼갤 수 없는 작업 단위이기 때문에 내부의 SQL문들이 모두 성공해야 한다.
- 중간에 SQL문이 실패하면 지금까지의 작업을 모두 취소하여 아무 일도 없었던 것처럼 ROLLBACK한다.
(전부 commit이 되거나 전부 rollback이 되거나)
2. Consistency(일관성)
- 트랜잭션은 데이터베이스에 정의된 규칙을 위반했는지 데이터베이스 COMMIT 전에 확인하고 알려준다.
- constraint, trigger 등을 통해 데이터베이스에 정의된 규칙을 트랜잭션이 위반했다면 rollback 해야 한다.
예) 은행 계좌 송금(계좌 잔고가 음수가 되는 금액을 송금하면 안 된다.) check 제약조건을 구현해놔야 함.

3. Isolation(격리성)
- 여러 트랜잭션이 동시에 실행될 때 각 트랜잭션은 서로 영향을 주지 않고 독립적으로 실행되는 것처럼 보여야 한다.
- 데이터베이스는 여러 종류의 isolation level을 제공한다.
4. Durability(지속성)
- 트랜잭션이 성공적으로 완료(commit)되면 그 결과는 시스템 오류나 정전과 같은 상황에서도 영구적으로 저장되어야 한다.
■ ASM INSTANCE
- ASM을 관리하는 전용 메모리
- 디스크에 대한 I/O를 관리한다.(OS 메모리를 거치지 않음.)
- 오라클 인스턴스와 상하관계는 아니고 의사소통을 하면 ASM Storage를 관리한다.
- shared pool: ASM 디스크에 대한 메타 데이터 정보
- large pool: 리밸런싱(rebalancing)을 병렬작업에 사용
- asm cache: 리밸런싱(rebalancing) 작업 중 읽기, 쓰기 블록 사용
# 리밸런싱(rebalancing) 관련 백그라운드 프로세스
- RBAL: 리밸런싱 작업을 조정하고 ARBn에게 지시하는 프로세스
- ARBn: 리밸런싱 데이터를 extent로 이동 수행하는 프로세스
[oracle@rac1 ~]$ . oraenv
ORACLE_SID = [racdb1] ? +ASM1
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@rac1 ~]$ sqlplus / as sysasm
SQL> show sga
Total System Global Area 1137173320 bytes
Fixed Size 8905544 bytes
Variable Size 1103101952 bytes
ASM Cache 25165824 bytes
SQL> select * from v$sgainfo;
NAME BYTES RES CON_ID
-------------------------------- ---------- --- ----------
Fixed SGA Size 8905544 No 0
ASM Cache Size 25165824 No 0
Shared Pool Size 620756992 Yes 0
Large Pool Size 12582912 Yes 0
Granule Size 4194304 No 0
Maximum SGA Size 1137173320 No 0
Startup overhead in Shared Pool 285820104 No 0
Free SGA Memory Available 469762048 0
ASM Cache Size
Shared Pool Size
Large Pool Size
이 세 개가 중요한 것
SQL> select component, current_size from v$memory_dynamic_components;
COMPONENT CURRENT_SIZE
---------------------------------------------------------------- ------------
shared pool 620756992
large pool 12582912
java pool 0
streams pool 0
unified pga pool 0
SGA Target 675282944
memoptimize buffer cache 0
DEFAULT buffer cache 0
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
DEFAULT 32K buffer cache 0
Shared IO Pool 0
Data Transfer Cache 0
In-Memory Area 0
In Memory RW Extension Area 0
In Memory RO Extension Area 0
PGA Target 452984832
ASM Buffer Cache 25165824
■ ASM redundancy
normal: 2-way mirroring(같은 데이터를 다른 디스크에 복제하여 이중화) 2way하려면 최소한 디스크가 3개 이상이어야 함., 디스크 2배가 있어야 한다.
high: 2-way mirroring, 디스크 3배가 있어야 한다.
external: asm mirroring 기능을 사용하지 않는다.
■ ASM 제한 사항
- 스토리지는 시스템당 63개 disk group만 지원
- asm disk 당 최대 4petabyte 지원
- 각 디스크 그룹 당 최대 백만 개 파일 지원
- 최대 파일 크기
normal: 23pbyte
high: 15pbyte
external: 140pbyte
■ ASM AU(Allocation Unit)
- AU 크기는 디스크 그룹 생성 시 구성
- AU_SIZE: 기본값 1M, 4M (1,2,4,8,16,32,64)
- 오라클은 AU 크기를 자동으로 관리한다.
처음부터 2만 개: AU_SIZE
다음 2만 개: AU_SIZE * 4
다음 나머지: AU_SIZE * 16
SQL> select inst_id, instance_name from gv$instance;
INST_ID INSTANCE_NAME
---------- ----------------
1 +ASM1
2 +ASM2
SQL> select group_number, name, type, state from v$asm_diskgroup; -- ASM
GROUP_NUMBER NAME TYPE STATE
------------ ------------------------------ ------ -----------
1 DATA EXTERN MOUNTED
2 FRA EXTERN MOUNTED
SYS@racdb1> select group_number, name, type, state from v$asm_diskgroup; -- DB
GROUP_NUMBER NAME TYPE STATE
------------ ------------------------------ ------ -----------
1 DATA EXTERN CONNECTED
2 FRA EXTERN CONNECTED
SQL> select b.name,a.group_number, a.disk_number, a.name, a.mount_status, a.path, a.total_mb, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number = b.group_number;
NAME GROUP_NUMBER DISK_NUMBER NAME MOUNT_S PATH TOTAL_MB FREE_MB
------------------------------ ------------ ----------- ------------------------------ ------- ---------------------------------------- ---------- ----------
FRA 2 1 FRA_0001 CACHED /dev/oracleasm/disks/ASMDISK04 5116 4616
DATA 1 0 DATA_0000 CACHED /dev/oracleasm/disks/ASMDISK01 5116 3456
DATA 1 1 DATA_0001 CACHED /dev/oracleasm/disks/ASMDISK02 5116 3496
FRA 2 0 FRA_0000 CACHED /dev/oracleasm/disks/ASMDISK03 5116 4620
SYS@racdb1> select b.name,a.group_number, a.disk_number, a.name, a.mount_status, a.path, a.total_mb, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number = b.group_number;
NAME GROUP_NUMBER DISK_NUMBER NAME MOUNT_S PATH TOTAL_MB FREE_MB
-------------------- ------------ ----------- -------------------- ------- ---------------------------------------- ---------- ----------
FRA 2 1 FRA_0001 CACHED /dev/oracleasm/disks/ASMDISK04 5116 4616
DATA 1 0 DATA_0000 CACHED /dev/oracleasm/disks/ASMDISK01 5116 3456
DATA 1 1 DATA_0001 CACHED /dev/oracleasm/disks/ASMDISK02 5116 3496
FRA 2 0 FRA_0000 CACHED /dev/oracleasm/disks/ASMDISK03 5116 4620
asm이나 db나 똑같이 나온다.
SQL> select group_number, file_number, bytes, redundancy, type from v$asm_file;
GROUP_NUMBER FILE_NUMBER BYTES REDUND TYPE
------------ ----------- ---------- ------ --------------------
1 253 1536 UNPROT ASMPARAMETERFILE
1 255 165974016 UNPROT OCRFILE
1 256 3072 UNPROT PASSWORD
1 257 2560 UNPROT PASSWORD
1 258 2048 UNPROT PASSWORD
1 259 954212352 UNPROT DATAFILE
1 260 734011392 UNPROT DATAFILE
1 261 372252672 UNPROT DATAFILE
1 262 5251072 UNPROT DATAFILE
1 263 19709952 UNPROT CONTROLFILE
1 264 209715712 UNPROT ONLINELOG
1 265 209715712 UNPROT ONLINELOG
1 266 40902656 UNPROT TEMPFILE
1 267 26222592 UNPROT DATAFILE
1 268 209715712 UNPROT ONLINELOG
1 269 209715712 UNPROT ONLINELOG
1 270 4608 UNPROT PARAMETERFILE
1 271 2195456 UNPROT OCRBACKUP
1 272 2195456 UNPROT OCRBACKUP
1 273 2195456 UNPROT OCRBACKUP
1 275 2195456 UNPROT OCRBACKUP
1 276 2195456 UNPROT OCRBACKUP
2 256 19709952 UNPROT CONTROLFILE
2 257 209715712 UNPROT ONLINELOG
2 258 209715712 UNPROT ONLINELOG
2 259 209715712 UNPROT ONLINELOG
2 260 209715712 UNPROT ONLINELOG
SQL> select * from v$asm_template where group_number = 1;
GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE S NAME PRIM MIRR CON_ID
------------ ------------ ------ ------ - ------------------------------ ---- ---- ----------
1 200 UNPROT COARSE Y PARAMETERFILE COLD COLD 0
1 201 UNPROT COARSE Y ASMPARAMETERFILE COLD COLD 0
1 203 UNPROT COARSE Y VOTINGFILE COLD COLD 0
1 204 UNPROT COARSE Y DUMPSET COLD COLD 0
1 205 UNPROT FINE Y CONTROLFILE COLD COLD 0
1 206 UNPROT COARSE Y FLASHFILE COLD COLD 0
1 207 UNPROT COARSE Y ARCHIVELOG COLD COLD 0
1 208 UNPROT COARSE Y ONLINELOG COLD COLD 0
1 209 UNPROT COARSE Y DATAFILE COLD COLD 0
1 310 UNPROT COARSE Y TEMPFILE COLD COLD 0
1 311 UNPROT COARSE Y BACKUPSET COLD COLD 0
1 312 UNPROT COARSE Y XTRANSPORT BACKUPSET COLD COLD 0
1 313 UNPROT COARSE Y INCR XTRANSPORT BACKUPSET COLD COLD 0
1 314 UNPROT COARSE Y AUTOBACKUP COLD COLD 0
1 315 UNPROT COARSE Y XTRANSPORT COLD COLD 0
1 317 UNPROT COARSE Y CHANGETRACKING COLD COLD 0
1 318 UNPROT COARSE Y FLASHBACK COLD COLD 0
1 319 UNPROT COARSE Y KEY_STORE COLD COLD 0
1 420 UNPROT COARSE Y AUTOLOGIN_KEY_STORE COLD COLD 0
1 421 UNPROT COARSE Y AUDIT_SPILLFILES COLD COLD 0
1 422 UNPROT COARSE Y DATAGUARDCONFIG COLD COLD 0
1 423 UNPROT COARSE Y OCRFILE COLD COLD 0
COARSE: au_size 크기로 구성
FINE: 128kb
# 사용할 수 있는 디스크 확인
SQL> select path from v$asm_disk where mount_status = 'CLOSED';
PATH
----------------------------------------
/dev/oracleasm/disks/ASMDISK06
/dev/oracleasm/disks/ASMDISK07
/dev/oracleasm/disks/ASMDISK05
# 디스크 그룹에 디스크 추가
SQL> alter diskgroup fra add disk '/dev/oracleasm/disks/ASMDISK05' rebalance power 10;
Diskgroup altered.
SQL> select b.name,a.group_number, a.disk_number, a.name, a.mount_status, a.path, a.total_mb, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number = b.group_number;
NAME GROUP_NUMBER DISK_NUMBER NAME MOUNT_S PATH TOTAL_MB FREE_MB
------------------------------ ------------ ----------- ------------------------------ ------- ---------------------------------------- ---------- ----------
FRA 2 2 FRA_0002 CACHED /dev/oracleasm/disks/ASMDISK05 5116 4780
FRA 2 1 FRA_0001 CACHED /dev/oracleasm/disks/ASMDISK04 5116 4780
DATA 1 0 DATA_0000 CACHED /dev/oracleasm/disks/ASMDISK01 5116 3456
DATA 1 1 DATA_0001 CACHED /dev/oracleasm/disks/ASMDISK02 5116 3496
FRA 2 0 FRA_0000 CACHED /dev/oracleasm/disks/ASMDISK03 5116 4780
# 사용할 수 있는 디스크 확인
SQL> select path from v$asm_disk where mount_status = 'CLOSED'; -- ASMDISK05가 빠졌다.
PATH
----------------------------------------
/dev/oracleasm/disks/ASMDISK07
/dev/oracleasm/disks/ASMDISK06
# 디스크 그룹에 디스크 삭제
SQL> alter diskgroup fra drop disk fra_0002;
Diskgroup altered.
SQL> select b.name,a.group_number, a.disk_number, a.name, a.mount_status, a.path, a.total_mb, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number = b.group_number;
NAME GROUP_NUMBER DISK_NUMBER NAME MOUNT_S PATH TOTAL_MB FREE_MB
------------------------------ ------------ ----------- ------------------------------ ------- ---------------------------------------- ---------- ----------
FRA 2 1 FRA_0001 CACHED /dev/oracleasm/disks/ASMDISK04 5116 4620
DATA 1 0 DATA_0000 CACHED /dev/oracleasm/disks/ASMDISK01 5116 3456
DATA 1 1 DATA_0001 CACHED /dev/oracleasm/disks/ASMDISK02 5116 3496
FRA 2 0 FRA_0000 CACHED /dev/oracleasm/disks/ASMDISK03 5116 4616
# 사용할 수 있는 디스크 확인
SQL> select path from v$asm_disk where mount_status = 'CLOSED';
PATH
----------------------------------------
/dev/oracleasm/disks/ASMDISK06
/dev/oracleasm/disks/ASMDISK07
/dev/oracleasm/disks/ASMDISK05
# 새로운 디스크 그룹 생성
SQL> create diskgroup asm_dg external redundancy disk '/dev/oracleasm/disks/ASMDISK05';
Diskgroup created.
SQL> select b.name,a.group_number, a.disk_number, a.name, a.mount_status, a.path, a.total_mb, a.free_mb
from v$asm_disk a, v$asm_diskgroup b
where a.group_number = b.group_number;
NAME GROUP_NUMBER DISK_NUMBER NAME MOUNT_S PATH TOTAL_MB FREE_MB
------------------------------ ------------ ----------- ------------------------------ ------- ---------------------------------------- ---------- ----------
ASM_DG 3 0 ASMDISK05 CACHED /dev/oracleasm/disks/ASMDISK05 5119 5067
FRA 2 1 FRA_0001 CACHED /dev/oracleasm/disks/ASMDISK04 5116 4620
DATA 1 0 DATA_0000 CACHED /dev/oracleasm/disks/ASMDISK01 5116 3456
DATA 1 1 DATA_0001 CACHED /dev/oracleasm/disks/ASMDISK02 5116 3496
FRA 2 0 FRA_0000 CACHED /dev/oracleasm/disks/ASMDISK03 5116 4616
SYS@racdb1> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/RACDB/PARAMETERFILE/spfi
le.270.1239203391
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb from dba_data_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ -------------------------------------------------- ----------
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355
# 테이블스페이스 생성
SYS@racdb1> create tablespace asm_tbs datafile '+asm_dg' size 10m;
Tablespace created.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb from dba_data_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ -------------------------------------------------- ----------
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899 10
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355
select * from dba_tablespaces; 조회

# 데이터 파일 추가
SYS@racdb1> alter tablespace asm_tbs add datafile;
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb from dba_data_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ -------------------------------------------------- ----------
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899 10
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355
ASM_TBS +DATA/RACDB/DATAFILE/asm_tbs.274.1239444263 100
# 테이블스페이스에 속한 데이터 파일 삭제
SYS@racdb1> alter tablespace asm_tbs drop datafile '+DATA/RACDB/DATAFILE/asm_tbs.274.1239444263';
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb from dba_data_files;
TABLESPACE_NAME FILE_NAME MB
------------------------------ -------------------------------------------------- ----------
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899 10
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355
# OMF(Oracle Managed File)
오라클 데이터베이스의 운영체제 파일을 직접 관리하지 않아도 된다.
파일이 아닌 데이터베이스 객체 관점에서 작업을 진행한다.
SYS@racdb1> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +DATA
SYS@racdb1> alter system set db_create_file_dest = '+ASM_DG';
System altered.
SYS@racdb1> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string +ASM_DG
# OMF를 이용한 테이블 스페이스 생성
SYS@racdb1> create tablespace insa_tbs;
Tablespace created.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899 10 NO
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
INSA_TBS +ASM_DG/RACDB/DATAFILE/insa_tbs.257.1239444619 100 YES -- OMF 이용하여 생성한 테이블스페이스 기본 사이즈: 100MB
SYS@racdb1> alter database datafile '+ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899' autoextend on; -- autoextend on하는 명령어
Database altered.
SYS@racdb1> alter tablespace insa_tbs add datafile;
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899 10 YES
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
INSA_TBS +ASM_DG/RACDB/DATAFILE/insa_tbs.257.1239444619 100 YES
INSA_TBS +ASM_DG/RACDB/DATAFILE/insa_tbs.258.1239444933 100 YES
SYS@racdb1> drop tablespace insa_tbs including contents;
Tablespace dropped.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899 10 YES
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
SYS@racdb1> create table hr.emp_asm tablespace asm_tbs as select * from hr.employees;
Table created.
SYS@racdb1> select tablespace_name, extents, bytes, blocks from dba_segments where owner='HR' and segment_name='EMP_ASM';
TABLESPACE_NAME EXTENTS BYTES BLOCKS
------------------------------ ---------- ---------- ----------
ASM_TBS 1 65536 8
# ASM_TBS 테이블스페이스를 +ASM_DG -> +DATA 그룹으로 이관
SYS@racdb1> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
UNDOTBS2 ONLINE
ASM_TBS ONLINE
SYS@racdb1> alter tablespace asm_tbs offline normal;
Tablespace altered.
SYS@racdb1> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
UNDOTBS2 ONLINE
ASM_TBS OFFLINE
SYS@racdb1> exit
[oracle@rac1 ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Fri Jul 24 10:22:39 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: RACDB (DBID=1236819723)
RMAN> report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name RACDB
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 910 SYSTEM YES +DATA/RACDB/DATAFILE/system.259.1239202827
2 0 ASM_TBS NO +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899
3 700 SYSAUX NO +DATA/RACDB/DATAFILE/sysaux.260.1239202861
4 355 UNDOTBS1 YES +DATA/RACDB/DATAFILE/undotbs1.261.1239202887
5 25 UNDOTBS2 YES +DATA/RACDB/DATAFILE/undotbs2.267.1239203295
7 5 USERS NO +DATA/RACDB/DATAFILE/users.262.1239202887
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 39 TEMP 32767 +DATA/RACDB/TEMPFILE/temp.266.1239202971
RMAN> copy datafile '+ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899' to '+DATA/RACDB/DATAFILE/asm_tbs01.dbf';
Starting backup at 24-JUL-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=64 instance=racdb1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=+ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899
output file name=+DATA/RACDB/DATAFILE/asm_tbs01.dbf tag=TAG20260724T102455 RECID=1 STAMP=1239445495
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 24-JUL-26
Starting Control File and SPFILE Autobackup at 24-JUL-26
piece handle=+FRA/RACDB/AUTOBACKUP/2026_07_24/s_1239445496.261.1239445497 comment=NONE
Finished Control File and SPFILE Autobackup at 24-JUL-26
RMAN> list copy;
specification does not match any control file copy in the repository
specification does not match any archived log in the repository
List of Datafile Copies
=======================
Key File S Completion Time Ckp SCN Ckp Time Sparse
------- ---- - --------------- ---------- --------------- ------
1 2 A 27-JUL-26 3487089 27-JUL-26 NO
Name: +DATA/RACDB/DATAFILE/asm_tbs01.dbf
Tag: TAG20260724T102455
RMAN> exit
[oracle@rac1 ~]$ sqlplus / as sysdba
SYS@racdb1> alter tablespace asm_tbs rename datafile '+ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239443899' to '+DATA/RACDB/DATAFILE/asm_tbs01.dbf';
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +DATA/RACDB/DATAFILE/asm_tbs01.dbf
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
SYS@racdb1> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
UNDOTBS2 ONLINE
ASM_TBS OFFLINE
SYS@racdb1> alter tablespace asm_tbs online;
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +DATA/RACDB/DATAFILE/asm_tbs01.dbf 10 YES
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +DATA/RACDB/DATAFILE/asm_tbs01.dbf 10 YES
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
SYS@racdb1> select count(*) from hr.emp_asm;
COUNT(*)
----------
107
# ASM_TBS 테이블스페이스를 +DATA -> +ASM_DG그룹으로 이관
SYS@racdb1> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
UNDOTBS2 ONLINE
ASM_TBS ONLINE
7 rows selected.
SYS@racdb1> alter tablespace asm_tbs offline normal;
Tablespace altered.
SYS@racdb1> select tablespace_name, status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
UNDOTBS2 ONLINE
ASM_TBS OFFLINE
SYS@racdb1> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@rac1 ~]$ rman target /
Recovery Manager: Release 19.0.0.0.0 - Production on Mon Jul 27 17:08:14 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: RACDB (DBID=1236819723)
RMAN> report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name RACDB
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 910 SYSTEM YES +DATA/RACDB/DATAFILE/system.259.1239202827
2 0 ASM_TBS NO +DATA/RACDB/DATAFILE/asm_tbs01.dbf
3 700 SYSAUX NO +DATA/RACDB/DATAFILE/sysaux.260.1239202861
4 355 UNDOTBS1 YES +DATA/RACDB/DATAFILE/undotbs1.261.1239202887
5 25 UNDOTBS2 YES +DATA/RACDB/DATAFILE/undotbs2.267.1239203295
7 5 USERS NO +DATA/RACDB/DATAFILE/users.262.1239202887
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 39 TEMP 32767 +DATA/RACDB/TEMPFILE/temp.266.1239202971
RMAN> copy datafile '+DATA/RACDB/DATAFILE/asm_tbs01.dbf' to '+ASM_DG'; -- '+DATA/RACDB/DATAFILE/asm_tbs01.dbf'파일을 +ASM_DG그룹으로 복사
Starting backup at 27-JUL-26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=44 instance=racdb1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=+DATA/RACDB/DATAFILE/asm_tbs01.dbf
output file name=+ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239728975 tag=TAG20260727T170934 RECID=2 STAMP=1239728975
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 27-JUL-26
Starting Control File and SPFILE Autobackup at 27-JUL-26
piece handle=+FRA/RACDB/AUTOBACKUP/2026_07_27/s_1239728976.262.1239728977 comment=NONE
Finished Control File and SPFILE Autobackup at 27-JUL-26
RMAN> list copy;
specification does not match any control file copy in the repository
specification does not match any archived log in the repository
List of Datafile Copies
=======================
Key File S Completion Time Ckp SCN Ckp Time Sparse
------- ---- - --------------- ---------- --------------- ------
2 2 A 27-JUL-26 3591134 27-JUL-26 NO
Name: +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239728975
Tag: TAG20260727T170934
1 2 A 24-JUL-26 3487089 24-JUL-26 NO
Name: +DATA/RACDB/DATAFILE/asm_tbs01.dbf
Tag: TAG20260724T102455
RMAN> exit
[oracle@rac1 ~]$ sqlplus / as sysdba
SYS@racdb1> alter tablespace asm_tbs rename datafile '+DATA/RACDB/DATAFILE/asm_tbs01.dbf' to '+ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239728975';
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239728975
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
SYS@racdb1> alter tablespace asm_tbs online;
Tablespace altered.
SYS@racdb1> select tablespace_name, file_name, bytes/1024/1024 mb, autoextensible from dba_data_files;
TABLESPACE_NAME FILE_NAME MB AUT
------------------------------ -------------------------------------------------- ---------- ---
SYSTEM +DATA/RACDB/DATAFILE/system.259.1239202827 910 YES
SYSAUX +DATA/RACDB/DATAFILE/sysaux.260.1239202861 700 YES
UNDOTBS2 +DATA/RACDB/DATAFILE/undotbs2.267.1239203295 25 YES
USERS +DATA/RACDB/DATAFILE/users.262.1239202887 5 YES
ASM_TBS +ASM_DG/RACDB/DATAFILE/asm_tbs.256.1239728975 10 YES
UNDOTBS1 +DATA/RACDB/DATAFILE/undotbs1.261.1239202887 355 YES
'강남 아이티윌 오라클DBA과정 94기 > RAC' 카테고리의 다른 글
| [오라클 DBA 과정] 91일차 RAC(8) (2026-07-29) (0) | 2026.07.29 |
|---|---|
| [오라클 DBA 과정] 90일차 RAC(7) (2026-07-28) (0) | 2026.07.29 |
| [오라클 DBA 과정] 88일차 RAC(5) (2026-07-24) (0) | 2026.07.25 |
| [오라클 DBA 과정] 87일차 RAC(4) (2026-07-23) (0) | 2026.07.23 |
| [오라클 DBA 과정] 86일차 RAC(3) (2026-07-22) (0) | 2026.07.22 |