728x90

벨기엔님 | 개발 | 2013-05-27 19:09:09


안녕하세요 인사 먼저 올립니다.
상황은 이렇습니다.

현재 로컬pc에 IBM DB2 Express-C 버전을 설치하였고 운영서버 테이블과 데이터를 이관하여
DB를 구축한 상태입니다.

제가 DB2의 지식이 전혀 없다보니.. 구글에서 검색하여 유저나 카탈로그 디비 노드등을 추가하고 여차저차 db2move를 이용하여 import까지는 완료한 상태인데요.
기존에 개발된 환경에 로컬디비를 연결하여 웹화면을 띄었는데 에러가 나더군요.

이유는 ROWNUM컬럼이나 DUAL테이블을 사용할수 없다는 것이었는데..
쿼리를 카피하여 로컬환경에서 실행해보니 역시 없다고 나오고 해서 운영서버로 접속하여 디비에 실행해보니 있는것으로 나오더군요.
한참 해매다가 SET SCHEMA = 'SYSIBM' 명령어를 입력하고 다시 쿼리를 실행하니 있는것으로 나오더라구요.

문제는 웹어플을 실행시에 이런식으로 스키마를 SYSIBM으로 변경하지않고 디폴트스키마(?)로 SYSIBM을 지정하고자 합니다.
뭔가 방법이 있을듯한데 제 능력으론 이 부분이 해결이 안되네요.
고수님들에게 답변을 구하고자 합니다. 부탁드리겠습니다.




pajama 2013-05-27 20:58:41
dual 테이블만 필요하시다면 synonym을 만드시는건 어떨지요
create synonym dual for sysibm.dual

jdbc라면 다음과 같이 스키마를 지정할수있습니다.
jdbc:db2://localhost:50000/sample:currentSchema=SYSIBM;

벨기엔 2013-05-28 09:51:53
pajama님 답변 감사드립니다.
제가 착각했던 문제가 ROWNUM이나 DUAL테이블등을 사용하는 쿼리에서 에러가 발생하길래 스키마를 SYSIBM으로 바꾸면 해결될것이라 생각했더니
그럼 아예 실제 운영테이블들을 읽지 못하네요 -_-; A테이블을 쿼리시 SYSIBM.A 는 정의되지 않은 이름이라면서..

벨기엔 2013-05-28 09:56:33
실운영DB서버에서도 SYSIBM이 아닌 별도로 생성한 스키마를 사용하면서 DUAL, ROWNUM등을 사용할수있는데
왜 제 로컬에 설치한 DB에서는 별도로 생성한 스키마로 DUAL, ROWNUM접근이 안되는지 궁금하네요..

벨기엔 2013-05-28 10:15:02
차이를 살펴보다가 TABLESPACES테이블정보에 실운영DB에는 Owner가 SYSIBM으로 되어있는데 반해 제 로컬DB에는 Owner역시 별도 생성한 스키마명으로 들어가있던데 이게 이유일까요?

^ㅇ^ 2013-05-28 11:51:57
오라클 스타일을 쓰실려구 하시나 보네요. 그럼 생성전 부터 db2set db2_compatibility_vector=ora를 주고 db2stop;db2start후 db를 생성하시는게 좋겠습니다. 그러면 DB를 생성하면서 위의 것을 다 만들어 줍니다.



728x90

+ Recent posts