2010-08-29 110 views

Respuesta

5

La respuesta es correcta en un contexto determinado, por instrucciones de selección simples sobre un enlace de base de datos, obtendrá este error:

ORA-22992: cannot use LOB locators selected from remote tables.

Desde el manual de errores:

Cause: A remote LOB column cannot be referenced.
Action: Remove references to LOBs in remote tables.

también Tuve problemas para encontrar documentación definitiva sobre esto ... pero nos encontramos con el mismo problema en nuestro almacén de datos. Sin embargo, hay varias soluciones disponibles, por ejemplo, pulling the data over or creating a view.

+0

gracias por el enlace! – Moeb

1

Tuve el mismo problema ayer. Esta es Mi solución: cree una vista romote en la tabla romote, cuando llegue el CLOB cols, use to_char(), como to_char (col2). Luego puede seleccionar datos de la vista. Puede que no sea una buena solución, pero funciona.

1

Si ambos esquemas de base de datos están en la misma instancia de Oracle, puede utilizar la siguiente solución:

select (select <columnName> from dual) <columnName> from <table>@<link>

Esto le devolverá el mismo que si usted podrá acceder a una columna LOB local.

+0

por alguna extraña razón, no funciona en una vista, pero conduce a una solución en mi caso. ¡Gracias! – CsBalazsHungary

0

@Peter Ilfrich: ¿Eso no lanzar una excepción cuando se trata de acceder a cualquier CLOBs más de 4000 bytes ?

Esto es un poco más convaluado, pero significa que puede retirar con seguridad pequeñas clobs (< 4000) sobre un dblink.

select [email protected]<link>((select <columnName> from [email protected]<link>), 4000, 1) 
    from <table>@<link> 
where [email protected]<link>((select <columnName> from [email protected]<link>)) <= 4000; 

Lectura de un CLOB (o un BLOB) durante un dblink es posible con este paquete de PL/SQL:
https://github.com/HowdPrescott/Lob_Over_DBLink

Cuestiones relacionadas