■ FLM(FreeList Management)
- PCTUSED, FREELISTS, FREELISTS GROUP 사용하는 방식
CREATE TABLESPACE flm_tab
DATAFILE '/u01/app/oracle/oradata/ora11g/flm_tab01.dbf' SIZE 5m
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m
SEGMENT SPACE MANAGEMENT MANUAL;
■ ASSM(Auto Segment Space Management)
1. 자동 segment 공간 관리
2. 각 블록의 상태를 비트맵(bitmap) 값으로 관리하는 방식
3. 공간관리가 자동화된다.
4. ASSM 은 공간관리를 oracel 이 담당하기 때문에 튜닝을 위해 속성을 지정하거나 히든 파라미터 값을 변경할 필요가 없다.
5. 데이터 블록은 여유 공간을 총 6단계로 관리한다.( block의 free 상태를 bitmap 방식으로 관리 )
1) full
2) unformated
3) 0 ~ 25% free
4) 25 ~ 50% free
5) 50 ~ 75% free
6) 75 ~ 100% free
6. 동시에 insert 성능이 향상된다.
CREATE TABLESPACE assm_tab
DATAFILE '/u01/app/oracle/oradata/ora11g/assm_tab01.dbf' SIZE 5m
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m
SEGMENT SPACE MANAGEMENT AUTO;
■ 테이블스페이스 크기 조정
# 테이블 스페이스 생성시에 데이터 파일 자동으로 확잗ㅇ 기능 설
SELECT * FROM dba_data_files;
# AUTOEXTEND 설정
- AUTOEXTENSIBLE 기본값이 NO 이므로 자동확장 설정.
CREATE TABLESPACE insa
DATAFILE '/u01/app/oracle/oradata/ora11g/insa01.dbf' SIZE 5M
AUTOEXTEND ON NEXT 2M MAXSIZE 200M -- 증가분 설정, MAXSIZE 설정안하면 무한.
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m
SEGMENT SPACE MANAGEMENT AUTO;
SELECT * FROM dba_data_files;
SELECT * FROM dba_free_space;
# customer 생성후 확인하기
CREATE TABLESPACE customer
DATAFILE '/u01/app/oracle/oradata/ora11g/customer01.dbf' SIZE 5M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m
SEGMENT SPACE MANAGEMENT AUTO;
SELECT * FROM dba_data_files;
SELECT * FROM dba_free_space;
# 테이블 스페이스 생성 후에 AUTOEXTEND 를 지정하여 자동으로 확장기능 설정
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ora11g/customer01.dbf'
AUTOEXTEND ON NEXT 2M;
SELECT * FROM dba_data_files;
# 데이터 파일을 수동으로 RESIZE 조절
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ora11g/customer01.dbf'
RESIZE 10M;
# 변경 사항 확인
SELECT * FROM dba_data_files;
# 데이터 스페이스에 데이터 파일 추가
ALTER TABLESPACE customer ADD DATAFILE '/u01/app/oracle/oradata/ora11g/customer02.dbf'
SIZE 10M;
SELECT * FROM dba_data_files;
# 데이터 스페이스 생성 후에 AUTOEXTEND 를 지정하여 자동으로 확장기능 설정
ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ora11g/customer02.dbf'
AUTOEXTEND ON NEXT 2M;
SELECT * FROM dba_data_files;
# 꼭! 불필요한 테이블스페이스 삭제
- 컨텐츠 포함해서 삭제(INCLUDING CONTENTS)
( + 내부적으로 사용되는 것이 있어 같이 작성해주는 것이 좋다)
- rm 명령어 사용하지 않아도 datafile 들 삭제 (DATAFILES)
- 실수로 삭제하게 되면 불안정한 복구로 진행해야 한다.
DROP TABLESPACE customer INCLUDING CONTENTS AND DATAFILES;
# 삭제 확인
SELECT * FROM dba_tablespaces;
SELECT * FROM dba_data_files;
# insa_tab 생성
CREATE TABLESPACE insa_tab
DATAFILE '/u01/app/oracle/oradata/ora11g/insa_tab01.dbf' SIZE 5M
AUTOEXTEND ON NEXT 2M MAXSIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1m
SEGMENT SPACE MANAGEMENT AUTO;
# emp table 생성
CREATE TABLE hr.emp
TABLESPACE insa_tab
AS
SELECT * FROM hr.employees;
# 생성 확인
SELECT * FROM dba_tablespaces;
SELECT * FROM dba_data_files;
# segment_subtype 확인
SELECT * FROM dba_segments WHERE owner = 'HR' AND segment_name='EMP';
SELECT * FROM dba_extents WHERE owner = 'HR' AND segment_name='EMP';
■ 테이블 스페이스 READ ONLY
1. 부분 CHECKPOINT 발생
2. 데이터를 읽을 수만 있다.
3. DML 작업수행은 불허하다.
4. read only 모드 : 객체 삭제 가능
ALTER TABLESPACE insa_tab READ ONLY;
- dirty buffer 내리는 작업
# SELECT 문만 실행
SELECT * FROM hr.emp;
UPDATE hr.emp
SET salary = 2000
WHERE employee_id = 100;
# checkpoint 수행
control file 확인하는 방법
SELECT * FROM v$datafile;
# FULL CHECKPOINT
- shutdown 정상적인 종료
- redo only 모드 : 객체 삭제 가능
ALTER SYSTEM checkpoint;
# 객체 삭제 가능후 생성했을 때 오류발생
DROP TABLE hr.emp PURGE;
CREATE TABLE hr.emp
TABLESPACE insa_tab
AS
SELECT * FROM hr.employees;
# READ WRITE(기본) 모드로 변경
ALTER TABLESPACE insa_tab READ WRITE;
# SYSTEM CHECKPOTIN
ALTER SYSTEM checkpoint;
# 모드 확인해보기
SELECT * FROM v$datafile;
■ 테이블 스페이스 OFFLINE
1. 부분 CHECKPOINT 발생
2. 테이블스페이스에 속한 객체들을 사용할 수 없다.
3. OFFLINE 으로 설정할 수 없는 테이블스페이스
1) SYSTEM
2) 활성화 되어 있는 UNDO
3) 기본 TEMP TABLESPACE
-- ALTER TABLESPACE insa_tab OFFLINE NORMAL;
ALTER TABLESPACE insa_tab OFFLINE;
SELECT * FROM v$datafile;
# 테이블 SELECT 문 으로 확인해보기 : 오류발생
SELECT * FROM hr.emp;
# OFFLINE 옵션
1) NORMAL : 부분 CHECKPOINT 발생
# 데이터가 깨졌을 경우 사용
2) TEMPORARY : 가능한 데이터 파일에 속한 DIRTY BUFFER 만 디스크로 쓰는 작업
3) IMMEDIATE : CHECKPOTIN 발생하지 않고 OFFLINE 으로 수행된다. 후에 무조건 복구 작업을 수행해야 한다. ARCHIVELOG mode 에서 수행하는 옵션 (ONLINE 모드일 때 가능)
ALTER TABLESPACE insa_tab ONLINE;
ALTER TABLESPACE insa_tab OFFLINE IMMEDIATE;
# ONLINE BACKUP 일 때 ( ARCHIVELOG mode )
ALTER TABLESPACE insa_tab BEGIN BACKUP;
ALTER TABLESPACE insa_tab END BACKUP;
■ BIGFILE 테이블스페이스
1. 대용량 데이터파일을 단일 파일만 포함한다.
2. 최대 파일의 크기는 8TB ~ 128TB (이용하는 OS 마다 다르다.)
SELECT * FROM dba_tablespaces;
# 추가 작업 할 때, 오류발생
ALTER TABLESPACE big_tab ADD DATAFILE '/u01/app/oracle/oradata/ora11g/big_tab01.dbf' SIZE 10m;
# insa_tab 생성
CREATE TABLESPACE insa_tab
DATAFILE '/u01/app/oracle/oradata/insa_tab01.dbf' SIZE 5M
AUTOEXTEND ON NEXT 2M MAXSIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;
# 테이블 생성
CREATE TABLE hr.emp
TABLESPACE insa_tab
AS
SELECT * FROM hr.employees;
# 테이블 생성 확인
SELECT * FROM hr.emp;
# insa_tab 경로 확인
SELECT * FROM dba_data_files;
[oracle@oracle oradata]$ pwd
/u01/app/oracle/oradata
[oracle@oracle oradata]$ ls
insa_tab01.dbf ora11g
□ 위치 변경 (★응용하지 말것 + 순서)
1. OFFLINE 모드로 변경
ALTER TABLESPACE insa_tab OFFLINE;
SELECT * FROM v$datafile;
2. 물리적으로 데이터 파일을 이동
기존 위치 : /u01/app/oracle/oradata/insa_tab01.dbf
이동 위치 : /u01/app/oracle/oradata/ora11g/insa_tab01.dbf
[oracle@oracle oradata]$ mv -v /u01/app/oracle/oradata/insa_tab01.dbf /u01/app/oracle/oradata/ora11g/insa_tab01.dbf
3. 기존파일을 새로운 파일 위치로 수정
ALTER TABLESPACE insa_tab RENAME DATAFILE
'/u01/app/oracle/oradata/insa_tab01.dbf' TO
'/u01/app/oracle/oradata/ora11g/insa_tab01.dbf';
SELECT * FROM v$datafile;
4. ONLINE 모드로 변경
ALTER TABLESPACE insa_tab ONLINE;
SELECT * FROM v$datafile;
'Data Base > Linux' 카테고리의 다른 글
231218 Linux_데이터 이관 작업 (1) | 2023.12.18 |
---|---|
231214 Linux_UNDO (1) | 2023.12.14 |
231213 Linux_DB, OS DB (0) | 2023.12.13 |
231213 Linux_Redo log file (0) | 2023.12.13 |
231212 Linux_Background Process : Background Process, DBWn, LGWR, CKPT, checkpoint, SMON, PMON, 다중화, 이중화 (0) | 2023.12.12 |