[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’;