DBLink

Lucilda
06 de Septiembre del 2005
Hola, tengo una consultilla, a ver si alguien me puede ayudar ...
Os cuento, tengo dos bases de datos en Oracle8i y un link que las conecta. Para que funcione mi aplicación tengo que crear un paquete que tiene diferentes procedimientos y funciones que hacen uso del link que tengo creado. Cuando ejecut el script de creación del paquete funciona si antes he ejectutado la sentencia ALTER SESSION SET GLOBAL_NAMES=FALSE;

Para que funcione mi aplicación correctamente de modificado el parámetro global_names en el fichero init<sid>.ora pero no lo coge, alguien sabe cómo solucionar esto??

Gracias por anticipado

CHEMIAN
06 de Septiembre del 2005
prueba a poner como nombre del link el mismo que pones en la clausula using.
Ej: 'CREATE DATABASE LINK PP CONNECT TO USUARIO IDENTIFIED BY PASWORD USING PP'
donde pp seria el alias que tienes en el tnsnames.

de todas formas si esto no te funciona, puedes decirme como estas cambiando el parametro en el init.ora??

Lucilda
06 de Septiembre del 2005
Hola Chemian,
he probado con lo que me has dicho pero sigue sin funcionar. El tema creo que está en que hace poco que hemos tenido que reinstalar las bases de datos y para que funcionara tuvimos que cambiar el dominio. El error que me da es ORA-02085: database link BD.WORLD connects to BD.ANTIGUODOMINIO.
He mirado todos los ficheros de configuración y no se donde puede estar el error ...
De todos modos en el init.ora he modificado el parametro poniendo GLOBAL_NAMES=FALSE

¿Se te ocurre como solucionarlo?

Gracias

chemian
06 de Septiembre del 2005
cuando arrancas la bbdd especificas que arranque con el pfile que has modificado, no sea que cuando haces el startup este cogiendo por alguna razon otro fichero de parametros que no es el que tu modificas.
prueba a modificar el init.ora y arranca la bbdd de la siguiente forma 'STARTUP PFILE='C:ORACLEORA8DATABASEINIT.ORA' .
Evidentemente tu pon la ruta que tengas y el fichero que tengas.
No se si esto te funcionara, porque la verdad es que no se si esta forma de arrancar existia en la 8 pero entiendo que si, ya que tambien se podian tener varios ficheros de parametros.

Lucilda
06 de Septiembre del 2005
Haciendo el startup de la manera que dices me da el siguiente error:
ORA-01102: cannot mount database in EXCLUSIVE mode
¡Agrrrr! ¿Cómo lo soluciono?


Lucilda
06 de Septiembre del 2005
No lo entiendo, he hecho lo mismo con la otra base de datos y la monta y la abre sin problemas

chemian
06 de Septiembre del 2005
prueba a cambiar en el init el parametro compatible y lo igualas a la version de oracle que utilizas.
Ej: 'compatible=8.1.7'.
Este parametro sirve para hacer que nuestra BBDD se comporte como una version anterior en caso de necesitarlo, y normalmente esta puesto al valor de nuestra version. Lo cual me hace preguntarte si esto que estas haciendo no sera para utilizarlo con algun programa que se utilizaba en una version anterior de oracle y te falla a raiz del cambio??
Ya me contaras

Lucilda
06 de Septiembre del 2005
He probado con lo que me has dicho pero sigue sin funcionar. De todas formas el fichero init.ora de la otra base de datos es igual al de esta (cambian solo las líneas en la que hace referencia al nombre de la BD) y me deja hacer el startup tal como me has indicado antes.
Los problemas han surgido cuando nos han traido una máquina nueva en la que hemos tenido que montar las Bd y las aplicaciones. Cuando instalamos nos daba un error y lo solucionamos cambiando el dominio de la BD a .WORLD
Ahora, como ya te he comentado antes, el error que me dice es que el link apunta al dominio anterior, pero he revisado los ficheros de configuración y en ninguno de los que he visto aparece el nombre del dominio anterior.

chemian
06 de Septiembre del 2005
lo ultimo que se me ocurre es una opcion que vi en otro foro y era;
1. hacer el alter session antes de crear el link
ej:Alter session set global_names=FALSE
2. crear el dblink tal y como te dije antes poniendo el nombre del link igual que el de la clausula using
3. probar el dblink con alguna tabla
4. cambiar el paramtro 'GLOBAL_NAMES=FALSE' en el init.ora y reiniciar la bbdd.
Si esto no te funciona, por ahora no se me ocurren mas posibilidades.
Ya me contaras

chemian
06 de Septiembre del 2005
otra cosa mas, entiendo que en la clausula using no estas poniendo .world, es decir si el alias de la conexion es ppp.world, tu tienes que poner en el using ppp