'DB'에 해당되는 글 54건

  1. 2009.10.31 Partition Table 이란?
  2. 2009.10.31 (10gR2)Full UNDO tablespace
  3. 2009.10.31 Temporary Tablespace Group
  4. 2009.10.29 강좌 리스트

5.1.1 파티션 테이블이란 ?
 
- Partitioning(분할)은 용량이 큰(지속적으로 증가하는) Table들을 Partition이라는 보다 작은 단위로 나눔으로써 성능이 저하되는 것을 방지하고 관리를 보다 수월하게 하고자 하는 개념 입니다.
 
- 각 Partition 은 별개의 Segment에 저장 되어 개별적으로 관리 가능하며, 다른 partition 에 독립적이기 때문에 더 나은 성능을 가져 옵니다.
 
  - 각 Partition은 열(Column)과 제약조건에 대한 정의를 공유하지만 별도의 SEGMENT로 저장되어 물리적인 속성인 PCTFREE, PCTUSED, TABLESPACE 및 STORAGE PARAMETER등은 다르게 지정할 수 있습니다.
 
  - Partition Table과 Index 는 VLDB(Very Large Databases) 즉, Data Warehouse(DW)시스템과 의사결정 시스템의 경우 성능과 관리에 많은 향상을 가져 옵니다.
 
  - Partition의 종류에는 Range partition, Hash partition, List partition, Composite partition이 있습니다.
 

 
5.1.2 파티션 테이블 장점
 
  - 데이터 액세스시 범위를 액세스 범위를 줄여 Performance 향상을 가져올 수 있습니다.

  - 여러 분할 영역으로 관리되어 데이터 훼손 가능성이 감소 되고, I/O 성능 향상을 가져 올 수 있습니다.

  - 각 분할 영역을 독립적으로 백업하고 복구 할 수 있습니다.







  ================================================
    * 데이터베이스 정보공유 커뮤니티 oracleclub.com
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================

'DB > Oracle 10g 강좌' 카테고리의 다른 글

Hash Partition  (0) 2009.10.31
Range Partition  (0) 2009.10.31
(10gR2)Full UNDO tablespace  (0) 2009.10.31
Temporary Tablespace Group  (0) 2009.10.31
강좌 리스트  (0) 2009.10.29
Posted by 야동우
,

PURPOSE


10gR2 에서 UNDO tablespace 을 NO AUTOEXTEND로 생성한 경우 ,
transaction 이 실행중인 database 에서는 UNDO tablespace 가
FULL인 현상을 보게 됩니다.
이는 10gR2 에서 max retention 을 보장하는 undo retention 의
메카니즘이 소개되어 autoextend off 인 경우의 UNDO tablespace
에서 나타나는 현상입니다.
dba_undo_extents 에서 많은 UNEXPIRED undo segment 가 보이는 것이
확인되고 UNDO tablespace 가 100% full 인것처럼 나타나는 현상을 볼 수
있으며 그럼에도 불구하고 ORA-1555 나 ORA-30036 에러는 발생하지 않습니다.

Explanation


다음과 같이 많은 UNEXPIRED undo segment 가 조회됩니다.

SQL> select count(status) from dba_undo_extents where status = 'UNEXPIRED';

COUNT(STATUS)

463

SQL> select count(status) from dba_undo_extents where status = 'EXPIRED';

COUNT(STATUS)

20

SQL> select count(status) from dba_undo_extents where status = 'ACTIVE';

COUNT(STATUS)

21

dba_free_space 을 조회 결과 UNDO tablespace 의 free space 가 존재합니다.

SUM(BYTES)/(1024*1024) TABLESPACE_NAME


---------------------
3 UNDOTBS1
58.4375 SYSAUX
3 USERS3
4.3125 SYSTEM
103.9375 USERS04

Transaction 이 실행되면 UNDO tablespace 에 free space 가 조회되지 않는
FULL 인것처럼 보입니다.

SUM(BYTES)/(1024*1024) TABLESPACE_NAME
----------------
58.25 SYSAUX
98 USERS3
4.3125 SYSTEM
87.9375 USERS04


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
다음은 AUM 에서의 Undo Block 할당 알고리즘은 다음과 같습니다.

1. current extent 에 free block 이 있으면 다음 free block 이
할당됩니다.
2. 그러나, free block 이 없으면, next extent 가 expired 되었다면 next extent 을
warp 한후 그 next extent 의 처음 block 을 return 합니다.
3. 만약 next extent 가 expired 되지 않았다면 UNDO tablespace 로부터 먼저
space 을 찾습니다. 이때 free extent 가 존재한다면 이를 transaction table 에
할당하고 해당 next extent 의 첫번째 block 을 return 합니다.
4. 만약 UNDO tablespace 에 free extent 가 없다면 offline 된 transaction table
에서 steal 합니다.
offline 된 transaction table 에서 extent 을 deallocate 한후 이를
current transaction table 에 add한후 그 add 한 extent 의 첫번째 free block 을
return 합니다.
5. offline 된 transaction table 에서 찾을수 없으면 , online 되어 있는
transaction table 에서 steal 합니다. offline 된 transaction table 에서 extent 을
deallocate 한후 이를 current transaction table 에 add한후 , 그 add 한 extent 의
첫번째 free block 을 return 합니다.
6. 1번~5번 까지 하여도 free block 을 얻지 못하면 이제 UNDO tablespace 의 file 을
extend 합니다.
file 이 extend 된다면 이후 current transaction table 에 extent 을 add 한후 ,
그 extent 의 첫번째 free block 을 return 합니다.
7. 6번 에서 UNDO tablespace 의 file 을 extend 하지 못했다면 , 자기의 transaction table
에서 unexpired 된 extent 을 재사용합니다. 그런데 이때 모든 extent 가 busy 하다면
즉 모두 uncommitted 된 정보라면 8번으로 갑니다. 아니라면 wrap 하여 unexpired 된
extent 을 사용합니다.
8. offline 된 transaction table 에서 unexpired 된 extent 을 steal 합니다. 이것이
실패한다면 online 된 transaction table 에서 unexpired 된 extent 을 steal 합니다.
9. 8 번까지 수행하고도 free block 을 얻지 못하면 이때서야 오라클에서는
"ORA-30036 unable to extend segment by %s in undo tablespace '%s' " 에러를
뿌리며 실패합니다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

fixed size UNDO tablespace 라 함은 autoextend 가 off 라 datafile 을 자동으로
더 이상 확장할 수 없음을 말합니다.
autoextend 가 off 인 경우 10.2 부터는 max retention 이 36 시간 입니다.
undo_retention 을 900 초(15 분) 으로 설정을 한다고 해도 10gR2 에서는
max retention 이 36 시간이라 이에 해당하는 undo extent 을 UNEXPIRED 으로 만듭니다.
그러나 이것이 가용한 undo extent 가 없다는 것이 아니고 , transaction 이 실행되게 되면
UNEXPIRED undo segment 을 재사용하게 됩니다.

References


< Note 413732.1 - Full UNDO Tablespace In 10gR2 >


Written by knam in Forums.Oracle.com

'DB > Oracle 10g 강좌' 카테고리의 다른 글

Hash Partition  (0) 2009.10.31
Range Partition  (0) 2009.10.31
Partition Table 이란?  (0) 2009.10.31
Temporary Tablespace Group  (0) 2009.10.31
강좌 리스트  (0) 2009.10.29
Posted by 야동우
,

Temporary Tablespace Group
 - Oracle 10g 에서는 Temporary Tablespaces 에 대해 Group 을 지정하여 생성할 수 있다.
 - 하나의 Temporary Tablespace Group 은 적어도 하나의 Tablespace 가 존재해야 한다.
 - Temporary Tablespace 와 Group Name은 동일하게 지정할 수 없다.
 - Temporary Tablespace Group 은  한 Group 에서 다른 Group 으로 Move 가 가능하고 Group 내에서 삭제 될 수 있으며 추가적으로 add 가 가능하다.


Temporary Tablespace Group의 장점
 - Sort 결과를 유지하여 공간의 낭비를 막을 수 있다.
 - 동시에 여러 개의 Session Connect시에도 서로 다른 Temporary Tablespaces 를 사용함으로써 Temporary Tablespaces 의 사용을 분산 시킬 수 있다.
 - Parallel Operation 시에도 Multiple Temporary Tablespaces 사용이 가능하다.


Temporary Tablespace Group의 생성

-- temp1 temporary tablespace 를 group1에 생성.  group1이 없으면 자동으로 생성
CREATE TEMPORARY TABLESPACE temp1 TEMPFILE ’tmp1.f’
SIZE 100M TABLESPACE GROUP group1;


-- temp2 temporary tablespace 를 group2에 생성.  group2가 없으면 자동으로 생성
CREATE TEMPORARY TABLESPACE temp2 TEMPFILE ’tmp2.f’
SIZE 200M TABLESPACE GROUP group2;


-- temp3 temporary tablespace 생성.  어떤 그룹에도 포함되지 않는다.
CREATE TEMPORARY TABLESPACE temp3 TEMPFILE ’tmp3.f’
SIZE 50M TABLESPACE GROUP ’’;

위 문장은 아래 문장과 동일함
=> CREATE TEMPORARY TABLESPACE temp3 TEMPFILE ’tmp3.f’ SIZE 50M;


Temporary Tablespace Group의 변경

-- temp3 의 그룹을 group2로 변경.   group2가 없으면 자동으로 생성
ALTER TABLESPACE temp3 TABLESPACE GROUP group2;


-- temp2 를 그룹에서 제거
ALTER TABLESPACE temp2 TABLESPACE GROUP ’’;


-- temp1 의 그룹을 group2로 변경
ALTER TABLESPACE temp1 TABLESPACE GROUP group2;


-- Temporary Tablespace group2그룹을 디폴트로 설정
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group2;


-- 사용자 생성지 지정
CREATE USER hr IDENTIFIED BY hr DEFAULT
TABLESPACE TS1 TEMPORARY TABLESPACE group2;


-- ALTER 명령으로 사용자에게 지정
ALTER USER hr TEMPORARY TABLESPACE group2;




  ================================================
    * 데이터베이스 정보공유 커뮤니티 oracleclub.com
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================

'DB > Oracle 10g 강좌' 카테고리의 다른 글

Hash Partition  (0) 2009.10.31
Range Partition  (0) 2009.10.31
Partition Table 이란?  (0) 2009.10.31
(10gR2)Full UNDO tablespace  (0) 2009.10.31
강좌 리스트  (0) 2009.10.29
Posted by 야동우
,

Oracle 10g 강좌 oracleclub.com
  제 목 강좌등록일 조회수  
Oracle10g에서 CONNECT BY의 새로운 기능들 [8] 2006-04-12 20,258
아래 강좌는 Oracle10g의 내용을 새롭게 정리했습니다.
1. Architecture,아키텍처 2006-04-10 9,170
1.1 Overview of the System Global Area
1.1.1 The SGA_MAX_SIZE Initialization Parameter [1] 2006-04-10 8,189
1.1.2 Automatic Shared Memory Management,ALTER SYSTEM 2006-04-10 3,489
1.1.3 Database buffer cache [1] 2006-04-10 4,814
1.1.4 Redo log buffer, Shared pool, Large pool 2006-04-10 3,836
1.2 Overview of the Program Global Areas 2006-04-10 3,600
2. Process Architecture
2.1 User Processes, Server Processes [1] 2006-04-10 3,859
2.2 Background Process 2006-04-10 7,242
3. Data Blocks, Extents, and Segments
3.1 Overview of Data Blocks 2006-04-10 3,018
3.1.1 PCTFREE, PCTUSED, and Row Chaining [1] 2006-04-10 3,795
3.1.2 Automatic Space Segment Management [1] 2006-04-10 2,784
3.2 Overview of Extents [2] 2006-04-11 3,873
3.3 Overview of Segments 2006-04-11 5,002
4. Tablespaces
4.1 Datafiles and Tablespaces 2006-04-11 4,926
4.2 Overview of Tablespaces 2006-04-11 6,674
4.3 테이블스페이스를 할당하는 방법 [2] 2006-04-11 8,702
4.4 Bigfile Tablespace [1] 2007-08-06 2,677
4.5 Temporary Tablespace Group 2007-08-06 3,674
4.6 (10gR2)Full UNDO tablespace 2008-10-29 2,022
5. Managing Partitioned Tables and Indexes
5.1 Partition Table 이란? [3] 2006-06-17 6,922
5.2 Range Partition 2006-06-17 7,909
5.3 Hash Partition 2006-06-17 3,287
5.4 List Partition 2006-06-18 4,701
5.5 Composite Partition
5.5.1 Composite Range-Hash Partitioning 2006-06-18 1,871
5.5.2 Composite Range-List Partitioning 2006-06-18 2,482
5.6 파티션 인덱스 [2] 2006-06-18 8,860
6. RAC(Real Application Cluster) 2007-08-06 3,934
※ 오라클클럽의 강좌를 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
※ 오라클클럽의 강좌는 개인의 학습용으로만 사용 할 수 있습니다. 학원 홍보용이나 수익을 얻기 위한 용도로
    사용 할 수 없습니다.

'DB > Oracle 10g 강좌' 카테고리의 다른 글

Hash Partition  (0) 2009.10.31
Range Partition  (0) 2009.10.31
Partition Table 이란?  (0) 2009.10.31
(10gR2)Full UNDO tablespace  (0) 2009.10.31
Temporary Tablespace Group  (0) 2009.10.31
Posted by 야동우
,