ORA-06553 PLS-564 DB link CLOB Column ERROR


ORA-06553: PLS-564: lob arguments are not permitted in calls to remote server

Bu hatayı clob içeren DDL 'i Veritabanımdan db Link ile remote Veritabanı üzerinden almak isterken yaşadım.

insert into LocalTempTableWithClob1 SELECT DBMS_METADATA.GET_DDL@DB_TESTDB('PACKAGE BODY', 'PKG_ADMIN_DBA', 'ILKER') FROM DUAL@DB_TESTDB;

*ERROR at line 1:ORA-06553: PLS-564: lob arguments are not permitted in calls to remote server

Başka bir örnek:

create table LocalTempTableGetDDL as SELECT DBMS_METADATA.GET_DDL@DB_TESTDB('PACKAGE BODY', 'PKG_ADMIN_DBA', 'ILKER') FROM DUAL@DB_TESTDB;
*
ERROR at line 1:
ORA-06553: PLS-564: lob arguments are not permitted in calls to remote server

DB link ile remote veri tabanı üzerinde yapabileceklerimizin sınırlı. Bazı limitleri var. Bu şekilde bir seferde ancak 4000 bayt alabileceğimiz için workaround olarak bir loop içerisinde tekrar tekrar almayı deneyebilirsiniz.

declare
    l_clob clob;
    l_tmp long;
    l_offset number := 1;
begin
    loop
      select dbms_lob.substr@DB_TESTDB(DBMS_METADATA.GET_DDL@DB_TESTDB('ILKER','PKG_ADMIN_DBA','PACKAGE BODY'), 4000, l_offset )
      into l_tmp
      from dual@DB_TESTDB;
   exit when l_tmp is null;
   l_clob := l_clob || l_tmp;
   l_offset := l_offset + length(l_tmp);
  end loop;
 dbms_output.put_line( 'l_clob length is ' || length(l_clob) );
end;
/


Burada dikkat edilmesi gereken konu tekrar tekrar gidilmesi gerektiği. Her ortam ve DB için uygun olmayabilir. 

Hiç yorum yok:

Ara