Database/Oracle Database
[오라클] undo segment 할당 원리
Dong538
2022. 2. 22. 19:24
[ undo segment 할당 원리 ]
undo tablespace안에 undo segment가 할당되어 있는 구조.
segment에 할당되지 않은 사용자가 신규로 접속해서 DML을 수행할 경우, 해당 사용자의 서버 프로세스는 트랜잭션이 완료된 세그먼트가 있을 경우 그 undo segment를 덮어쓴다.
모든 사용자가 트랜잭션 완료 전이라면 새로운 undo segment 생성하여 기록한다.
이렇게 undo segment가 데이터파일의 저장공간이 허용하는 범위까지 늘어나다가 만약 데이터 파일에 더 공간이 없으면, 하나의 세그먼트에 두 개 세션 이상의 undo data를 기록한다.
그런 다음에도 공간이 없을 경우 해당 트랜잭션은 에러가 발생한다.
undo tablespace는 크기가 증가하고 줄어들지는 않는 구조이다. 한 가지 대안은 다른 작은 크기의 undo tablespace를 신규로 생성해 undo tablespace를 그곳으로 변경 후 기존 undo tablespace를 삭제하는 방법이 있다.