Una de las mejores características de la base de datos de Oracle es la capacidad de vincular dos de las otras bases de datos remotas a través de un enlace de base de datos.
Consultas de Sun en la mesa no se distancia un problema:
FROM tabellenname@dblinkname; SELECT * FROM nombretabla @ dblinkname;
Lo que todavía no saben que esto sólo funciona siempre y cuando no la alabanza en la tabla (las columnas de tipo CLOB o BLOB) están incluidos. Si aún así, se obtiene un 992 ORA-22 no puede utilizar localizadores de LOB seleccionados de las tablas remotas.
De acuerdo con Oracle sólo se permiten con la alabanza a distancia a saber, las siguientes declaraciones:
* FROM table1@remote_site; CREATE TABLE t AS SELECT * FROM tabla1 @ remote_site;
* FROM table1@remote_site; INSERT INTO t SELECT * FROM tabla1 @ remote_site;
lobcol = ( SELECT lobcol FROM table1@remote_site ) ; ACTUALIZACIÓN t SET lobcol = (SELECT FROM tabla1 lobcol remote_site @);
INSERT INTO tabla1 remote_site @ ...
ACTUALIZACIÓN tabla1 @ remote_site ...
DELETE FROM tabla1 @ remote_site ...
Por otra parte, se prohíbe:
table1@remote_site; SELECT FROM tabla1 lobcol remote_site @;
type1 . lobattr FROM INSERT INTO SELECT lobtable tipo 1. Lobattr DE
@ Tabla1 remote_site;
getlength ( lobcol ) FROM table1@remote_site; . SELECT DBMS_LOB GetLength (lobcol) remote_site FROM tabla1 @; ¿Qué puede hacer?
En binario alabanza (por ejemplo, imágenes) que hay, en mi opinión, ninguna otra manera que con las declaraciones anteriores (como crear, actualizar) en la copia de base de datos local.
Para el acceso de lectura a la alabanza de caracteres (por ejemplo, los textos largos), puede ser suficiente para convertir los datos a la base de datos remota utilizando una función al tipo de datos VARCHAR2 y encapsular una vista que utilice esta función para el exterior. Tal vez algo como esto:
base de datos remota:
CREATE OR REPLACE VIEW viw_clob_tabelle
AS
SELECT col1
substr ( clobSpalte , 4000 , 1 ) clobText , DBMS_LOB. Substr (clobSpalte, 4000, 1) clobText
DE clobTabelle;
base de datos local:
clobText FROM viw_clob_tabelle@dblinkname; SELECT col1 clobText, DE dblinkname viw_clob_tabelle @;
Sin embargo, mientras que sólo los primeros 4000 caracteres del CLOB es para ser leído, porque esa es la limitación de la longitud del tipo de datos VARCHAR2, por dbms_lob.substr se devuelve. Pero a menudo esto es suficiente.
Una de las mejores características de la base de datos de Oracle es la capacidad de vincular dos de las otras bases de datos remotas a través de un enlace de base de datos. Consultas de Sun en la mesa no se distancia un problema: select * from nombretabla @ dblinkname; Lo que no han sido hasta ahora sabemos que esto sólo funciona siempre y cuando no la alabanza en la tabla (las columnas de tipo CLOB o BLOB) incluido. Si aún así, se obtiene un 992 ORA-22 no puede utilizar localizadores de LOB seleccionados de las tablas remotas. De acuerdo con Oracle, con la alabanza que es remota sólo permite las siguientes declaraciones: CREATE TABLE t AS SELECT * FROM tabla1 @ remote_site INSERT INTO t SELECT * FROM tabla1 @ remote_site; ACTUALIZACIÓN t SET (remote_site lobcol SELECT FROM tabla1 @) lobcol = INSERT INTO tabla1 @ remote_site ... ACTUALIZACIÓN tabla1 @ remote_site ... DELETE FROM tabla1 @ remote_site ... Las prohibiciones están en contra: SELECT FROM tabla1 lobcol remote_site @ INSERT INTO type1.lobattr lobtable SELECT FROM tabla1 @ remote_site; SELECT DBMS_LOB.GETLENGTH (lobcol) remote_site FROM tabla1 @, ¿Qué puede hacer? En binario alabanza (por ejemplo, imágenes) que hay, en mi opinión, ninguna otra manera que con las declaraciones anteriores (como crear, actualizar) en la copia de base de datos local. Para el acceso de lectura a la alabanza de caracteres (por ejemplo, los textos largos), puede ser suficiente para convertir los datos a la base de datos remota utilizando una función al tipo de datos VARCHAR2 y encapsular una vista que utilice esta función para el exterior. Tal vez algo como esto: base de datos remota: crear o sustituir la vista viw_clob_tabelle como select col1, dbms_lob.substr (clobSpalte, 4000,1) clobText de clobTabelle; base de datos local: select col1, clobText de dblinkname viw_clob_tabelle @; Sin embargo, este método sólo los primeros 4000 personajes de la CLOB leerlo, porque esa es la limitación de la longitud del tipo de datos VARCHAR2 que es devuelto por dbms_lob.substr. Pero a menudo esto es suficiente.
gklinkmann escrito por \ \ tags: Oracle