해당 버그는 Oracle Business Intelligence Administration Tool 버전 11.1.1.5.0.110427.0316.000 사용중 발견한 내용입니다.
(이하 BI로 칭함)

최초 물리적 영역의 구성 내용입니다.
스크린샷의 내용들은 버그의 예시를 만들기 위해 임의로 가져다 쓴 테이블입니다.

CSTM_TDIM_NUM 테이블은 Number타입의 NUM이라는 컬럼 1개만을 가지고 있습니다.

이때, 상황 예시입니다.
NUM이라는 컬럼이 현재 Number 타입인데 이름은 NUMV로 타입은 Varchar2(10)로 변경하려고 합니다.
그리고 혹시나 모를 에러사항을 방지하기 위해 Number 타입의 기존컬럼 NUM도 남겨두려고 합니다.
기존에 NUM으로 맺어졌던 조인은 당연히 NUMV와 맺어지도록 변경해야합니다.


CSTM_TDIM_NUM의 별칭테이블은 여러개가 있는데, 그 중 CSTEM_TDIM_NUM_MONETARY를 예로 들겠습니다.


CSTM_TDIM_NUM의 별칭테이블 CSTEM_TDIM_NUM_MONETARY은 다른 테이블과 조인을 맺고 있습니다.

 

조인맺고 있는 컬럼도 NUM입니다.

기존에 있던 컬럼 NUM을 NUMV로 이름을 바꾸고 Varchar2로 타입을 변경했습니다.
그리고 창을 닫지 않은 채로 기존 NUM 컬럼을 유지하기 위해 Number타입 NUM 컬럼을 추가했습니다.

그 결과입니다.
조인은 그대로 NUM과 연결되어 있고, 물리적 구성을 보면 실제 테이블은 NUM, NUMV 컬럼을 모두 가지고 있지만 실제테이블을 바라보고 있는 별칭테이블에는 여전히 NUM 밖에 없으며 NUMV컬럼은 생기지도 않았습니다.
(별칭테이블에서 컬럼 추가, 변경, 삭제는 할 수 없고, 실제 테이블의 컬럼을 수정하면 별칭 테이블에는 자동적으로 반영되어야 하는 것이 정상입니다.)

위 스크린샷과 같은 상태에서 저장할 수 있는데, 이미 비정상적인 상태입니다. (실제 테이블과 별칭 테이블이 같지 않음)

위와 같은 상황을 인지하지 못하고 작업을 지속했었는데, 물리적 영역에서 조인이 꼬이고, 비즈니스 영역과 물리적 영역이 매칭되지 않는 상황도 생겨서, 수정을 하려다 결국 이전에 백업해 놓은 rpd파일로 롤백을 했습니다.

본래는 위와 같이 되어야 정상입니다.


버그가 발생하는 조건은,
'기존에 있었던 컬럼을 다른 이름으로 변경', '기존에 있었던 컬럼명으로 새로운 컬럼을 생성' 이 두가지의 행위를 한번에 했을 경우라고 생각됩니다. 버그를 방지하기 위해선 '기존에 있었던 컬럼을 다른 이름으로 변경'을 한 뒤 저장하고, '기존에 있었던 컬럼명으로 새로운 컬럼을 생성'을 한뒤 다시 저장하는 식으로 2번의 행위를 나누어서 해야 합니다.

ex)
COL1을 COL2로 변경, 저장, COL1 컬럼을 새로 생성, 저장 -> 버그 안생김
COL1을 COL2로 변경, COL1 컬럼을 새로 생성, 저장 -> 버그 생김

컬럼 인식 버그라고 생각되는군요..

+ Recent posts