Abro este tema a partir del artículo Acceso remoto mediante DBLink de Oracle para que podamos comentar dudas y experiencias sobre la creación y utilización de database links de Oracle.
- Printer-friendly version
- Log in to post comments
Abro este tema a partir del artículo Acceso remoto mediante DBLink de Oracle para que podamos comentar dudas y experiencias sobre la creación y utilización de database links de Oracle.
no tengo el nombre de usuario y contraseña de oracle sql 9i
Submitted by christian (not verified) on 30 March, 2008 - 07:10
hola, queria ver si hay alguna manera de accesar con algun nombre de usuario y contraseña universal o algo asi porque acabo de instalar el sql plus, pero no tengo esos datos. gracias y espero me pueda ayudar alguien
Entrar en Oracle sin password
Submitted by Carlos on 31 March, 2008 - 23:15
Puedes ver como entrar en SQLPlus con un usuario Oracle con rol sysdba en:
http://www.dataprix.com/entrar-en-sqlplus-como-dba-sin-introducir-passw…
Carlos Fernández
Analista de sistemas
consulta DBLINKS. paquetes y variable Global_NAME
Submitted by Anonimo (not verified) on 17 October, 2009 - 01:55
In reply to Entrar en Oracle sin password by Carlos
Estimados, soy nuevo en oracle y estoy haciendo una conexión entre dos servidores pero al momento de compilar mis paquetes me da el error ORA-04052.
Variables:
DBLINKS
Tengo el sinonimo:
Al compilar devuelve el error ORA-04052, me pueden ayudar con esto?
Gracias de antemano
Entiendo que desde SQLPlus la
Submitted by Carlos on 19 October, 2009 - 23:53
In reply to consulta DBLINKS. paquetes y variable Global_NAME by Anonimo (not verified)
Entiendo que desde SQLPlus la SELECT sobre el sinónimo te funciona correctamente, y el problema lo tienes al intentar utilizar este sinónimo dentro de un PROCEDURE.
Supongo que has escrito global_name (sin la 's') por error. De todas maneras en Oracle global_names puedes encontrar una explicación sobre los GLOBAL_NAMES(S) y el DB_DOMAIN.
Cause: An error has occurred when trying to look up a remote object.
Action: Fix the error. Make sure the remote database system has run KGLR.SQL to create necessary views used for querying/looking up objects stored in the database.
En las versiones actuales de BD, este script ya no se llama KGLR.SQL. Si no encuentras este fichero busca catlog.sql y catproc.sql. Aunque en teoría se ejecutan al instalar la base de datos, puedes probar a ejecutarlos en las dos bases de datos, y puede que así se resuelva el problema
Hola se que usted es esperto
Submitted by ADRES (not verified) on 30 November, 2009 - 20:52
In reply to Entiendo que desde SQLPlus la by Carlos
Hola se que usted es esperto en Oracle tengo la siguiente duda:
mi trabajo o tarea es hacer un replica de una base de datos en oracle 10g express y para ello necesito hacer un database link pero antes
necesito modificar los archivos de la siguiente ruta:
C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN dentro de esta direccion esta el archivo tnsnames.ORA
y la verdad no se cual de estos codigos voy a mo dificar (osea si voy a modificar o agregar nuevas lineas) ALUMNO-PC3 es el nombre de mi maquina y ALUMNO-PC4 EL de la otra maquina. estos son los codigos que hay dentro de este archivo:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ALUMNO-PC3)(PORT = 1521)) // en la otra maquina aparece ALUMNO-PC4
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
LO MISMO TIENEN LAS DOS MAQUINAS dime por favor como quedaria modificado este archivo en ALUMNO-PC3 Y ALUMNO-PC4.
tambien lei que el archivo listener pero no se si tambien se va a modificar y que parte se modificara. este es el codigo:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = ALUMNO-PC3)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
Y me gustaria como quedaria creado el dblink que necesito
ambas maquinas tienen instalado el oracle 10g y los usuarios son para ALUMNO-PC3 es HR y contraseña: QWERTY. y para ALUMNO-PC4 es ALUMNOS Y HR y la contraseña para ambos es recursos. y como hacer una consulta una vez creado el database link.
OJALA Y ME RESPONDAS CLARO Y CONCISO YO SOY NOBATO EN ESTO GRACIASSSSSSSS
ANDRES.....
En el TNSNAMES se agregan las
Submitted by Carlos on 30 November, 2009 - 23:26
In reply to Hola se que usted es esperto by ADRES (not verified)
En el TNSNAMES se agregan las 'referencias' a los servidores de bases de datos con los que se quiera conectar desde la máquina. Como en tu caso quieres hacer un DBLINK desde ALUMNO-PC3 hasta ALUMNO-PC4 tendrías que modificar el TNSNAMES de ALUMNO-PC3 con los datos de conexión a la BD de ALUMNO-PC4:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ALUMNO-PC4)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
En principio, si vas a hacer un dblink entre dos BBDD Oracle no tienes porqué modificar la configuración del listener.
Tal como comento en el post Acceso remoto mediante DBLINK de Oracle, para crear después el database link en la BD origen (la de ALUMNO-PC3), deberías ejecutar con un usuario con suficientes privilegios una sentencia como la siguiente:
create database link LINK_de_PC3_a_PC4 connect to ALUMNOS identified by recursos;
Y para hacer desde la BD de ALUMNO-PC3 una select sobre una tabla de la BD de ALUMNO-PC4:
select * from TABLA_DE_PC4@LINK_de_PC3_a_PC4;
Carlos espero pueda ayudarme
Submitted by kmilo666 (not verified) on 3 December, 2009 - 22:21
In reply to En el TNSNAMES se agregan las by Carlos
Carlos espero pueda ayudarme con este problemita:
estoy ejecutando el siguiente código desde una BD Oracle 9i para consultar datos de una base de datos en 10g mediante un debelink llamado suiscen:
begin
select *
from persona@suiscen;
end;
pero me genera el siguiente error:
ORA-06550: line 4, column 6:
PL/SQL: ORA-04052: error occurred when looking up remote object SERECE.PERSONA@SUISCEN
ORA-00604: error occurred at recursive SQL level 1
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 64
ORA-24757: duplicate transaction identifier
ORA-02063: preceding 4 lines from SUISCEN
ORA-06550: line 3, column 1:
este error solo se presenta cuando esta entre el BEGIN y el END
he investigado y al parecer es un bug y me indican debo migra mi BD que esta en 9i a 10G sera que existe otra salida?
Carlos de antemano mil gracias en lo que me pueda asesorar.
Seguro que es un bug? Si
Submitted by Carlos on 4 December, 2009 - 19:05
In reply to Carlos espero pueda ayudarme by kmilo666 (not verified)
Seguro que es un bug? Si quieres puedes enlazar el lugar donde comentan lo del bug y le echamos un vistazo. Ahora no tengo disponible una BD 9i para probarlo, pero es la primera noticia que tengo de que exista este problema entre versiones.
A mi lo que me parece más indicativo es el error ORA-24757: duplicate transaction identifier. Podría ser que según cómo estén configuradas las BBDD te diera problemas utilizar a la vez el DBLINK desde varios lugares. Asegúrate de que no tengas abierta ninguna otra conexión que utilice el link y vuelve a probar con el Procedure. Para la prueba utiliza el mismo procedure que indicas, no sea que sea el mismo procedure el que abra demasiados enlaces.
Las dos bases de datos están en el mismo servidor? Eso también podría darte algún problema de identificadores.
Carlos gracias por la pronta
Submitted by kmilo666 (not verified) on 4 December, 2009 - 22:32
In reply to Seguro que es un bug? Si by Carlos
Carlos gracias por la pronta respuesta....bueno lo del enlace fue tanto lo que busque que no guarde dichos enlaces pero los buscare nuevamente...
las bases de datos están en distintos servidores y lo que me faltó comentar es que el servidor donde esta la BD en 10g esta en modo RAC (Real Apliccation Server) .
Es decir el codigo o procedure funciona correctamente hacia los servidores con Oracle 9i normal y el error me aparece con los dblinks que apuntan hacia las BD que están en RAC.
Lo de RAC es un detalle
Submitted by Carlos on 10 December, 2009 - 23:31
In reply to Carlos gracias por la pronta by kmilo666 (not verified)
Lo de RAC es un detalle importante, esas cosas se dicen antes ;)
Si no lo has hecho ya deberías comprobar los valores de los parámetros OPEN_LINKS y OPEN_LINKS_PER_INSTANCE de la BD que está en RAC para saber cuántos dblinks pueden abrirse como máximo en una sesión o una instancia de esta base de datos.
El problema podría ser simplemente que superaras este límite al utilizar el DBLINK desde el procedure.
Hola Carlos... te saluda
Submitted by Ivan (not verified) on 22 September, 2016 - 18:15
In reply to Lo de RAC es un detalle by Carlos
Hola Carlos... te saluda Ivan, tengo una consulta:
Estoy tratando de crear una conexion DBLINK desde Oracle 11g para conectarme a SQL Server 2008.
Para hacer la conexion utilizo un Driver ODBC 11 de oracle... y la conexion se hace con éxito.
Pero al momento de hacer una consulta (SELECT, INSERT, UPDATE), me sale el siguiente error:
ORA-00942: la tabla o vista no existe
[Microsoft][ODBC SQL Server Driver][SQL Server]El nombre de objeto 'TM0000000001.AREA' no es válido. {42S02,NativeErr = 208}[Microsoft][ODBC SQL Server Driver][SQL Server]No se puede preparar la instrucción o instrucciones. {42000,NativeErr = 8180}
ORA-02063: 2 lines precediendo a SASERVER_LINK
00942. 00000 - "table or view does not exist"
Favor ayudarme para solucionar este problema y poder hacer mis consultar respectivas... gracias
Hola Iván Parece sólo que no
Submitted by Carlos on 23 September, 2016 - 09:22
In reply to Hola Carlos... te saluda by Ivan (not verified)
Hola Iván
Parece sólo que no te reconoce el nombre de la tabla. ¿Puede ser que te falte el propietario de la tabla de SQL Server? Si la base de datos es TM0000000001 el nombre completo sería 'TM0000000001.dbo.AREA', o 'TM0000000001.ivan.AREA' si fuera del usuario ivan.
Saludos,
Carlos ya hice todo lo que me
Submitted by ANDRES (not verified) on 8 December, 2009 - 19:49
In reply to En el TNSNAMES se agregan las by Carlos
Carlos ya hice todo lo que me indicaste y el databaselink si lo crea pero al querer consultar manda el siguiente error:
ORA-02019: no se ha encontrado la descripción de la conexión para la base de datos remota
y e buscado este error pero no encuentro la solucion y lo hice tal como me dijistes.
contesta porfa. de ante mano Gracias... ATTE Andres...
Puede que la base de datos
Submitted by Carlos on 8 December, 2009 - 20:41
In reply to Carlos ya hice todo lo que me by ANDRES (not verified)
Puede que la base de datos tenga el global_names activado, y al utilizar el dblink necesites especificar el nombre del dominio. El tema de los global names lo explico un poco en esta entrada del foro.
Comprueba cuál es el DB_DOMAIN de la base de datos y agrégalo al nombre del DBLINK al utilizarlo. Si utilizas una herramienta visual como SQLDeveloper, por ejemplo, seguramente en el nombre del dblink ya te indicará el nombre completo que tienes que utilizar.
Prueba a hacer esto:
Lo que te ponga en lugar de MIDOMINIO.COM agregalo en la SELECT del database link:
Suerte!!
Hola, ya hice lo del dominio,
Submitted by Jonathan (not verified) on 8 December, 2009 - 23:20
In reply to Puede que la base de datos by Carlos
Hola, ya hice lo del dominio, como dominio me aparecia solo XE despues de eso yo cambie el dominio a mibd.dominio.com de la sig manera
-------------------------------------
SQL> alter database rename GLOBAL_NAME to MIBD.DATAPRIX.COM;
Database altered.
-------------------------------------
ya que no me regreso algun domino la primer parte, use lo sig.
------------------------------------
select * from Datos_Personales@LINK_de_pc-3_a_pc-4.MIBD.DOMINO.COM;
y me mando el mismo error (ora-0219) la verdad me gustaria que nos siguieras orientando por que hasta ahora tu apoyo ha sido de mucha ayuda.clarificamos muchas dudas que teniamos probando todo lo que nos has enviado y leyendo los foros que tienes en tu pagina(www.dataprix.com) sin mas que decir me despido deseandole una muy buena tarde.
Si has hecho el alter
Submitted by Carlos on 9 December, 2009 - 22:04
In reply to Hola, ya hice lo del dominio, by Jonathan (not verified)
Si has hecho el alter database como comentas, el dominio que le has asignado a la BD es DATAPRIX.COM
Entonces la select te quedaría:
SELECT * FROM Datos_Personales@LINK_de_pc-3_a_pc-4.DATAPRIX.COM
Recuerda que al link sólo le has de agregar el dominio, el nombre de la base de datos no lo tienes que incluir.
Venga, que ya falta menos!!
carlos no sirve mi db link ya
Submitted by ANDRES (not verified) on 10 December, 2009 - 20:14
In reply to Si has hecho el alter by Carlos
carlos no sirve mi db link ya hicimos todos como nos indicaste
y nada pero marca el mismo error.
el db link si lo crea pero al hacer la consulta marca el mismo error no se que sea gracias por la ayuda.
Andres.............
No lo hemos especificado,
Submitted by Carlos on 10 December, 2009 - 23:05
In reply to carlos no sirve mi db link ya by ANDRES (not verified)
No lo hemos especificado, pero entiendo que el alter database para modificar el dominio lo has hecho en la base de datos remota (PC4). Otra cosa que habría que hacer es modificar el TNSNAMES de la BD local (la de PC3) teniendo en cuenta el nuevo dominio:
XE.DATAPRIX.COM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ALUMNO-PC4)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
Y después recrea de nuevo el dblink, incluyendo también el dominio:
SQL> dropdatabase link LINK_de_PC3_a_PC4;
SQL> create database link LINK_de_PC3_a_PC4.DATAPRIX.COM connect to ALUMNOS identified by recursos;
SQL> select * from TABLA_DE_PC4@LINK_de_PC3_a_PC4.DATAPRIX.COM;
Enlazo otro post donde también comento cosas sobre los Global Names, por si sirve de ayuda.
Espero que ahora salga todo bien..
Tengo dos bases de datos
Submitted by Elena (not verified) on 20 January, 2010 - 10:42
Tengo dos bases de datos distintas A y B. Tengo un DBLink DBL_BA creado en B que apunta a las tablas creadas en A.
Funciona sin problemas, accedo a los datos de las tablas de A y creo vistas materializadas con esos datos. Mi problema
es que intento que dichas vistas sean de tipo FAST, es decir, que su refresco sea de tipo incremental, pues el volumen de
datos que tengo que manejar es muy grande.
Para ello creo LOGS en las tablas de A:
CREATE MATERIALIZED VIEW LOG ON esquemaA.tabla1
WITH ROWID;
CREATE MATERIALIZED VIEW LOG ON esquemaA.tabla2
WITH ROWID;
Ahora creo la vista materializada tipo FAST a través del dblink en mi base de datos B:
CREATE MATERIALIZED VIEW esquemaB.vmtablas
PARALLEL BUILD IMMEDIATE
REFRESH FAST
AS
SELECT T1.ROWID "CN_ID_1", T2.ROWID "CN_ID_2", T1.DC_NOMBRE, T2.DC_NOMBRE
FROM tabla1@DBL_BA T1, tabla2@DBL_BA T2
WHERE T1.CN_ID = T2.CN_ID;
Obteniendo el siguiente error:
ORA-12015: no se puede crear una vista materializada de refrescamiento rápido a partir de una consulta compleja
Tengo todos los permisos necesarios, he probado a crear sinónimos de las tablas de A, pero sigo obteniendo el mismo
resultado...
Sin embargo, si creo la vista materializada sin utilizar el dblink, es decir, sobre la propia base de datos A,
me la crea sin problemas.
CREATE MATERIALIZED VIEW esquemaA.vmtablas
PARALLEL BUILD IMMEDIATE
REFRESH FAST
AS
SELECT T1.ROWID "CN_ID_1", T2.ROWID "CN_ID_2", T1.DC_NOMBRE, T2.DC_NOMBRE
FROM tabla1 T1, tabla2 T2
WHERE T1.CN_ID = T2.CN_ID;
Espero puedan ayudarme :). Gracias por adelantado
La creación de vistas
Submitted by Carlos on 22 January, 2010 - 11:18
In reply to Tengo dos bases de datos by Elena (not verified)
La creación de vistas materializadas con el método de refresco FAST tiene bastantes restricciones, y el error ORA-12015 que te devuelve parece referirse precisamente a eso.
En el artículo Vistas materializadas de Oracle para optimizar un Datawarehouse incluyo un enlace a la documentación de Oracle donde habla de las restricciones para el método FAST. Si no lo has hecho ya, échale un vistazo. De todas maneras copio las restricciones generales que documenta Oracle:
General Restrictions on Fast Refresh
The defining query of the materialized view is restricted as follows:
The materialized view must not contain references to non-repeating expressions like
SYSDATE
andROWNUM
.The materialized view must not contain references to
RAW
orLONG
RAW
data types.It cannot contain a
SELECT
list subquery.It cannot contain analytical functions (for example,
RANK
) in theSELECT
clause.It cannot contain a
MODEL
clause.It cannot contain a
HAVING
clause with a subquery.It cannot contain nested queries that have
ANY
,ALL
, orNOT
EXISTS
.It cannot contain a
[START WITH ...] CONNECT BY
clause.It cannot contain multiple detail tables at different sites.
On-commit materialized view cannot have remote detail tables.
Nested materialized views must have a join or aggregate.
Como puedes ver parece que con el tipo de refresco FAST y la opción ON-COMMIT no se pueden utilizar tablas remotas en la vista. Pueba a definir la vista forzando la opción de refresco ON-DEMAND, y yo creo que te funcionará.
Ya nos contarás..
Efectivamente, la opción
Submitted by Elena (not verified) on 28 January, 2010 - 11:25
In reply to La creación de vistas by Carlos
Efectivamente, la opción ON-COMMIT me daba problemas, la cambié a ON-DEMAND, pero el error persistía :(
Me dijeron que podía ser un problema con la versión de oracle y haciendo pruebas descubrí que así era. Ejecutando las Vistas Materializadas en una versión 11g no daba problemas (yo estaba usando la 9i para hacer las pruebas).
Muchas gracias por la ayuda :)
Estimado Carlos: Yo podria
Submitted by Damian (not verified) on 4 February, 2010 - 09:57
Estimado Carlos:
Yo podria atrapar un error de conexion utilizando dblink entre una base de datos y otra para luego indicarle a esa conexion que internte conectarse de nuevo. Lo que deseo es que si un hay un problema conectandome a la base de datos utiliwando dblink el procedo de reconexion se haga automaticamente en un intervalo de tiempo para garantizar que la extraccion de datos se haga siepre.
Te entiendo, yo he tenido
Submitted by Carlos on 5 February, 2010 - 09:44
In reply to Estimado Carlos: Yo podria by Damian (not verified)
Te entiendo, yo he tenido problemas al utilizar un dblink para conectar con un MySQL y cargar datos en el Data Warehouse corporativo. Funcionaba, pero también fallaba demasiado a menudo, y además cuando fallaba se quedaba frito y ya había manera de hacer nada.
En aquel momento no encontré ninguna manera de reconectar automáticamente el link, por lo que no puedo darte una solución en este sentido, no sé si se puede llegar a hacer. Cuando pueda investigaré un poco, o a ver si alguien más nos ayuda.
Lo que sí te puedo contar es que para que el error de conexión no me dejara vacías las tablas destino, lo que hice fue utilizar vistas materializadas en la stage area del DWH, así si la conexión fallaba simplemente la tabla no actualizaba los datos de ese día y no me paraba la carga. Después tenía un control adicional que me informaba si el día se había cargado o no. Supongo que tú lo solucionas tratando el error directamente en la ETL.
Bueno, ya nos contarás si averiguas algo tú antes, el tema es interesante..
Hola, mi pregunta es
Submitted by Jose (not verified) on 10 February, 2010 - 12:27
Hola,
mi pregunta es sencilla. He leído que cuando se hace una select remota a una tabla mediante dblink, internamente
se inicia una trasacción distribuida.
Uso vistas que realizan select remota a otra/s tablas mediante dblink, ¿es necesario poner COMMIT
después del select para cerrar esta trasacción o todo esto lo hace Oracle internamente?.
Gracias
Para hacer una select no es
Submitted by Carlos on 10 February, 2010 - 23:39
In reply to Hola, mi pregunta es by Jose (not verified)
Para hacer una select no es necesario hacer un commit. Independientemente de si se utilizan database links o no, si no modificas datos de ninguna tabla no hay ninguna razón para hacer un commit.
Si Oracle internamente inicia una transacción distribuída, también la cerrará internamente, no tienes que preocuparte por eso.
Hola. Tengo un error
Submitted by Juan (not verified) on 20 April, 2010 - 11:40
Hola.
Tengo un error extraño de bbdd que no se como encajar:
Tengo un package compilado en un oracle 8i, lo llamo desde una app deployada en un jboss 4.5 y el 90% de las veces funciona OK. De vez en cuando falla devolviendo: "ORA-01007: la variable no se encuentra en la lista de selección"... Al entrar en el package y compilar de nuevo funciona OK... no le veo explicación.. salvo que el package utiliza un DBLink que de vez en cuando falla, pero NO en ese procedure !
ALguna explicación ? Muchas gracias.
Hola Juan No creo que sea un
Submitted by Carlos on 22 April, 2010 - 16:48
In reply to Hola. Tengo un error by Juan (not verified)
Hola Juan
No creo que sea un problema del dblink. Primero porque lo que tú mismo dices de que el database link está en otro procedure, y segundo porque si fallara te devolvería otro tipo de error, más de comunicaciones, conexiones, servidores remotos y esas cosas.
Revisa el procedure y las SELECTS que haces en el mismo. Si te falla sólo a veces tiene que ser que a veces la sentencia devuelve algo que no esperas, o no devuelve nada..
ORA-01007 variable not in select list
Cause: A reference was made to a variable not listed in the SELECT clause.
In OCI, this can occur if the number passed for the position parameter is less than one or greater than the number of variables in the SELECT clause in any of the following calls: DESCRIBE, NAME, or DEFINE.
In SQL*Forms or SQL*Report, specifying more variables in an INTO clause than in the SELECT clause also causes this error.
Action: Determine which of the problems listed caused the problem and take appropriate action.
Hola Carlos, Estoy trabajando
Submitted by Laila (not verified) on 7 August, 2010 - 02:05
Hola Carlos,
Estoy trabajando por primer vez con los dblinks en Oracle On Demand y tengo algunas dudas:
1.- Es necesario que las BD que quiera conectar tengan la misma versión??
2.- Tienen que estar en el mismo servidor las bases que quiera conectar??
Gracias por tu ayuda
Laila wrote: Estoy trabajando
Submitted by Carlos on 10 August, 2010 - 08:45
In reply to Hola Carlos, Estoy trabajando by Laila (not verified)
[quote=Laila] Estoy trabajando por primer vez con los dblinks en Oracle On Demand y tengo algunas dudas: 1.- Es necesario que las BD que quiera conectar tengan la misma versión?? 2.- Tienen que estar en el mismo servidor las bases que quiera conectar?? [/quote]
Las bases de datos pueden tener versiones diferentes, pero dentro de unos límites, en este comentario ya surgió esta cuestión. En principio no deberías tener problemas entre bases de datos Oracle de versiones 8i, 9i, 10g y 11g.
Sobre los servidores, te confirmo que las bases de datos pueden estar en diferentes servidores.
Hola Carlos, tengo un
Submitted by Anonim. (not verified) on 10 August, 2010 - 00:40
Hola Carlos, tengo un problema, estoy trabajando con un dblink el cual es ejecutado dentro de un procedure. Cuando ejecuto el procedure directamente del plsql no es mucho el tiempo de respuesta pero sin embargo cuando lo ejecuto desde un form demora demasiado o a veces no responde.
Que puede ser y que podría hacer para optimizarlo?
Hola podría ayudarme con una
Submitted by myf on 1 September, 2010 - 18:28
Hola podría ayudarme con una consulta que tengo sobre los dblink
Tengo un paquete Cl_pruebas1 el cual llama aun procedimiento pt_pruebas.
En el procedimiento pt_pruebas realizo varios select e insert a unas tablas que estan en una base ppt
Select *
From tabla1@ppt.dd.com
Where Customer_Id = Cn_Customerid ;
Insert Into tabla1@ppt.dd.com
En este procedimiento pt_pruebas cierro los dblink y luego en el paquete principal Cl_pruebas1 realizo un commit a todo, pero el problema es que no se estan actualizando las tablas (tabla1@ppt.dd.com) que estan en la base ppt, solo se actualizan para la otra base qppt, no entiendo cual podría ser el problema.
La verdad es que yo siempre
Submitted by Carlos on 1 September, 2010 - 23:03
In reply to Hola podría ayudarme con una by myf
La verdad es que yo siempre lo he hecho al revés, siempre intento utilizar los dblinks para hacer selecciones de datos, y las inserciones hacerlas 'en local', es la manera más segura, no tienes problemas adicionales con los permisos y te ahorras estos problemas.
Si puedes haz el INSERT desde la BD 'ppt' utilizando un dblink para seleccionar los datos de la BD donde tienes el procedimiento pt_pruebas.
Puede que te vaya bien echarle un vistazo al tema Insert entre bases de datos remotas enlazadas por dblink
Y si al final descubres algo más, porqué no se puede hacer, u otra manera de hacerlo, no te olvides de explicárnoslo..
tengo el siguiente
Submitted by Rolando (not verified) on 3 September, 2010 - 07:29
tengo el siguiente codigo
Imports System.Data.OracleClient
Public Class Form1
Private Sub btnbuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnbuscar.Click
Dim cadenaDeConexion As String
Dim conexion As OracleConnection
Dim dsdataset As New DataSet
cadenaDeConexion = " Data source=ORCL; persist security info=false; User ID= SCOTT; password= scott;"
conexion = New OracleConnection(cadenaDeConexion)
conexion.Open()
Dim query As String
query = "select scott.emp.ename , scott.emp.deptno, scott.dept.loc from" & _
" scott.emp inner join scott.dept on scott.emp.deptno = scott.dept.deptno " & _
" where ename like '%" & UCase(Me.txtnombre.Text.Trim) & "%'"
Dim MiAdaptador As New OracleDataAdapter(query, conexion)
Try
MiAdaptador.Fill(dsdataset)
Me.DataGridView1.DataSource = dsdataset.Tables(0)
Catch ex As Exception
End Try
End Sub
lo que busco es llenar un datagrid con la informacion, pero al darle click al boton me aparece el siguiente error ORA-00604: error ocurred at recursive SQL level 1 ORA 06502 PL/SQL numeric or value error: character string buffer to small ORA 06512: at line 10..
que puedo hacer?? no e encontrado la solucion a este problema!! le agradeceria que me ayudara.. muchas gracias
Hola, Tengo un servidor en
Submitted by Alberto (not verified) on 7 September, 2010 - 23:21
Hola,
Tengo un servidor en Windows con 10gR2 con un dblink definido a un servidor Solaris con 10gR2 también.
Resulta que migre el servidor Windows a un Solaris con 11gR2 pero ahora los queries que usan el dblink al Solaris 10gR2 tienen un mal rendimiento.
Por ejemplo desde el servidor de Windows duran 20 segundos pero desde el nuevo servidor Solaris duran 157 segundos.
Alguna idea de que pueda ser?
Saludos,
Alberto
Así a primera vista parece un
Submitted by Carlos on 9 September, 2010 - 22:05
In reply to Hola, Tengo un servidor en by Alberto (not verified)
Así a primera vista parece un problema de comunicaciones más que de versiones de BBDD o de SO, y más si son versiones 10g y 11g.
Yo revisaría que todas las comunicaciones entre los servidores estén funcionando al 100% y no haya nada que las esté ralentizando
Estimado Carlos, estoy
Submitted by ilmarcito (not verified) on 13 September, 2010 - 17:34
Estimado Carlos, estoy creando el siguiente trigger:
create or replace trigger trg_autonumero
before insert on t_personas_atendidas
for each row
begin
if :new.codPer is null then
select personas_id.NextVal into :new.codPer from dual;
end if;
end;
y me da error de que "el identificador new.CodPer no se ha declarado", a que se debe.
hola! tengo un problema con
Submitted by Hugo (not verified) on 3 November, 2010 - 18:55
hola! tengo un problema con un BDlink y espero me pudieras ayudar. tengo dos bases remotas con oracle 8, creo mi bdlink para conectarme a la otra BD y al probar el bdlink me dice que el enlace no esta activo y al hacer un select o una vista materializada a la BD donde me quiero conectar con el bdlink me dice que TNS:COULD NOT RESOLVE SERVICE NAME.
tengo otro enlace a otra BD remota y ese si funciona sin problemas, todos son oracle 8; no se si falte algo de configuracion en la bd a donde no puedo entrar.
gracias por la ayuda
Hola Carlos, quería ver si me
Submitted by Anonim. (not verified) on 15 November, 2010 - 22:51
Hola Carlos, quería ver si me puedes ayudar...
Necesito crear un sinónimo con db link para llamar a procedimiento de un paquete que está en otra base de datos pero no me funciona.
Es en Oracle.
Le pongo create public synonym xxx for paquete.procedimiento@dblink
y si lo crea pero cuando hago el llamado del sinónimo para ejecutarlo da error de que no reconoce el sinónimo.
Lo intenté hacer solo con el paquete pero igual cuando llamo al sinónimo como? le especifico cual procedimiento del paquete necesito?.
Si lo hago con un procedimiento solito si me funciona... es con paquete que no.
Si me puedes dar un pista!!.. please!. A ver si me dí a entender!.
Saludos Carlos. Mi problema
Submitted by tavo.montero on 7 February, 2011 - 20:51
Saludos Carlos.
Mi problema es el siguiente, tal vez me puedas ayudar !!
Tengo un problema con un DBLink al tratar de ejecutar un procedimiento dentro de un paquete
de la siguiente manera.
Por ejemplo: nombre_paquete.nombre_procedimiento@nombre_dblink(<parámetros>)
La situación es que se realizó una migración y en el servidor anterior todo funciona correctamente
pero en el nuevo servidor esto da problemas. Me han dicho que hay posibilidad de que dé problema
la ejecución de un procedimiento dentro de un paquete haciendo uso de dblinks. He llegado a
pensar que el problema puede ser de configuración del archivo de parámetros; sin embargo;
reviso el archivo y están prácticamente iguales. Las bases de datos tienen nombres distintos.
Básicamente al ejecutarlo obtengo los siguientes errores:
Gracias !!
La nueva base de datos tiene
Submitted by Carlos on 7 February, 2011 - 23:23
In reply to Saludos Carlos. Mi problema by tavo.montero
La nueva base de datos tiene exactamente la misma versión que la antigua?
Buscando por el error he encontrado más de una referencia a un bug de la versión 10g, que se soluciona con un parche. También podría ser la misma versión y que a la nueva le falte aplicar el pachset, echa un vistazo por si acaso fuera eso..
This error is an interoperability error due to the bug 4511371, which is fixed by applying the 10.1.0.5.0 patchset for 10gR1 and 10.2.0.2.0 patchset for 10gR2.
Ref. Metalink note 4511371.8
Fuente: Oracle by Madrid
Saludos Carlos !! Muchas
Submitted by tavo.montero on 8 February, 2011 - 21:21
In reply to La nueva base de datos tiene by Carlos
Saludos Carlos !!
Muchas gracias por tu pronta respuesta !!
En el ambiente anterior las dos bases de datos eran Oracle 10g Release 2 de 32 bits
En el nuevo ambiente una base de datos es Oracle 10g Release 2 de 32 bits y la otra
es Oracle 11g de 64 bits.
Menciono que en el ambiente anterior todo funcionaba perfectamente, leyendo tus comentarios
he visto que el problema se solucionaba con la Oracle 10g R 2, por lo que me extraña mucho
que en Oracle 11g 64 bits esté danto este problema.
Afectará mucho el manejo de los bits? Esto porque una es de 32 y la otra es de 64?
Muchas gracias Carlos !!
El tema 32/64 bits siempre
Submitted by Carlos on 9 February, 2011 - 09:36
In reply to Saludos Carlos !! Muchas by tavo.montero
El tema 32/64 bits siempre puede dar alguna sorpresa, pero yo antes me aseguraría de que la nueva 10g R2 tiene aplicado el patch. Aunque las dos BBDD tengan la misma versión puede que en la anterior estuviera aplicado y en la nueva no.
Busca más información en el metalink para asegurarte antes de hacer nada.
A parte de lo que me pueda
Submitted by Oscar_paredes on 18 May, 2011 - 17:41
Hola, mi pregunta es si puedo
Submitted by yajaira Pardo (not verified) on 24 September, 2013 - 20:03
Sí, sin problemas, con Oracle
Submitted by Carlos on 25 September, 2013 - 00:18
In reply to Hola, mi pregunta es si puedo by yajaira Pardo (not verified)
Sí, sin problemas, con Oracle SQL puedes crear una tabla a partir de otra con una sentencia CTAS:
CREATE AS SELECT ... FROM otra_tabla@dblink
Si no son muchos datos y la red va bien no deberías tener problemas de rendimiento. Si hablamos de millones de registros para arriba, y la red que conecta las dos bases de datos no va sobrada, tendrías que plantearte opciones de exportación e importación.
Buenas tardes Carlos, En el
Submitted by Caro (not verified) on 9 October, 2013 - 20:16
Hola, Tal vez una solucion
Submitted by Javier (not verified) on 17 December, 2013 - 19:11
In reply to Buenas tardes Carlos, En el by Caro (not verified)
Hola, estoy intentando
Submitted by Oscar Castaño (not verified) on 18 December, 2013 - 17:00
Estimado, Estoy Trabajando En
Submitted by MAITE (not verified) on 23 January, 2014 - 15:39
Estimado, Estoy Trabajando En Apex Que Esta En Un Servidor Con Oracle Xe Y Conectandome A Un Servidor Remoto Para Sacar Los Datos De Produccion Lo Que Es Bastante Lento Y Tengo Dos Dudas Espero Me Pueda Ayudar:
1.- Mi Conexion Es A Traves De Dblink Me Comentaron Que De Esta Forma Es Lenta De Que Forma Me Puedo Conectar En Forma Mas Eficiente Manteniendo Mi Servidor Con Apex Y Mi Servidor De Produccion.
2.- Cuando Ejecuto Un Sql En "Sql Comand" De Apex, El Resultado Es Relativamente Rapido, Pero Al Correr Ese Mismo Sql En Una Pagina Este Se Hace Extremadamente Lento. Porque??? Que Pone Mi Pagina Tan Lenta Cuando Debe Mostrar Los Datos. No Estoy Paginando Las Paginas.
Muchas Gracias
hola amigos, tengo el
Submitted by Hasan (not verified) on 24 January, 2014 - 15:17
hola amigos, tengo el siguiente problema al tratar de hacer un insert vía un dblink
ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
ORA-02063: preceding line from LNK_HIST_SI
lo que hago es un
Insert into tabla@dblink
select from tabla
where condiciones
y excluyendo lo que ya este con un not exists tabla@dblink;
espero haber sido claro
si ejecuto el solo select no me da ningun problema pero cuando pongo el insert me da el error del tablespace TEMP
en ese tablespace tengo 5 GB y estoy tratando de insertar solo 5 registros.
gracias por los comentarios
Muy buenas tardes, una
Submitted by Wilmar (not verified) on 22 September, 2014 - 20:59
Muy buenas tardes, una pregunta
Resulta que de sql server 2008 r2 hice un linked server a oracle 9i pero cuando consulto y traigo datos de una tabla de oracle a una en sql server me tarda demasiado tiempo en ejecutar.
No se si es normal porque en la tabla de oracle hay miles de registros, pero los registros los estoy filtrando por fecha no se donde estar el error o si es normal
gracias de antemano
Buenas noches, quería
Submitted by Jonathan Torres (not verified) on 24 November, 2014 - 05:35
Buenas noches, quería consultarte sobre un error que me está apareciendo en un aplicativo que usa un dblink desde Oracle a MySQL (un esquema de Oracle consume información de una base de datos Mysql), el dblink lo he hecho mediante el Oracle Gateway ODBC que viene con el Oracle, y el error es el siguiente:
java.sql.SQLException: Violación de protocolo
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C7Ocommoncall.doOLOGOFF(T4C7Ocommoncall.java:61)
at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:491)
at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:3754)
at pe.gob.servir.cat.connection.factory.ConnectionFactory.CloseConexion(ConnectionFactory.java:73)
at pe.gob.servir.cat.persistencia.jdbc.MovimientoActivoDAO.getDatosActivosRemotosComplemento(MovimientoActivoDAO.java:218)
at pe.gob.servir.cat.persistencia.jdbc.MovimientoActivoDAO.main(MovimientoActivoDAO.java:384)
Exception in thread "main" java.lang.NegativeArraySizeException
at oracle.jdbc.driver.T4CMAREngine.unmarshalDALC(T4CMAREngine.java:2341)
at oracle.jdbc.driver.T4C8TTIuds.unmarshal(T4C8TTIuds.java:146)
at oracle.jdbc.driver.T4CTTIdcb.receiveCommon(T4CTTIdcb.java:200)
at oracle.jdbc.driver.T4CTTIdcb.receive(T4CTTIdcb.java:144)
at oracle.jdbc.driver.T4C8Oall.readDCB(T4C8Oall.java:771)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:346)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:861)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1145)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1267)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3493)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at pe.gob.servir.cat.persistencia.jdbc.MovimientoActivoDAO.getDatosActivosRemotosComplemento(MovimientoActivoDAO.java:198)
Por favor si tuviera alguna idea de a que se puede deber el error, le estaré agradecido me pueda ayudar
Buenas tardes, Tengo
Submitted by Joseph (not verified) on 22 August, 2015 - 00:03
Buenas tardes,
Tengo creado un DB_Link de Sql Server 2012 a Oracle 11g, puedo hacer consultas a las bd que asigne. Pero me da un error al momento de realizar un update desde Oracle, para que me realice el cambio en la Bd Sql Server. el error es el siguiente: ORA-02070 database does not support update in this context.
Por favor si me pueden ayudar se los agradeceria.
Saludos,
Tengo un procedimiento X
Submitted by Anonimo (not verified) on 2 February, 2016 - 18:13
Tengo un procedimiento X creado en oracle 12c, en oracle 11g se creo un dblink para ejecutar ese procedimiento X, pero en ocasiones genera los siguientes errores:
ORA-04052: se ha producido un error al consultar el objeto remoto SYSTEM.PK_COR@ADMIN.xxx.com.co
ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado
04052. 00000 - "error occurred when looking up remote object %s%s%s%s%s"
*Cause: An error has occurred when trying to look up a remote object.
*Action: Fix the error. Make sure the remote database system has run
KGLR.SQL to create necessary views used for querying/looking up
objects stored in the database.
Carlos, no soy el dba, y no se como ayudar a corregir este error.
gracias
hola carlos disculpa el abuso
Submitted by Luis Sanchez (not verified) on 29 February, 2016 - 14:50
hola carlos disculpa el abuso soy de venezuela y vi en un foro que tu respondes cosas de oracle o si otra persona me puede ayudar le agradezco. bueno te cuento lo que me sucede:
tengo mi BD en oracle 10g y en otro servidor que no es de nosotros también tiene oracle no recuerdo si es la 10g o la 11g
bueno el problema es el siguiente tengo una vista de mi servidor al otro servidor a través de un enlace de base de datos y chevere hago la consulta y funciona pero resulta que si por ejemplo:
tengo mi pantalla donde pido una cédula la consulto en la vista que es del otro servidor y trae el nombre y apellido todo bien hasta aquí, termino de llenar los datos ya de mi tabla que esta servidor y bien al momento de guardar revienta dice error de comunicación me di cuenta que es la vista remota hacia el otro servidor, ya que me cree una pantalla mas sencilla sin hacer la consultar hacia esa vista remota y ahi si guarda pero si pongo algo que consulte a esa vista y guardo en mi tabla sale ese error
PD no recuerdo si siempre pasa o es a ratos ese error el detalle es que sucede es al consultar una vista remota
gracias a todos
¿Puedes copiar el texto
Submitted by Carlos on 29 February, 2016 - 18:13
In reply to hola carlos disculpa el abuso by Luis Sanchez (not verified)
¿Puedes copiar el texto completo del error, y la consulta que haces con el dblink remoto?
Tengo un problema. conectando
Submitted by RF (not verified) on 8 March, 2016 - 17:26
Tengo un problema. conectando entre un IBM i V7R1 , mediante DBLink a una DB Oracle me da un error de formato de de fecha.
Buenas tarde disculpe las
Submitted by JonathanBlackgg (not verified) on 3 August, 2016 - 20:56
Buenas tarde disculpe las molestias pero estoy necesitando ayuda de un experto como usted. Al instalar Oracle11g Me da a elegir en una opcion si queremos instalar en forma de Escritorio o Servidor .. En cual de esos dos modos instalo para poder crear una DBlink?
Hola Jonathan En principio no
Submitted by Carlos on 5 August, 2016 - 13:29
In reply to Buenas tarde disculpe las by JonathanBlackgg (not verified)
Hola Jonathan
En principio no te va a influir en la posibilidad de crear DBLinks si haces la instalación en modo Desktop o en modo Server, ya que en ambos casos vas a instalar el mismo motor, solo que en el modo Server el instalador crea opciones de configuración más avanzadas.
Saludos,
Buenos dias, talvez ustedes
Submitted by Anonimo (not verified) on 6 August, 2016 - 18:23
Buenos dias, talvez ustedes me pueden ayudar.
Necesito conectarme de un dblink de mi base en mi maquina a otro dblink creado en otra maquina.
En pocas palabras la maquina A tiene un dblink para conectarse consultar tablas de la maquina B. pero la maquina B tiene un dblink para conectarse a una maquina C.
quiero consultar tablas de la maquina C usando el dblink de la maquina B pero de la maquina A
Carlos, buenas tardes. le
Submitted by César Heredia (not verified) on 27 April, 2017 - 01:16
Carlos, buenas tardes. le comento que he instalado dos base de datos Oracle 11g Express XE, y quiero generar un db link entre las dos base de datos. La verdad es que he buscado por todos lados, como hacer la conexion de estas dos base de datos, pero no puedo conectarme. me da error de time out cuando creo el db link. Dichas bases de datos, estan en diferentes servidores fisicos, las dos base de datos se llaman XE dado a que es la unica forma que se instala el 11g express. hay alguna limitante para generar db link entre dos base de datos express? que cosas puedo controlar o hacer, para generar dichas conexion. Desde ya muchas gracias y disculpa las molestias. César.
Que yo sepa Oracle XE no
Submitted by Carlos on 29 April, 2017 - 10:08
In reply to Carlos, buenas tardes. le by César Heredia (not verified)
Que yo sepa Oracle XE no tiene ninguna limitación en cuanto a la creación de database links. Si lo que obtienes es un error de timeout puede que sea un problema de comunicaciones entre las dos bases de datos. Si están en diferentes servidores o máquinas puede que algún firewall o alguna regla impida que se comuniquen entre sí. Revisa sobretodo que los puertos que tengas configurados en las bases de datos, que estén abiertos.
Por defecto la base de datos utiliza el 1521, y para conexiones http el 8080. Si quieres consultar la configuración de los puertos puedes ejecutar desde linea de comandos con el usuario de sistema con que has hecho la instalación en windows, o un user que pertenezca al grupo de Oracle en Linux/Unix:
Antes de nada recuerda también hacer un tnsping para validar que hay comunicación entre las dos bases de datos
Dejar el puerto 8080 por defecto para las comunicaciones por http de BBDD Oracle puede crearte problemas si ya utilizas este puerto para otras aplicaciones, que es algo bastante habitual.
Te muestro cómo consultar por SQL qué puerto tienes configurado en la base de datos, y cómo cambiarlo por otro, el 8089 por ejemplo:
Carlos buenas tardes. Mira
Submitted by Ricardo (not verified) on 29 November, 2017 - 18:39
Carlos buenas tardes. Mira tengo este problema con un DBLINK que en su momento funciona, actualmente me manda este error, de favor tus comentarios por donde puedo buscar o ver que es lo que esta pasando, el DBLINK existe. Me conecto a la base del DBLINK y sin problemas. Al utilizar el DBLINK y nada. 09:34:20 Error: ORA-03113: end-of-file on communication channel SALUDOS
Buen dia, Sabes que ejecute
Submitted by angelitodiaz2017 (not verified) on 5 January, 2018 - 04:52
Buen dia,
Sabes que ejecute un procedimiento que usaba dblink varias veces por error en la programación.
Ahora tengo el error presente y no puedo acceder a la aplicación.
El error:
ORA-04052: se ha producido un error al consultar el objeto remoto CLIENTEVIR.ANDES@WEB
ORA-00604: se ha producido un error a nivel 2 de SQL recursivo
ORA-02046: ya ha empezado la transacción distribuida
ORA-02063: line precediendo a WEB
He intentado varias cosas de las que refieres aqui y nada.
He probado: reiniciar el servidor, matar todas las sesiones y lo del dblink.
Alguna idea?????
Gracias,
Amigosm estoy haciendo un
Submitted by Aldo Valenzuela (not verified) on 12 March, 2018 - 21:27
Amigosm estoy haciendo un DBlink de oracle a mysql y en la configuración inicial que es configurar la ODBC.ini y el listener me arroja error por el SID. me podría ayudar a como realizar este procedimiento.