[Oracle] 데이터베이스의 논리적 구조1 (테이블 스페이스)

·2025년 8월 22일
0

오라클 관리

목록 보기
30/163

ㄴ ⭐ 암기


실습1. 데이터 베이스를 확인합니다.

SQL> select name from v$database;

NAME
---------
ORA19

SQL>

실습2. 테이블 스페이스가 뭐가 있는지 확인하시오

SQL> ed ts.sql

SQL> !cat ts.sql
col tablespace_name for a10
col file_name for a55
col mb_size for 9999

select tablespace_name, file_name, bytes/1024/1024 mb_size
 from dba_data_files;
 
SQL> @ts

TABLESPACE FILE_NAME
---------- -------------------------------------------------------
USERS      /u01/app/oracle/oradata/ORA19/users01.dbf
UNDOTBS1   /u01/app/oracle/oradata/ORA19/undotbs01.dbf
SYSTEM     /u01/app/oracle/oradata/ORA19/system01.dbf
SYSAUX     /u01/app/oracle/oradata/ORA19/sysaux01.dbf

실습3. ts01 이라는 테이블 스페이스를 사이즈 10m로 생성하시오

SQL> create  tablespace ts01
  2    datafile '/u01/app/oracle/oradata/ORA19/ts01.dbf' size 10m;

테이블스페이스가 생성되었습니다.

SQL> @ts

TABLESPACE FILE_NAME                                               MB_SIZE
---------- ------------------------------------------------------- -------
SYSTEM     /u01/app/oracle/oradata/ORA19/system01.dbf                 1330
SYSAUX     /u01/app/oracle/oradata/ORA19/sysaux01.dbf                  630
TS01       /u01/app/oracle/oradata/ORA19/ts01.dbf                       10
USERS      /u01/app/oracle/oradata/ORA19/users01.dbf                   110
UNDOTBS1   /u01/app/oracle/oradata/ORA19/undotbs01.dbf                 410

실습4. scott으로 접속해서 ts01 테이블 스페이스에 emp777 라는 테이블을 생성하시오

SQL> connect scott/tiger
연결되었습니다.
SQL>
SQL> create table emp777
  2  ( empno  number(10),
  3    ename  varchar2(20),
  4    sal   number(10) )
  5   tablespace ts01;

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

SQL> insert into emp777
  2   select empno, ename, sal
  3    from emp;

14 행이 생성되었습니다.

SQL> commit;

커밋이 완료되었습니다.

문제1. ts02 라는 테이블 스페이스를 사이즈 20m 로 생성하고 여기에 dept777 테이블을 scott 의 dept 테이블과 똑같이 만드시오. 데이터도 똑같이 만드시오

SQL> connect / as sysdba
연결되었습니다.
SQL>
SQL> create tablespace ts02
      datafile  '/u01/app/oracle/oradata/ORA19/ts02.dbf' size 20m;

테이블스페이스가 생성되었습니다.

SQL> connect scott/tiger
연결되었습니다.
SQL>
SQL> create table dept777
     tablespace ts02
     as
      select *
      from dept;

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

SQL> col table_name for a10
SQL> select table_name, tablespace_name
      from user_tables;

TABLE_NAME TABLESPACE
---------- ----------
EMP        USERS
EMPLOYEES  USERS
DEPARTMENT USERS
S

DEPT       USERS
EMP_YYS    USERS
EMP777     TS01
MCUSTSUM   USERS
DEPT777    TS02

8 행이 선택되었습니다.

문제2. 테이블 스페이스를 생성을 했으면 반드시 백업을 해야합니다. 테이블 스페이스 ts01을 다음과 같이 백업합니다.

[oracle@ora19c ~]$ rman target / RMAN> backup tablespace ts01;


[oracle@ora19c ~]$
[oracle@ora19c ~]$ rman target /

복구 관리자: Release 19.0.0.0.0 - Production on822 15:26:58 2025
Version 19.3.0.0.0

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

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

RMAN> backup tablespace ts01;

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

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

RMAN>

문제3. ts02 테이블 스페이스도 백업 받으세요

RMAN> backup tablespace ts02;

25/08/22에서 backup() 시작하는 중입니다.
채널 ORA_DISK_1 사용 중
ORA_DISK_1 채널: 전체 데이터 파일 백업 집합을 시작하는 중입니다.
ORA_DISK_1 채널: 백업 집합에서 데이터 파일을 지정하는 중입니다.
입력 데이터 파일 번호=00002 이름=/u01/app/oracle/oradata/ORA19/ts02.dbf
채널 ORA_DISK_1: 25/08/22에서 1 조각을 시작하는 중입니다.
채널 ORA_DISK_1: 25/08/22에서 1 조각을 완료했습니다.
조각 핸들=/u01/app/oracle/fast_recovery_area/ORA19/backupset/2025_08_22/o1_mf_nnndf_TAG20250822T152812_nbj3hw9n_.bkp 태그=TAG20250822T152812 주석=NONE
채널 ORA_DISK_1: 백업 집합 완료, 경과 시간: 00:00:01
25/08/22에서 backup() 종료했습니다.

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

🔸 이론2. 오라클 주요 테이블 스페이스의 종류

1. system  :   데이터 사전을 저장하고 있는 테이블 스페이스
                      ↓
                   user_xxx  : 내가 직접 만든 객체들
                   all_xxx   :  내가 직접 만든거 + 다른 유져가 나에게 보라고 권한 준거
                   dba_xxx   : 데이터 베이스의 모든 객체들

           오라클을 운영하기 위한 아주 중요한 데이터가 여기 들어있기 때문에
           만약 system tablespace 가 손상이되면 db 운영이 안됩니다. 

2. sysaux   :  오라클 성능을 분석할 수 있는 데이터가 들어있는 테이블 스페이스 입니다.

3. undotbs1 :  롤백을 하기 위한 데이터가 들어있는 테이블 스페이스 입니다. 

4. users  :    emp 테이블과 같은 사용자 데이터가 들어있는 테이블 스페이스 입니다.

5. example :  hr 계정, sh 계정의 테이블들이 저장되어있는 테이블 스페이스 입니다.

0개의 댓글