undo tablespace 안의 undo segment는 사용자별 할당? 세그먼트별 할당? 0 5 2,559

by lacoste [Oracle Admin] undo segment undo [2015.02.09 16:40:52]


안녕하세요. 구루비 회원 여러분 책을 보며 공부를 하다가 의문 점이 생겼는데

undo segment의 할당 단위는 사용자별인지, 세션별인지 궁금합니다.

 

책의 전반부에는 사용자별이라고 했다가, 책의 후반부에는 세션별이라고 설명을 하네요...

여러분들의 지식 공유 부탁드립니다. 감사합니다!

by 타락천사 [2015.02.09 21:52:06]

둘다 맞아요

사용자 세션별이니

사용자가 SERIAL 하게 수행 하시면 한 사용자 한 세션에 언두를 사용하시는게 보이구요

병렬 처리 하시면 한 사용자의 여러 세션에 여러 언두를 동시에 사용하시는게 관찰됩니다.


by lacoste [2015.02.10 09:53:13]

감사합니다. 테스트 환경에서 시험해보아도, 저보다 책이 맞을 것 같다는 생각에 한참 해맷었는데 한방에 해결되네요!! 감사합니다.


by lacoste [2015.02.10 09:55:54]

그런데 serial하게 해결한다는 뜻이 순서대로를 의미하는 것 맞나요?


by 백면서생 [2015.02.10 09:50:27]

-- 공부하실때 이런부분이 항상 힘든것 이해가 되네요. ^^
-- 타락천사님 말씀에 덧붙혀서 조금 말씀을 드리면
-- 사실 공부하실때 사용자별이다, 세션별이다 이렇게 단정적으로 외우시는 것 보다는 
-- undo segment의 목적(본질)과 db운영을 생각하시면서 공부를 하시면 이해하시기 나을것입니다.

-- 사용자의 입장에서는 내 세션에서 할당 받아 쓰니까 세션별로 볼수 있겠지만
-- undo는 사실 트랜잭션을 처리하기 위해서 존재하니까 제생각에는 트랜잭션 별이다 라고
-- 하는게 더 타당하지 않나 생각이 드네요.(어디까지나 제생각^^;)
-- 특정사용자는 무조건 이 segment를, 세션이 종료해서 새로 붙어도 이 segment를 사용해라
-- 라기 보다는 트랜잭션이 일어나면서 할당 된다라고 보시면 더 좋을거 같네요.

-- 보통 undo segment는 트랜잭션에 독립적으로 할당이 되고 부족하면 offline을 online시키거나
-- 새로운 undo segment를 생성해서 사용을 합니다.(1:1)
-- 그래도 space가 모자라면 가장 적게 사용되는 undo segment에 할당이 됩니다.(M:1)
-- 또한 parallel dml의 경우는 여러 undo를 사용할수도 있습니다.(1:M)

-- 따라서 넓은 의미에서 트랜잭션과 undo segment는 M:M의 관계로 볼 수 있습니다.
-- 이것이 db 입장에서 봐도 특정짓는것 보다는 유연성을 가질수 있겠죠.

-- 적다보니 주저리 주저리 많이 적었네요. 암튼 단정적으로 외우시는 것 보다는 undo의 본질과
-- 연계해서 생각하시면 이해에 도움이 될듯 하네요.

 


by lacoste [2015.02.10 09:58:06]

답변 감사합니다. 정말 좋은 말씀이십니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입