Data Base/Linux

231214 Linux_FLM, ASSM, tablespace, AUTOEXTEND, ARCHIVELOG mode

잇꼬 2023. 12. 14. 15:20
728x90
반응형
SMALL

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;

 

728x90
반응형
LIST