[Oracle] 현장에서 자주 발생하는 테이블스페이스 관련 이슈들 해결하기

·2025년 9월 1일
0

오라클 관리

목록 보기
71/163

[이슈1] 데이터 엔지니어로 근무하고 있는데 고객사에서 다음의 요청전화가 왔습니다.

데이터 파일 확장자를 .dbf 로 해서 만들었어야 했는데 .bdf 로 생성한 경우입니다.


[실습1] ts200 테이블 스페이스를 생성하는데 data file 이름을 ts200.bdf 로 생성하시오

create  tablespace ts200
 datafile '/home/oracle/ts200.bdf'  size 10m;

[실습2] scott 유져로 접속해서 ts200 에 emp200 과 dept200 을 emp 와 dept 테이블과 똑같이 생성하시오

SCOTT @ ora19dw > create table emp200
                  tablespace ts200
                as
                   select * from emp;

테이블이 생성되었습니다.

SCOTT @ ora19dw > create table dept200
                  tablespace ts200
                as
                  select * from dept;

테이블이 생성되었습니다.

[실습3] 이제서야 dba가 data file의 이름을 잘못 만든 것을 확인했습니다. 그래서 data file 이름을 다시 변경해야합니다. 그 전에 ts200 테이블 스페이스만 백업하세요

[oracle@ora19c kbm]$ rman target /

복구 관리자: Release 19.0.0.0.0 - Production on91 16:20:27 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

대상 데이터베이스에 접속됨: ORA19DW(DBID=1004651910)

RMAN> backup tablespace ts200;

25/09/01에서 backup() 시작하는 중입니다.
복구 카탈로그 대신 대상 데이터베이스 제어 파일을 사용하고 있습니다.
채널을 할당했습니다: ORA_DISK_1
채널 ORA_DISK_1: SID=270 장치 유형=DISK
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
입력 데이터 파일 번호=00013 이름=/home/oracle/ts200.bdf
채널 ORA_DISK_1: 25/09/01에서 1 조각을 시작하는 중입니다.
채널 ORA_DISK_1: 25/09/01에서 1 조각을 완료했습니다.
조각 핸들=/u01/app/oracle/fast_recovery_area/ORA19DW/backupset/2025_09_01/o1_mf_nnndf_TAG20250901T162040_ncblb8bv_.bkp 태그=TAG20250901T162040 주석=NONE
채널 ORA_DISK_1: 백업 집합 완료, 경과 시간: 00:00:01
25/09/01에서 backup() 종료했습니다.

25/09/01에서 Control File and SPFILE Autobackup을() 시작하는 중입니다.
조각 핸들=/u01/app/oracle/fast_recovery_area/ORA19DW/autobackup/2025_09_01/o1_mf_s_1210695641_ncblb9lz_.bkp 주석=NONE
25/09/01에서 Control File and SPFILE Autobackup을() 종료했습니다.

RMAN>

[실습4] 다시 ts200.bdf 를 ts200.dbf 로 변경하시오

[oracle@ora19c kbm]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on91 16:22:07 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS @ ora19dw > alter tablespace ts200 offline;

테이블스페이스가 변경되었습니다.

SYS @ ora19dw > !mv /home/oracle/ts200.bdf /home/oracle/ts200.dbf

SYS @ ora19dw > @ts

TABLESPACE FILE_NAME                                               MB_SIZE
---------- ------------------------------------------------------- -------
SYSAUX     /home/oracle/sysaux01.dbf                                   570
SYSTEM     /home/oracle/system01.dbf                                   900
TEST_BIG   /home/oracle/test_big01.dbf                                  20
TS01       /home/oracle/kbm/ts01.dbf                                     2
TS02       /home/oracle/ts02.dbf                                        40
TS03       /home/oracle/ts03.dbf                                        20
TS04       /home/oracle/ts04.dbf                                        30
TS07       /home/oracle/ts07.dbf                                      1024
TS100      /home/oracle/ts100.dbf                                        2
TS200      /home/oracle/ts200.bdf
UNDOTBS1   /home/oracle/undotbs01.dbf                                  340

TABLESPACE FILE_NAME                                               MB_SIZE
---------- ------------------------------------------------------- -------
USERS      /home/oracle/users01.dbf                                     36

12 행이 선택되었습니다.

SYS @ ora19dw > alter database rename file '/home/oracle/ts200.bdf'
                 to '/home/oracle/ts200.dbf';

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter tablespace ts200 online;

테이블스페이스가 변경되었습니다.

SYS @ ora19dw >
SYS @ ora19dw > @ts

TABLESPACE FILE_NAME                                               MB_SIZE
---------- ------------------------------------------------------- -------
SYSAUX     /home/oracle/sysaux01.dbf                                   570
SYSTEM     /home/oracle/system01.dbf                                   900
TEST_BIG   /home/oracle/test_big01.dbf                                  20
TS01       /home/oracle/kbm/ts01.dbf                                     2
TS02       /home/oracle/ts02.dbf                                        40
TS03       /home/oracle/ts03.dbf                                        20
TS04       /home/oracle/ts04.dbf                                        30
TS07       /home/oracle/ts07.dbf                                      1024
TS100      /home/oracle/ts100.dbf                                        2
TS200      /home/oracle/ts200.dbf                                       10
UNDOTBS1   /home/oracle/undotbs01.dbf                                  340

TABLESPACE FILE_NAME                                               MB_SIZE
---------- ------------------------------------------------------- -------
USERS      /home/oracle/users01.dbf                                     36

12 행이 선택되었습니다.

[문제] os로 가서 다음의 파일들을 전부 다 삭제하고 복구하시오

SYS @ ora19dw > select tablespace_name, file_id, file_name
  2  from dba_data_files
  3  where tablespace_name like 'TS%';

TABLESPACE    FILE_ID FILE_NAME
---------- ---------- -------------------------------------------------------
TS01                5 /home/oracle/kbm/ts01.dbf
TS02                2 /u01/app/oracle/oradata/ORA19DW/ts02.dbf
TS03                9 /u01/app/oracle/oradata/ORA19DW/ts03.dbf
TS04               10 /u01/app/oracle/oradata/ORA19DW/ts04.dbf
TS07               11 /u01/app/oracle/oradata/ORA19DW/ts07.dbf
TS100              12 /home/oracle/ts100.dbf
TS200              13 /home/oracle/ts200.dbf

7 행이 선택되었습니다.

SYS @ ora19dw >
SYS @ ora19dw > exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0에서 분리되었습니다.
[oracle@ora19c ~]$ cd /home/oracle/kbm
[oracle@ora19c kbm]$ ls
sysaux01.dbf  ts01.dbf
[oracle@ora19c kbm]$ rm ts01.dbf

[oracle@ora19c kbm]$ cd /home/oracle
[oracle@ora19c ~]$ ls
arch.sql                java.pool     seg.sql             ts_size.sql
bad.sql                 kbm           sga.sql             ts_status.sql
c.sql                   listener.ora  sga1.sql            공개
control.sql             lock.sql      sga2.sql            다운로드
create_controlfile.sql  log.sql       shared_server.sql   문서
data.sql                logfile.sql   spid.sql            바탕화면
dba.sh                  mystat.sql    start_listener.log  비디오
demo.sql                p.sql         start_listener.sh   사진
dh.sql                  pga.sql       startup.sql         서식
disp.sql                pga1.sql      ts.sql              음악
i.sql                   pga2.sql      ts100.dbf
iname.sql               script.sql    ts200.dbf
[oracle@ora19c ~]$ rm ts100.dbf
[oracle@ora19c ~]$ rm ts200.dbf

[oracle@ora19c ~]$ cd /u01/app/oracle/oradata/ORA19DW
[oracle@ora19c ORA19DW]$ ls
control01.ctl  system01.dbf  temp04.dbf      ts03.dbf       users01.dbf
redo01.log     temp01.dbf    temp5.dbf       ts04.dbf
redo02.log     temp01b.dbf   test_big01.dbf  ts07.dbf
redo03.log     temp03.dbf    ts02.dbf        undotbs01.dbf
[oracle@ora19c ORA19DW]$ rm ts02.dbf
[oracle@ora19c ORA19DW]$ rm ts03.dbf
[oracle@ora19c ORA19DW]$ rm ts04.dbf
[oracle@ora19c ORA19DW]$ rm ts07.dbf


[oracle@ora19c ORA19DW]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on91 16:35:58 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS @ ora19dw > startup force
ORACLE 인스턴스가 시작되었습니다.

Total System Global Area 2902454440 bytes
Fixed Size                  8900776 bytes
Variable Size             536870912 bytes
Database Buffers         2348810240 bytes
Redo Buffers                7872512 bytes
데이터베이스가 마운트되었습니다.
ORA-01157: 데이터 2 파일을 식별 또는 잠금 할 수 없습니다- DBWR 추적 파일을
보십시오
ORA-01110: 2 데이터 파일: '/u01/app/oracle/oradata/ORA19DW/ts02.dbf'


SYS @ ora19dw > select status from v$instance;

STATUS
------------
MOUNTED


SYS @ ora19dw > alter database datafile 5 offline;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 2 offline;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 9 offline;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 10 offline;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 11 offline;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 12 offline;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 13 offline;

데이타베이스가 변경되었습니다.


SYS @ ora19dw > alter database open;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > exit;
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0에서 분리되었습니다.
[oracle@ora19c ORA19DW]$ cd /home/oracle/kbm
[oracle@ora19c kbm]$ rman target /

복구 관리자: Release 19.0.0.0.0 - Production on91 16:38:30 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

대상 데이터베이스에 접속됨: ORA19DW(DBID=1004651899)



RMAN> restore datafile 5;

RMAN> restore datafile 2;

RMAN> restore datafile 9;

RMAN> restore datafile 10;

RMAN> restore datafile 11;

RMAN> restore datafile 12;

RMAN> restore datafile 13;


RMAN> recover datafile 5;

RMAN> recover datafile 2;

RMAN> recover datafile 9;

RMAN> recover datafile 10;

RMAN> recover datafile 11;

RMAN> recover datafile 12;

RMAN> recover datafile 13;

RMAN> exit;


복구 매니저가 완성되었습니다.
[oracle@ora19c kbm]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on91 16:40:33 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0


SYS @ ora19dw > alter database datafile 5 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 2 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 9 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 10 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 11 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 12 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > alter database datafile 13 online;

데이타베이스가 변경되었습니다.

SYS @ ora19dw > connect scott/tiger
연결되었습니다.
SCOTT @ ora19dw >
SCOTT @ ora19dw > select count(*) from emp501;

  COUNT(*)
----------
        14

SCOTT @ ora19dw > select file_id, file_name, status
  2  from dba_data_files
  3  order by file_id;

   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------
         1
/u01/app/oracle/oradata/ORA19DW/system01.dbf
AVAILABLE

         2
/u01/app/oracle/oradata/ORA19DW/ts02.dbf
AVAILABLE

   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------

         3
/home/oracle/kbm/sysaux01.dbf
AVAILABLE

         4
/u01/app/oracle/oradata/ORA19DW/undotbs01.dbf

   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------
AVAILABLE

         5
/home/oracle/kbm/ts01.dbf
AVAILABLE

         7

   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------
/u01/app/oracle/oradata/ORA19DW/users01.dbf
AVAILABLE

         8
/u01/app/oracle/oradata/ORA19DW/test_big01.dbf
AVAILABLE


   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------
         9
/u01/app/oracle/oradata/ORA19DW/ts03.dbf
AVAILABLE

        10
/u01/app/oracle/oradata/ORA19DW/ts04.dbf
AVAILABLE

   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------

        11
/u01/app/oracle/oradata/ORA19DW/ts07.dbf
AVAILABLE

        12
/home/oracle/ts100.dbf

   FILE_ID
----------
FILE_NAME
--------------------------------------------------------------------------------
STATUS
---------
AVAILABLE

        13
/home/oracle/ts200.dbf
AVAILABLE


12 행이 선택되었습니다.

SCOTT @ ora19dw > exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0에서 분리되었습니다.
[oracle@ora19c kbm]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on91 16:42:14 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS @ ora19dw > select status from v$instance;

STATUS
------------
OPEN

SYS @ ora19dw >

0개의 댓글