오라클 12C ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE 관련 0 2 1,979

by 피아 [SQL Query] ALTER SESSION SET ROW ARCHIVAL VISIBILITY OUTER JOIN [2017.11.27 14:16:33]


안녕하세요. 오라클 12c 버전을 사용하고 현재 사용하고 있는데 이해가 되지 않는 부분이 있어 글을 남깁니다.

"ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ACTIVE"로 셋팅하고, 

ALTER SESSION SET ROW ARCHIVAL VISIBILITY = ALL"로 셋팅하고 돌렸을때

Data count수가 틀립니다.

 

가정 1 : B TABLE에는 A TABLE에 "000000" ID_NUM을 가지고 있지 않는다.

가정 2 : A TABLE에 "000000" ID_NUM은 1건이다.

제가 예상하는 카운트수는 ALL로 Setting하여도 1건, ACTIVE로 셋팅 하여도 1건이라고 생각했는데요,

하지만 실제로 결과값은 ALL은 1건 ACTIVE는 0건입니다.

혹시 아시는분 있을까요? 도움 요청드려요.

 

<쿼리>

SELECT COUNT(*)

TABLE A, TABLE B

WHERE A.ID_NUM = B.ID_NUM(+)

AND A.ID_NUM = '000000'

by 마농 [2017.11.27 19:17:08]

ROW ARCHIVAL 은 데이터를 숨기는 기능인 듯 합니다.
TABLE 에 ROW ARCHIVAL 을 지정하면 ORA_ARCHIVE_STATE 라는 히든컬럼이 생성되고
기본값으로 0(ACTIVE) 이 저장됩니다.
0 이 아닌 다른 값(1)으로 업데이트 가능하구요.
ACTIVE 상태에서는 0 만 보인다는 군요.
ALL 인 상태에서 ORA_ARCHIVE_STATE 의 값을 확인해 보세요.
 

SELECT a.id_num
     , ora_archive_state
  FROM table a
 WHERE a.id_num = '000000'
;

 


by 피아 [2017.11.29 09:19:50]

답변 감사드립니다.

아래는 ALL 인 상태에 대한 쿼리 결과 입니다.

실제로 B Table에 id_num이 15101296에 만족하는 data는 존재하지 않습니다.

그래도, (+) outer join을 명시했으니, B Table에 값이 없어도 1건이 나옵니다. 

 

하지만 ACTIVE 상태에서는 0건입니다. ㅠㅠ

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