원격 Oracle 데이터베이스에서 CLOB를 읽을 수 있습니까?
... 원격 데이터베이스에서 LONG을 읽을 수는 있지만 CLOB를 읽을 수는 없습니다.
저는 인터넷에서 이것에 대해 아무것도 발견하지 못했는데, 사실인가요?이에 대한 모든 문서나 인용이 도움이 될 것입니다.
특정 맥락에서 정답이 맞으며, DB 링크를 통한 간단한 선택문의 경우 다음과 같은 오류가 발생합니다.
ORA-22992: 원격 테이블에서 선택한 LOB 로케이터를 사용할 수 없습니다.
오류 매뉴얼에서:
원인: 원격 LOB 열을 참조할 수 없습니다.
조치: 원격 테이블에서 LOB에 대한 참조를 제거합니다.
이에 대한 확실한 문서를 찾는데도 어려움을 겪었습니다.데이터 웨어하우스에서 똑같은 문제가 발생했습니다.그러나 데이터를 넘겨받거나 보기를 만드는 등 여러 가지 해결 방법이 있습니다.
@Peter Ilfrich: 4000바이트 이상의 클로브에 액세스하려고 하면 예외가 발생하지 않습니까?
이것은 조금 더 균형이 잡혔지만 작은 클로브(< 4000)를 안전하게 뒤로 빼낼 수 있다는 것을 의미합니다.
select dbms_lob.substr@<link>((select <columnName> from dual@<link>), 4000, 1)
from <table>@<link>
where dbms_lob.getlength@<link>((select <columnName> from dual@<link>)) <= 4000;
이 PL/SQL 패키지를 사용하면 CLOB(또는 BLOB)를 애드블링크로 읽을 수 있습니다.
https://github.com/HowdPrescott/Lob_Over_DBLink
두 DB 스키마가 동일한 오라클 인스턴스에 있는 경우 다음 해결 방법을 사용할 수 있습니다.
select (select <columnName> from dual) <columnName> from <table>@<link>
이렇게 하면 로컬 LOB 열에 액세스하는 것과 동일하게 반환됩니다.
Oracle 12.2는 마침내 분산 LOB에 대한 지원을 추가했습니다.이제 CLOB 및 XMLType과 같은 데이터 유형을 데이터베이스 링크를 통해 별도의 해결 방법 없이 읽을 수 있습니다.
저도 어제 같은 고민을 했습니다.이것이 내 솔루션입니다: 원격 테이블에 원격 보기를 작성합니다. CLOB 콜이 나오면 to_char()와 같은 to_char()를 사용합니다.그런 다음 보기에서 데이터를 선택할 수 있습니다.좋은 해결책은 아닐지 몰라도 효과는 있습니다.
원격 테이블에서 Materialized View를 생성한 다음 필요에 맞게 이 뷰를 사용할 수 있습니다.
dblink의 테이블이 Oracle Big Data External 테이블(Hive 테이블 위의 외부 테이블인 경우)인 경우 이 테이블 위에 구체화된 뷰를 생성하고 위에서 언급한 pl/sql 패키지와 함께 구체화된 뷰를 사용해야 합니다. https://github.com/HowdPrescott/Lob_Over_DBLink
4000 이상의 클롭에서 작동합니다.
CLOB에 대해서만 테스트!
언급URL : https://stackoverflow.com/questions/3594449/is-it-possible-to-read-a-clob-from-a-remote-oracle-database
'source' 카테고리의 다른 글
jQuery - Check if DOM element already exists (0) | 2023.09.19 |
---|---|
WordPress를 사용한 Angular HTML5 모드, 페이지를 새로 고치면 404가 됩니다. (0) | 2023.09.14 |
업데이트를 위해 SELECT ... ORDER by xxx LIMIT 1에 의해 잠긴 행 수는 몇 개입니까? (0) | 2023.09.14 |
Webpack - webpack-dev-server: 명령을 찾을 수 없습니다. (0) | 2023.09.14 |
테이블 mariadb에 기본 키 및 외부 키 추가 (0) | 2023.09.14 |