파워빌더 카탈로그 테이블은 파워빌더에서 DBMS 에 접속할 때 파워빌더에서 자동으로 생성시키는 테이블입니다.

아래와 같은 총 5개의 테이블을 생성합니다.

PBCATTBL 
PBCATCOL 
PBCATFMT 
PBCATVLD 
PBCATEDT 

펜타소프트에서는 다음과 같이 설명하고 있습니다.


기본적으로 파워빌더는 System 테이블로 Catalog 테이블을 가지고 있다. 그래서 관련 필요한 정보들을 담아두고 실행을 할 때 내부적으로 해당 Catalog 테이블을 먼저 검색하게 된다. 그러므로 해당 Catalog 테이블이 생성이 안되면 파워빌더 실행에도 문제가 된다. Catalog 테이블이 생성되기 위해서는 Admin 권한의 User로 처음 접속을 해주어야 한다. 그래야 System Catalog 테이블이 생성되어 진다. 먼저 Admin 권한의 계정을 가진 User로 접속을 한 번 해주어야 한다.


오라클을 예로 들겠습니다.
파워빌더에서 최초로 오라클에 접속할 때 관리자 계정이 아닌 유저, 예를 들어 scott 같은 계정으로 접속하면,
다음과 같은 에러가 발생합니다.
(파워빌더 접속 : 파워빌더 Database Profile - 사용자가 만든 Profile - Connect 버튼)



이는
파워빌더 Database Profile - 사용자가 만든 Profile - Database Profile Setup - System 탭
에서
PowerBuilder Catalog Table Owner 에 디폴트로 SYSTEM 이라고 되어 있는데요. 카탈로그 테이블 소유자가 system 인데 system 테이블에 카탈로그 테이블이 생성되어 있지 않아서 발생하는 문제입니다.

그럼 system 과 같은 오라클 관리자 계정으로 접속한 번 해주고 다시 scott 계정으로 접속하면 해결이 됩니다.


이 문제를 해결하는 다른 두 가지 방법이 있습니다.

1. 파워빌더에서 카탈로그 테이블에 관심을 끄게 하기

카탈로그 테이블은 파워빌더에서 사용하는 테이블이고 없어도 개발하는 데 전혀 문제가 없습니다.

파워빌더 설치경로 - Sybase - PowerBuilder10.5 에 있는 pb.ini 을 오픈하세요.
그리고
[Database] 항목에서
NoCatalog=no 라고 되어 있는 부분을 찾습니다.
이것을 NoCatalog=1 로 수정합니다.
혹시 NoCatalog=no 이 부분이 없으면 NoCatalog=1을 추가합니다.


그런데... 이렇게 해도 Database Profile Setup(아래 그림) - Preview 에 있는 Test Connection 을 클릭하면 위와 같은 에러 메시지가 오픈됩니다. 버그 같은데요. Test Connection 을 사용하지 않아도 상관 없으니 그냥 넘어가도 됩니다. Test Connection 을 사용하고 싶다면 다음 해결 방법대로 해보세요.


2. 카탈로그 테이블을 생성해서 해결하기

카탈로그 테이블의 소유자가 반드시 관리자 계정일 필요는 없습니다.

SYSTEM 대신에 접속하려는 유저 이름 즉, scott 을 입력하면 해결됩니다. 그럼 해당 유저 계정에 카달로그 테이블이 생성되고 카탈로그 테이블 소유자가 바로 그 유저가 됩니다.

재밌는 것은 관리자 계정이나 다른 유저로 접속할 때 PowerBuilder Catalog Table Owner 를 접속하려는 계정 이름을 입력해서 접속하면 그 계정에 카탈로그 테이블이 또 생성된다는 것입니다. 

이 때 카탈로그 테이블이 생성 안되게 하려면 카탈로그 테이블을 가지고 있는 계정인 scott 을 입력하면 됩니다.

카탈로그 테이블은 파워빌더 시스템에서 관리하는 테이블로 한 번 생성되고 나면 개발자는 신경쓸 필요가 없습니다.

Posted by A4M
,