DBIDE

[DBeaver] 디비버 툴에서 오라클 함수  프로시저 등의 DDL문이 보여지지않을 때(Can’t read parameters: Cannot invoke “java.lang.CharSequence.length()” because “this.text” is null)

프로젝트를 하다보면 무료툴인 디비버를 많이 사용하게 된다.

때로는 문제가 발생된다. 이번에도 문제가 발생했다.

Database Navigator 영역에서 DB 선택 후 프로시저 리스트를 클릭하여 내가 보고자하는 함수를 찾았다.

함수를 더블클릭하거나 마우스 우클릭 후 View 프로시저를 선택하면 ddl문장을 볼 수 있어야하는데

Can’t read parameters: Cannot invoke “java.lang.CharSequence.length()” because “this.text” is null 이라는 안내 팝업이 노출되고 아무것도 볼 수 없다.

걱정할 것 없다.툴에서 안된다면 쿼리를 사용하면된다.

오라클 dba_source DDL 보는방법

DBA_RESOURCE 테이블 조회

오라클 10g부터는 객체의 DDL을 추출하기 위해 dbms_metadata.get_dll()를 사용하면 된다.

하지만 10g 미만의  버전에서는 dbms_metadata.get_dll()이 없기 때문에 dba_source를 사용한다.

DBA_RESOURCE 테이블 Description DBA_SOURCE

OWNER VARCHAR2(30)

NAME VARCHAR2(30)

TYPE VARCHAR2(12)

LINE NUMBER

TEXT VARCHAR2(4000)

위 테이블 디스크립션의 컬럼중에  text 컬럼에  DDL이 저장되어 있다.

dba_source로 볼 수 있는 타입은 TRIGGER, PACKAGE BODY, PACKAGE, FUNCTION, PROCEDURE가 있다. 참고로 INDEX는 지원하지 않는다.

다음은 사용 예문이다.

select TEXT from DBA_SOURCE where name=’TEST_FUN_FLAG’;

error: Content is protected !!