by lacoste [Oracle Admin] undo segment undo [2015.02.09 16:40:52]
안녕하세요. 구루비 회원 여러분 책을 보며 공부를 하다가 의문 점이 생겼는데
undo segment의 할당 단위는 사용자별인지, 세션별인지 궁금합니다.
책의 전반부에는 사용자별이라고 했다가, 책의 후반부에는 세션별이라고 설명을 하네요...
여러분들의 지식 공유 부탁드립니다. 감사합니다!
-- 공부하실때 이런부분이 항상 힘든것 이해가 되네요. ^^ -- 타락천사님 말씀에 덧붙혀서 조금 말씀을 드리면 -- 사실 공부하실때 사용자별이다, 세션별이다 이렇게 단정적으로 외우시는 것 보다는 -- 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의 본질과 -- 연계해서 생각하시면 이해에 도움이 될듯 하네요.