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:
Yorum Gönder