[Oracle] 테이블스페이스 관리 총정리

·2025년 9월 2일

오라클 관리

목록 보기
78/163

[실습1] ora19는 shutdown abort 하고 ora19dw 를 startup 하시오

[oracle@ora19c ~]$ sys

SQL*Plus: Release 19.0.0.0.0 - Production on92 16:16:12 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 @ ORA19 > shutdown abort
ORACLE 인스턴스가 종료되었습니다.


SYS @ ORA19 > SYS @ ORA19 > SYS @ ORA19 >
SYS @ ORA19 >
SYS @ ORA19 > exit;
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0에서 분리되었습니다.

[oracle@ora19c ~]$
[oracle@ora19c ~]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on92 16:16:26 2025
Version 19.3.0.0.0

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

휴지 인스턴스에 접속되었습니다.

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

Total System Global Area 2415917880 bytes
Fixed Size                  8899384 bytes
Variable Size             520093696 bytes
Database Buffers         1879048192 bytes
Redo Buffers                7876608 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.
SYS @ ora19dw >

[문제] 다음의 테이블스페이스 설정을 하나씩 하시오

  1. TS 로 시작하는 테이블 스페이스를 모두 DROP 하시오
  2. hr_data_ts 테이블 스페이스를 500mb로 생성하시오
  3. hr_index_ts 테이블 스페이스를 500mb 로 생성하시오
  4. /home/oracle 에 있는 hr.dmp 를 이용해서 ora19dw 에 데이터를 hr 계정에 import 하시오
  5. hr의 테이블은 hr_data_ts 에 이동하고 hr의 인덱스는 hr_index_ts 에 저장되게 하시오

1. TS 로 시작하는 테이블 스페이스를 모두 DROP 하시오

orange에서

select 'drop tablespace ' || tablespace_name
        || ' including contents and datafiles cascade constraints;'
 from dba_tablespaces
 where tablespace_name like 'TS%';

drop tablespace TS01 including contents and datafiles cascade constraints;
drop tablespace TS02 including contents and datafiles cascade constraints;
drop tablespace TS03 including contents and datafiles cascade constraints;
drop tablespace TS04 including contents and datafiles cascade constraints;
drop tablespace TS07 including contents and datafiles cascade constraints;
drop tablespace TS100 including contents and datafiles cascade constraints;
drop tablespace TS200 including contents and datafiles cascade constraints;

2. hr_data_ts 테이블 스페이스를 500mb로 생성하시오

3. hr_index_ts 테이블 스페이스를 500mb 로 생성하시오

orange에서

create tablespace hr_data_ts 
 datafile '/u01/app/oracle/oradata/ORA19DW/hr_data_ts01.dbf' size 500m;
 
create tablespace hr_index_ts 
 datafile '/u01/app/oracle/oradata/ORA19DW/hr_index_ts01.dbf' size 500m;

4. /home/oracle 에 있는 hr.dmp 를 이용해서 ora19dw 에 데이터를 hr 계정에 import 하시오

putty에서

[oracle@ora19c ORA19]$ exp hr/hr owner=hr file=hr.dmp

Export: Release 19.0.0.0.0 - Production on92 16:56:39 2025
Version 19.3.0.0.0

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


다음에 접속됨: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
AL32UTF8 문자 설정과 AL16UTF16 NCHAR 문자 설정에서 익스포트가 종료되었습니다

지정된 사용자를 익스포트하려고 합니다 ...
. 스키마 이전 단계의 객체와 작업을 엑스포트합니다\r

. HR 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. PUBLIC 유형 동의어 익스포트 중
. 전용 유형 동의어 익스포트 중
. HR 사용자의 객체 유형 정의를 익스포트합니다.
HR의 객체를 익스포트하려고 합니다 ...
. 데이터베이스 링크 익스포트 중
. 순차 번호 익스포트 중
. 클러스터 정의 익스포트 중
. HR의 테이블을 익스포트하려고 합니다 via 규정 경로...
. .                       COUNTRIES 테이블 익스포트 중         25 행이 엑스포트됨
. 동의어 익스포트 중
. 뷰 익스포트 중
. 저장 프로시저 익스포트 중
. 작업을 엑스포트합니다
. 참조 무결성 제약조건 익스포트 중
. 트리거 익스포트 중
. 인덱스유형을 엑스포팅합니다
. 비트맵, 함수, 기능과 확장 가능한 인덱스들을 엑스포트합니다
. 이후 테이블 처리 익스포트 중
. 구체화된 뷰 익스포트 중
. 스냅샷 로그 익스포트 중
. 작업 대기열 익스포트 중
. 새로고침 그룹과 하위 그룹 익스포트 중
. 차원을 엑스포트합니다
. 스키마 이후 단계의 객체와 작업을 엑스포트합니다\r

. 통계를 엑스포트합니다
익스포트가 경고 없이 정상적으로 종료되었습니다.
[oracle@ora19c ORA19]$ ls -l hr.dmp
-rw-r--r--. 1 oracle oinstall 16384  9월  2 16:56 hr.dmp
[oracle@ora19c ORA19]$ drop user hr cascade;
bash: drop: 명령을 찾을 수 없습니다...
[oracle@ora19c ORA19]$ sysdw

SQL*Plus: Release 19.0.0.0.0 - Production on92 16:57:00 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 > drop user hr cascade;

사용자가 삭제되었습니다.

SYS @ ora19dw > create user hr
  2             identified by hr;

사용자가 생성되었습니다.

SYS @ ora19dw > grant dba to hr;

권한이 부여되었습니다.

SYS @ ora19dw > exit;
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0에서 분리되었습니다.
[oracle@ora19c ORA19]$ cd
[oracle@ora19c ~]$ imp hr/hr file=hr.dmp fromuser=hr touser=hr

Import: Release 19.0.0.0.0 - Production on92 17:23:45 2025
Version 19.3.0.0.0

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


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

익스포트 파일은 규정 경로를 거쳐 EXPORT:V19.00.00 에 의해 생성되었습니다
AL32UTF8 문자집합과 AL16UTF16 NCHAR 문자 집합에 임포트가 완성되었습니다
IMP-00403:

경고: 이 임포트는 권한 문제로 인해 실패한 DDL이 포함된 개별 SQL 파일 "import_sys"() 생성했습니다.

. . 테이블                    "COUNTRIES"()을 임포트 중         25 행이 임포트되었습니다
. . 테이블                  "DEPARTMENTS"()을 임포트 중         27 행이 임포트되었습니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14063 오류가 발생했습니다:
 "ALTER TABLE "DEPARTMENTS" ADD  CONSTRAINT "DEPT_ID_PK" PRIMARY KEY ("DEPART"
 "MENT_ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE "SYSAUX"
 "" LOGGING"
IMP-00003: ORACLE 오류 14063() 발생했습니다.
ORA-14063: 고유/기본 키 제약조건에 사용되지 않은 인덱스가 존재합니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14048 오류가 발생했습니다:
 "ALTER INDEX "DEPT_ID_PK" UNUSABLE ENABLE "
IMP-00003: ORACLE 오류 14048() 발생했습니다.
ORA-14048: 분할영역 유지 작업이 다른 작업과 결합할 수 없습니다
. . 테이블                    "EMPLOYEES"()을 임포트 중        107 행이 임포트되었습니다
. . 테이블                         "JOBS"()을 임포트 중         19 행이 임포트되었습니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14063 오류가 발생했습니다:
 "ALTER TABLE "JOBS" ADD  CONSTRAINT "JOB_ID_PK" PRIMARY KEY ("JOB_ID") USING"
 " INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE "SYSAUX" LOGGING"
IMP-00003: ORACLE 오류 14063() 발생했습니다.
ORA-14063: 고유/기본 키 제약조건에 사용되지 않은 인덱스가 존재합니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14048 오류가 발생했습니다:
 "ALTER INDEX "JOB_ID_PK" UNUSABLE ENABLE "
IMP-00003: ORACLE 오류 14048() 발생했습니다.
ORA-14048: 분할영역 유지 작업이 다른 작업과 결합할 수 없습니다
. . 테이블                  "JOB_HISTORY"()을 임포트 중         10 행이 임포트되었습니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14063 오류가 발생했습니다:
 "ALTER TABLE "JOB_HISTORY" ADD  CONSTRAINT "JHIST_EMP_ID_ST_DATE_PK" PRIMARY"
 " KEY ("EMPLOYEE_ID", "START_DATE") USING INDEX PCTFREE 10 INITRANS 2 MAXTRA"
 "NS 255 TABLESPACE "SYSAUX" LOGGING"
IMP-00003: ORACLE 오류 14063() 발생했습니다.
ORA-14063: 고유/기본 키 제약조건에 사용되지 않은 인덱스가 존재합니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14048 오류가 발생했습니다:
 "ALTER INDEX "JHIST_EMP_ID_ST_DATE_PK" UNUSABLE ENABLE "
IMP-00003: ORACLE 오류 14048() 발생했습니다.
ORA-14048: 분할영역 유지 작업이 다른 작업과 결합할 수 없습니다
. . 테이블                    "LOCATIONS"()을 임포트 중         23 행이 임포트되었습니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14063 오류가 발생했습니다:
 "ALTER TABLE "LOCATIONS" ADD  CONSTRAINT "LOC_ID_PK" PRIMARY KEY ("LOCATION_"
 "ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE "SYSAUX" LOG"
 "GING"
IMP-00003: ORACLE 오류 14063() 발생했습니다.
ORA-14063: 고유/기본 키 제약조건에 사용되지 않은 인덱스가 존재합니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14048 오류가 발생했습니다:
 "ALTER INDEX "LOC_ID_PK" UNUSABLE ENABLE "
IMP-00003: ORACLE 오류 14048() 발생했습니다.
ORA-14048: 분할영역 유지 작업이 다른 작업과 결합할 수 없습니다
. . 테이블                      "REGIONS"()을 임포트 중          4 행이 임포트되었습니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14063 오류가 발생했습니다:
 "ALTER TABLE "REGIONS" ADD  CONSTRAINT "REG_ID_PK" PRIMARY KEY ("REGION_ID")"
 " USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 TABLESPACE "SYSAUX" LOGGING"
IMP-00003: ORACLE 오류 14063() 발생했습니다.
ORA-14063: 고유/기본 키 제약조건에 사용되지 않은 인덱스가 존재합니다
IMP-00017: 다음 명령이 실패하고 ORACLE 14048 오류가 발생했습니다:
 "ALTER INDEX "REG_ID_PK" UNUSABLE ENABLE "
IMP-00003: ORACLE 오류 14048() 발생했습니다.
ORA-14048: 분할영역 유지 작업이 다른 작업과 결합할 수 없습니다
IMP-00017: 다음 명령이 실패하고 ORACLE 2270 오류가 발생했습니다:
 "ALTER TABLE "DEPARTMENTS" ADD CONSTRAINT "DEPT_LOC_FK" FOREIGN KEY ("LOCATI"
 "ON_ID") REFERENCES "LOCATIONS" ("LOCATION_ID") ENABLE NOVALIDATE"
IMP-00003: ORACLE 오류 2270() 발생했습니다.
ORA-02270: 이 열목록에 대해 일치하는 고유 또는 기본 키가 없습니다.
IMP-00017: 다음 명령이 실패하고 ORACLE 2270 오류가 발생했습니다:
 "ALTER TABLE "JOB_HISTORY" ADD CONSTRAINT "JHIST_JOB_FK" FOREIGN KEY ("JOB_I"
 "D") REFERENCES "JOBS" ("JOB_ID") ENABLE NOVALIDATE"
IMP-00003: ORACLE 오류 2270() 발생했습니다.
ORA-02270: 이 열목록에 대해 일치하는 고유 또는 기본 키가 없습니다.
IMP-00017: 다음 명령이 실패하고 ORACLE 2270 오류가 발생했습니다:
 "ALTER TABLE "JOB_HISTORY" ADD CONSTRAINT "JHIST_DEPT_FK" FOREIGN KEY ("DEPA"
 "RTMENT_ID") REFERENCES "DEPARTMENTS" ("DEPARTMENT_ID") ENABLE NOVALIDATE"
IMP-00003: ORACLE 오류 2270() 발생했습니다.
ORA-02270: 이 열목록에 대해 일치하는 고유 또는 기본 키가 없습니다.
IMP-00017: 다음 명령이 실패하고 ORACLE 2270 오류가 발생했습니다:
 "ALTER TABLE "COUNTRIES" ADD CONSTRAINT "COUNTR_REG_FK" FOREIGN KEY ("REGION"
 "_ID") REFERENCES "REGIONS" ("REGION_ID") ENABLE NOVALIDATE"
IMP-00003: ORACLE 오류 2270() 발생했습니다.
ORA-02270: 이 열목록에 대해 일치하는 고유 또는 기본 키가 없습니다.
IMP-00017: 다음 명령이 실패하고 ORACLE 2270 오류가 발생했습니다:
 "ALTER TABLE "EMPLOYEES" ADD CONSTRAINT "EMP_DEPT_FK" FOREIGN KEY ("DEPARTME"
 "NT_ID") REFERENCES "DEPARTMENTS" ("DEPARTMENT_ID") ENABLE NOVALIDATE"
IMP-00003: ORACLE 오류 2270() 발생했습니다.
ORA-02270: 이 열목록에 대해 일치하는 고유 또는 기본 키가 없습니다.
IMP-00017: 다음 명령이 실패하고 ORACLE 2270 오류가 발생했습니다:
 "ALTER TABLE "EMPLOYEES" ADD CONSTRAINT "EMP_JOB_FK" FOREIGN KEY ("JOB_ID") "
 "REFERENCES "JOBS" ("JOB_ID") ENABLE NOVALIDATE"
IMP-00003: ORACLE 오류 2270() 발생했습니다.
ORA-02270: 이 열목록에 대해 일치하는 고유 또는 기본 키가 없습니다.
제약 조건을 사용으로 설정에 대한 정보...
IMP-00017: 다음 명령이 실패하고 ORACLE 2430 오류가 발생했습니다:
 "ALTER TABLE "DEPARTMENTS" ENABLE CONSTRAINT "DEPT_LOC_FK""
IMP-00017: 다음 명령이 실패하고 ORACLE 2430 오류가 발생했습니다:
 "ALTER TABLE "JOB_HISTORY" ENABLE CONSTRAINT "JHIST_JOB_FK""
IMP-00017: 다음 명령이 실패하고 ORACLE 2430 오류가 발생했습니다:
 "ALTER TABLE "JOB_HISTORY" ENABLE CONSTRAINT "JHIST_DEPT_FK""
IMP-00017: 다음 명령이 실패하고 ORACLE 2430 오류가 발생했습니다:
 "ALTER TABLE "COUNTRIES" ENABLE CONSTRAINT "COUNTR_REG_FK""
IMP-00017: 다음 명령이 실패하고 ORACLE 2430 오류가 발생했습니다:
 "ALTER TABLE "EMPLOYEES" ENABLE CONSTRAINT "EMP_DEPT_FK""
IMP-00017: 다음 명령이 실패하고 ORACLE 2430 오류가 발생했습니다:
 "ALTER TABLE "EMPLOYEES" ENABLE CONSTRAINT "EMP_JOB_FK""
경고와 함께 임포트가 정상 종료되었습니다.
[oracle@ora19c ~]$

5. hr의 테이블은 hr_data_ts 에 이동하고 hr의 인덱스는 hr_index_ts 에 저장되게 하시오

orange에서

select 'alter table hr.' || table_name || ' move tablespace hr_data_ts;'
 from dba_tables
 where owner='HR' and table_name !='COUNTRIES';
 
alter table hr.DEPARTMENTS move tablespace hr_data_ts;
alter table hr.EMPLOYEES move tablespace hr_data_ts;
alter table hr.JOBS move tablespace hr_data_ts;
alter table hr.JOB_HISTORY move tablespace hr_data_ts;
alter table hr.LOCATIONS move tablespace hr_data_ts;
alter table hr.REGIONS move tablespace hr_data_ts;

SELECT table_name, tablespace_name 
FROM dba_tables 
WHERE owner = 'HR';



select 'alter index hr.' || index_name || ' rebuild online tablespace hr_index_ts;'
 from dba_indexes
 where owner='HR' and table_name !='COUNTRIES';

alter index hr.DEPT_ID_PK rebuild online tablespace hr_index_ts;
alter index hr.DEPT_LOCATION_IX rebuild online tablespace hr_index_ts;
alter index hr.JOB_ID_PK rebuild online tablespace hr_index_ts;
alter index hr.JHIST_EMP_ID_ST_DATE_PK rebuild online tablespace hr_index_ts;
alter index hr.JHIST_JOB_IX rebuild online tablespace hr_index_ts;
alter index hr.JHIST_EMPLOYEE_IX rebuild online tablespace hr_index_ts;
alter index hr.JHIST_DEPARTMENT_IX rebuild online tablespace hr_index_ts;
alter index hr.LOC_ID_PK rebuild online tablespace hr_index_ts;
alter index hr.LOC_CITY_IX rebuild online tablespace hr_index_ts;
alter index hr.LOC_STATE_PROVINCE_IX rebuild online tablespace hr_index_ts;
alter index hr.LOC_COUNTRY_IX rebuild online tablespace hr_index_ts;
alter index hr.REG_ID_PK rebuild online tablespace hr_index_ts;
alter index hr.EMP_EMAIL_UK rebuild online tablespace hr_index_ts;
alter index hr.EMP_EMP_ID_PK rebuild online tablespace hr_index_ts;
alter index hr.EMP_DEPARTMENT_IX rebuild online tablespace hr_index_ts;
alter index hr.EMP_JOB_IX rebuild online tablespace hr_index_ts;
alter index hr.EMP_MANAGER_IX rebuild online tablespace hr_index_ts;
alter index hr.EMP_NAME_IX rebuild online tablespace hr_index_ts;
alter index hr.EMP_HIRE_DATE_IX rebuild online tablespace hr_index_ts;

select index_name, tablespace_name
 from dba_indexes
 where owner='HR';


system 테이블스페이스에 여유공간 주기

alter  tablespace sysaux
 add datafile '/u01/app/oracle/oradata/ORA19DW/sysaux02.dbf' size 100m;

0개의 댓글