728x90
반응형

Q. DUAL 테이블은 1열 1행의 데이터를 갖고 있어서 간단한 스칼라 연산에 자주 사용된다.

그런데, 이 DUAL테이블에 INSERT 가 가능하다면, 이후 동작에 문제가 될 것이다.

Oracle에서 이를 허용하고 있을까?


테스트 계정에서 DUAL 테이블에 INSERT INTO를 하면 권한이 없다고 나온다.

그래서 "conn /as sysdba" 로 접속해서 수행해 보니, insert가 되고 row가 생성되었다는 메시지가 출력된다.



 


하지만 실제 SELECT를 해보면, 하나의 row만 조회된다.


 


왜 이런 결과가 나타나는지 검색해보았는데,

Oracle 문서에서는 관련 내용을 찾지 못했고, 구루비에서 유사한 실험을 한 것을 찾을 수 있었다.


구루비의 관련 주제 링크: http://www.gurubee.net/lecture/2637 


내용을 보면, DUAL 테이블에 데이터는 저장되어 있으나, 조회되지는 않는다는 것이다.

때문에,CTAS로 DUAL테이블의 복제 테이블을 만들면, 추가한 데이터가 조회된다고 한다.

다만, 그 이유까지는 나와있지 않다.


실제로 테이블을 복제해서 조회해 보면 삽입한 데이터가 보인다.


 



결과로 보아 DUAL 테이블에 대한 select는 특수한 process를 거치는 것으로 보인다.

자세한 이유를 조사해 보고 싶지만, 시간 관계상 다음 기회로 미루고,

일단 이번 실험은 이 정도로 마무리 한다.

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,