Global database links
I am using global database links with Oracle Names. I have about a hundred databases ranging from 7.3.4 to soon to be 9i. Will OID support global database links in my environment? Is there any documentation dealing with global database links & OID.
Thank you for your help.
-SB
Hi Scott:
Yes OID will support your all of these database connection. The best document on this subject is the Oracle Networking Admin guide for 8.1.7. Chapter 6 gives you all the informaiton on how to set this up.
Thanks.
Jay
null
Similar Messages
-
How to use a Global database link
i try to create a global database link through two databases MZFB et MZF14952.
the MZFB database is installed under the machine MZFXPDESK
the MZF14952 database is installed under another machine SUPPORT1
i execute this code
CREATE DATABASE LINK dbl_14952_5
CONNECT TO BELGA_5
IDENTIFIED BY mypwd
USING 'MZFB'
select * from dba_db_links
OWNER DB_LINK USERNAME HOST CREATED
MZF14952 DBL_14952_5.CORP.MYCOMPANY.COM BELGA_5 MZFB 02/14/2007 14:17:21:000
select * from global_name
DBL_14952_1.CORP.MYCOMPANY.COM
select * from [email protected]
=> ORA-02019: connection description for remote database not foundzafadm,
as Leonardo pointed out you should refer to the db link by it's name - '@dbl_14952_5'. The USING clause expects a full address or an alias that refer's to your tnsnames.ora file on the local server (SUPPORT1) where an entry would exist with that alias. You can bypass the tnsnames.ora file by supplying the full address in your create database link statement, ie;
create database link dbl_14952_5
connect to BELGA_5
identified by "password"
using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host_ip)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MZFB)))';Update the statement with the ip of the remote (MZFXPDESK) server. -
Creation of Database link and access the same plus Snapshot creation
i want talk between two oracle server. i decided to go for snapshot creation with periodical refresh. For which i am having two oracle server's with different ip address located inside our office setup.
I have created a database link between two servers.
first server name global
userid scott
password tiger
second server name asil
userid scott
password tiger
both the user have been given dba rights.
in both the server the services and listners are all started. i gave the following command to create database link.
from asil server
create public database link global connect by scott identified by tiger using 'global'
the command was successful and the link was created. Now i tried to access a table of the scott user of the global server.
select * from emp@global;
now it is giving error. I want to know how the link can be created and how it can be accessed. i refered the 8i online documentation and done the things based on that. i expect valuble solution from all possible persons
nullA reason for this problem could be that your database is configured that a database link has to have exactly the same name like the global name of the database instance it should connect to.
Can you please provide the oracle error code / message ? With this information there might be more hints I can give you. -
How to Execute a Remote Procedure in Portal using Database Link
Hi,
I followed the instructions to create a Portal form for a remote procedure. But I am encountering the following error. Can someone advise what may be the cause?
Failed to execute - Missing string(create_package_body) language(us) domain (wwv) sub_domain (wwv_builder) (WWV-04300)
ORA-04020: deadlock detected while trying to lock object PUBLIC.PORTLET_SCHEMA (WWV-11230)
Failed to parse as PORTAL - (WWV-08300)
PURPOSE
How to execute a remote procedure in Portal using Database Link.
DESCRIPTION
This procedure assumes that you have two databases, one of which is remote, and Portal is configured in the other.
Remote Database A:
==================
1) Create a procedure as follows: Create or Replace PROCEDURE SCOTT.ADD_TWO_VALUES ( v_one IN NUMBER, v_two IN NUMBER, v_result OUT NUMBER) as begin v_result :=v_one+v_two; end; 2) Grant execute privileges to PUBLIC on the procedure.
Database B (where Portal is configured): ========================================
1) Create a public database link and choose to connect as a specific user (say SYSTEM). By default, in an Oracle 8i database, the "global_names" parameter in initSID.ora (or init.ora) file is set to "true". This Global Naming parameter enforces that a dblink has the same name as the database it connects to. Therefore, if the remote global database (A) name is "ora8.acme.com" then the database link should also be named as "ora8.acme.com".
2) Create a synonym for the procedure in Database A. Make sure you fully qualify the procedure name in the remote database (like SCOTT.ADD_TWO_VALUES).
3) Create a dynamic page to execute the procedure. The ORACLE tags in the dynamic page will look similar to the following: <ORACLE> DECLARE v_total NUMBER; BEGIN ADD_TWO_VALUES(:v_one,:v_two, v_total); htp.p('The total is => '); htp.p('<input type="TEXT" VALUE='||v_total||'>'); htp.para; htp.anchor('http://<machine.domain:port#>/pls/portal30/SCOTT.DYN_ADD_TWO_VALUES.show_parms', 'Re-Execute Procedure'); END; </ORACLE>
4) Portal does not have an option to create a form based on a synonym. Therefore, if you want to create a form instead of a dynamic page, create a wrapper procedure and then create a form based on this procedure. For example: Create or Replace PROCEDURE PORTAL30.ADD_TWO_VALUES_PR ( v_one IN NUMBER, v_two IN NUMBER, v_total OUT NUMBER) as begin add_two_values(v_one, v_two, v_total); end;
5) Grant execute privileges to PUBLIC on the procedure.hello...
any input will welcomed... Thanks.. -
Before creating the link, I went into my init.ora file and made sure the GLOBAL_NAMES entry was false.
I then created a database link using the following:
create public database link cindy_link
connect to system identified by syspswd
using 'PRECISEI';
My link was created, but when I attempt to use it, I get the error:
ORA-02085:database link CINDY_LINK.WORLD connects to PRECISEI.WORLD
Here is the entry from my tnsnames.ora file:
PRECISEI =
(DESCRIPTION =
(ADDRESS_LINK =
(ADDRESS =(PROTOCOL = TCP)(HOST = taurus)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = precisei.world)
Here is the entry from my listener.ora file:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = precisei.world)
(ORACLE_HOME = E:|oracle\ora81)
(SID_NAME = precisei)
(I must admit to not having a full understanding of SID_NAME vs SERVICE_NAME.) I looked in dba_db_links, and my db_link is named CINDY_LINK.WORLD instead of CINDY_LINK.
Do I have a problem in one of my files?
I would really appreciate any help.
Thanks.Well, I was facing the same problem but corrected it later on. Let me describe the solution is little detail.
You need to check few things before creating db link.
1) db_name and db_domain in init.ora file
2) global_name in listener.ora file
3) service name in tnsnames.ora file.
It seems to me that you have not specified the db_domain in init.ora file. And in that case, you need to follow these steps.
I am considering here that you have database A on server X and database B on server Y.
Go to the first server (server X).
set the global name in init.ora file by following
Global_name=true
db_domain=usa.com
Start and open the database.
connect as system user.
(if your oracle sid is orcl then)
svrmgr30>alter database rename global_name
to orcl.usa.com;
this will set the global_name as specified in init.ora file. Here, your SID is orcl and db_domain is usa.com so global_name will be orcl.usa.com.
svrmgr30>Select * from global_name;
You get the answer like this.
Orcl.usa.com
Now, go to Listener.ora file and change global_name to the new name (orcl.usa.com)
restart the listener.
WE WILL SEE ABOUT THE CHANGES OF TNSNAMES.ORA LITTLE LATER.
Now, go to second server(server Y) and perform the same operation as defined above. i.e. Specify the db_name, db_domain in init.ora file, execute "alter database.." command for setting global_name and edit listener.ora file for new global name.
Once you do all these you need to create service on server 1 to connect to server 2 and on server2 to connect to server1.
Go to server X.
Open tnsnames.ora file and create an entry like this.
P =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = IP address of B)(Port= 1521)))
(CONNECT_DATA = (SID = P))
Here, P is global name of P ( at both the places).
Now, go to server Y.
Open tnsnames.ora file and create an entry like this.
Q =
(DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(Host = IP address of A)(Port= 1521)))
(CONNECT_DATA = (SID = Q))
Here, Q is global name of Q ( at both the places).
you are all set now.
Create database link between 2 servers now.
Say these are all your settings..
Server X is having database A with global_name orcl.usa.com and server Y is having database B with global_name orcl2.us.com
Now go to server X and create db link to server Y
Create public database link orcl2.us.com using 'orcl2.us.com'
(Note. don't miss to create a service 'orcl2.us.com' in server X's tnsnames.ora file)
And go to server Y and create db link there.
Create public database link orcl.usa.com using 'orcl.usa.com'
(Note. don't miss to create a service 'orcl.usa.com' in server Y's tnsnames.ora file)
hope this helps,
If this doesn't work, feel free to contact me.
Kalpen
<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by cindy spearman ([email protected]):
Before creating the link, I went into my init.ora file and made sure the GLOBAL_NAMES entry was false.
I then created a database link using the following:
create public database link cindy_link
connect to system identified by syspswd
using 'PRECISEI';
My link was created, but when I attempt to use it, I get the error:
ORA-02085:database link CINDY_LINK.WORLD connects to PRECISEI.WORLD
Here is the entry from my tnsnames.ora file:
PRECISEI =
(DESCRIPTION =
(ADDRESS_LINK =
(ADDRESS =(PROTOCOL = TCP)(HOST = taurus)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = precisei.world)
Here is the entry from my listener.ora file:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = precisei.world)
(ORACLE_HOME = E:|oracle\ora81)
(SID_NAME = precisei)
(I must admit to not having a full understanding of SID_NAME vs SERVICE_NAME.) I looked in dba_db_links, and my db_link is named CINDY_LINK.WORLD instead of CINDY_LINK.
Do I have a problem in one of my files?
I would really appreciate any help.
Thanks.<HR></BLOCKQUOTE>
null -
Database link to SQL Server Init error
Hi all,
i´m tryng to create a dblink between Oracle 10.2.0 in a RHEL4 and a SQL Server.
I can connect using isql but when i try using sqlplus i obtain this error:
SQL> CREATE DATABASE LINK dbl
CONNECT TO "user"
IDENTIFIED BY "pwd"
USING 'hsodbc'; 2 3 4
Enlace con la base de datos creado.
SQL> SELECT * FROM Table_1@dbl;
SELECT * FROM Table_1@dbl
ERROR en línea 1:
ORA-28545: error diagnosticado por Net8 al conectar a un agente (error in Net8 while connecting an agent)
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: 2 lines precediendo a DBL
This is the error explanantion in Oracle Docs:
I think the problem is the ini file inithsodbc.ora.
inithsodbc.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
# HS init parameters
# AAB - Parametros para asociar un agente ODBC al HS
HS_FDS_CONNECT_INFO = MSQLS
HS_FDS_TRACE_LEVEL = ON
HS_FDS_SHAREABLE_NAME =/usr/local/freetds/lib/libtdsodbc.so
HS_AUTOREGISTER = true
# ODBC specific environment variables
set ODBCINI=/home/oracle/.odbc.ini
listener.ora
# listener.ora Network Configuration File: /app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = STA2)
(ORACLE_HOME = /app/oracle/oracle/product/10.2.0/db_1)
(SID_DESC = (SID_NAME=hsodbc)
(ORACLE_HOME=/app/oracle/oracle/product/10.2.0/db_1)
(PROGRAM=hsodbc)
(ENVS=LD_LIBRARY_PATH=/app/oracle/oracle/product/10.2.0/db_1/lib:/usr/local/lib)
LISTENER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = nemesisgr2.hi.inet)(PORT = 1521))
tnsnames.ora
# tnsnames.ora Network Configuration File: /app/oracle/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DEVSTA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = nemesisgr.hi.inet)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = devSTA)
STA2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = nemesisgr2.hi.inet)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = STA2)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
STA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = nemesisgr2.hi.inet)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = STA)
#AAB - Descripcion de servicio para conectar con SQLServer
HSODBC = (DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)
(HOST=nemesisgr2.hi.inet)
(PORT=1521)
(CONNECT_DATA = (SID=hsodbc)
(HS = OK)
ODBC Files
odbc.ini
[ODBC Data Sources]
MSQLS = Microsoft SQL Server
[MSQLS]
Driver = /usr/local/freetds/lib/libtdsodbc.so
Description = Microsoft SQL Server
Trace = No
Servername = sqlserver
Database = master
[Default]
Driver = /usr/local/freetds/lib/libtdsodbc.so
odbcinst.ini
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1
[MSQLSDRIVER]
Description = Driver for MS SQL Server
Driver = /usr/local/freetds/lib/libtdsodbc.so
Setup = /usr/lib64/libtdsS.so
FileUsage = 1
UsageCount = 5
freetds.conf
# $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $
# This file is installed by FreeTDS if no file by the same
# name is found in the installation directory.
# For information about the layout of this file and its settings,
# see the freetds.conf manpage "man freetds.conf".
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
# A typical Sybase server
[egServer50]
host = symachine.domain.com
port = 5000
tds version = 5.0
# A typical Microsoft server
[egServer70]
host = ntmachine.domain.com
port = 1433
tds version = 7.0
# Test MS SQl Server
[sqlserver]
Database = master
host = pruebas.hi.inet
port = 1433
tds version = 7.0
Any ideas??
Thanks in advance.
AlexI have changed the inithsodbc.ora file including:
HS_FDS_SHAREABLE_NAME =/usr/lib/libodbc.so (I have ODBC installed)
Here you are the other information:
lsnrctl status
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 23-OCT-2008 09:29:52
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Bienvenido a LSNRCTL, escriba "help" para obtener información.
LSNRCTL> status
Conectándose a (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=nemesisgr2.hi.inet)(PORT=1521)))
ESTADO del LISTENER
Alias LISTENER
Versión TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Fecha de Inicio 22-OCT-2008 19:31:34
Tiempo Actividad 0 días 13 hr. 58 min. 29 seg.
Nivel de Rastreo off
Seguridad ON: Local OS Authentication
SNMP OFF
Parámetros del Listener /app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log del Listener /app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log
Recibiendo Resumen de Puntos Finales...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=nemesisgr2)(PORT=1521)))
Resumen de Servicios...
El servicio "STA" tiene 1 instancia(s).
La instancia "STA", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "STA2" tiene 2 instancia(s).
La instancia "STA2", con estado UNKNOWN, tiene 1 manejador(es) para este servicio...
La instancia "STA2", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "STA2XDB" tiene 1 instancia(s).
La instancia "STA2", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "STA2_XPT" tiene 1 instancia(s).
La instancia "STA2", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "STAXDB" tiene 1 instancia(s).
La instancia "STA", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "STA_XPT" tiene 1 instancia(s).
La instancia "STA", con estado READY, tiene 1 manejador(es) para este servicio...
El servicio "hsodbc" tiene 1 instancia(s).
La instancia "hsodbc", con estado UNKNOWN, tiene 1 manejador(es) para este servicio...
El comando ha terminado correctamente
LSNRCTL>
hsodbc
There is no output executing this command.
[oracle@nemesisgr2 ~]$ /app/oracle/oracle/product/10.2.0/db_1/bin/hsodbc
[oracle@nemesisgr2 ~]$
tnsping hsodbc
[oracle@nemesisgr2 ~]$ tnsping hsodbc
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 23-OCT-2008 09:35:58
Copyright (c) 1997, 2005, Oracle. All rights reserved.
Archivos de parámetros utilizados:
/app/oracle/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
Adaptador TNSNAMES utilizado para resolver el alias
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp) (HOST=nemesisgr2.hi.inet) (PORT=1521)) (CONNECT_DATA = (SID=hsodbc)) (HS = OK))
Realizado correctamente (40 mseg)
Rgds,
Alex -
Database Link Creation and Acessing
i want to talk between two oracle server. i decided to go for snapshot creation with periodical refresh. For which i am having two oracle server's with different ip address located inside our office setup.
I have created a database link between two servers.
first server name global
userid scott
password tiger
second server name asil
userid scott
password tiger
both the user have been given dba rights.
in both the server the services and listners are all started. i gave the following command to create database link.
from asil server
create public database link global connect by scott identified by tiger using 'global'
the command was successful and the link was created. Now i tried to access a table of the scott user of the global server.
select * from emp@global;
now it is giving error. I want to know how the link can be created and how it can be accessed. i refered the 8i online documentation and done the things based on that. i expect valuble solution from all possible persons
nullSee link http://kr.forums.oracle.com/forums/thread.jspa?threadID=221081
Hope this helps solve your issue.
thanks
http://swervedba.wordpress.com/ -
Database link with current_user
I'm logged on database EMSDB.D710.DE and created a database link to EMSDB.D999.DE with current_user(...same user, same credentials I'm logged in). When I tried to use that created link I get the errorcode:"ORA-01017: Benutzername/Kennwort ungültig; Anmeldung abgelehnt". What I don't understand is, why I can connect to EMSDB.D999.DE --- but not access to the same database with a database link???
SELECT 'EMSDB.D999.DE' REMOTE_DB --NAME OF DATABASE
FROM DUAL;
VARIABLE VAR_REMOTE_DB VARCHAR2(15);
BEGIN
:VAR_REMOTE_DB := '&REMOTE_DB';
END;
SELECT :VAR_REMOTE_DB REMOTE_DB
FROM DUAL;
CREATE DATABASE LINK &REMOTE_DB CONNECT TO CURRENT_USER USING '&REMOTE_DB' ;
SELECT TABLE_NAME FROM ALL_TABLES@&REMOTE_DB;output
SQL> @test
REMOTE_DB
EMSDB.D999.DE
REMOTE_DB
EMSDB.D999.DE
SELECT TABLE_NAME FROM [email protected]
FEHLER in Zeile 1:
ORA-01017: Benutzername/Kennwort ungültig; Anmeldung abgelehnt
SQL>Edited by: user5116754 on 22.02.2011 04:33user5116754 wrote:
Thank you, John...but should it be possible for me to create this database link then???
As I said, if you are not a global user according to Oracle, you would need to create a database link supplying the username and password of the user at the remote database that you want to use. Something like:
CREATE DATABASE LINK EMSDB.D999.DE
CONNECT TO username IDENTIFIED BY password
USING 'EMSDB.D999.DE';
How to spy out, what kind of user (GLOBAL...) I am?Log into the local database and do:
SELECT external_name
FROM user_uses;If that return null, then you are not a global user, if it returns a value, you are a global user in that database. Log into the remote database (whatever is identified by emsdb.d999.de) and do the same thing. If the external names on both databases are not null and have the same value, then you are a global user on both databases, and the current_user should work, otherwise you are ethe not a global user on one or both databases, or you are a different global user on the two databases.
John -
Database link in forms is different that actual database name
I am using a database link in Oracle Forms 6i, however, the database link name for the referenced database is not the same as the actual databse service/instance name.
It does not work, and I suppose its something to do with the global names feature which is true in the source database it is in a replication group.
I would like to know whether the dblink name which I am using in oracle forms, does it have to have the same name as an entry in the tnsnames.ora file, or can be substituted thgrough any so-calld alias from within oracle forms?
Windows 2k Ad svr, Oracle Forms 6i, DB 9.2.0.1I recently upgraded my development environment from Forms 10.1.2.0.2 to Forms 10.1.2.3 and am experiencing the same problem -- not able to COMPILE a form that references a database link. The error is: "Error 352 at line 99, column 3 Unable to access another database 'LINKNAME'". This occurs on an UPDATE statement within PL/SQL code in a form trigger that used to compile and work fine.
I tried the database link in SQL Plus and the link is working fine.
Database environment is 10g 10.2.0.3 on Windows Server 2003.
Is anyone able to do this? -
Help with a database link?
Hiya
In our environment we have two servers for live and two for test. LIVE01 has db links to all other servers and they all work fine. I cannot get the db links up on test and I'm not sure why..
Both systems have global_names set FALSE so i can name the link anything I want. Both systems have identical TNSNAMES files and no SQLNET.ORA
The test systems have database names that do not have a suffice (it's the only significant difference I can find)
LIVE01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = LIVE01.MYDOMAIN.COM)
LIVE02 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = LIVE02.MYDOMAIN.COM)
TEST01 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.2)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = TEST01)
TEST02 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.2)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = TEST02)
)I've connected via RDP to each server, and I can tnsping and sqlplus user/pass@tnsname successfully on both servers, to all instances
The command I use in sqlplus to create the link on LIVE01:
CREATE PUBLIC DATABASE LINK live2dblink CONNECT TO user IDENTIFIED BY pass USING 'LIVE02';
CREATE PUBLIC DATABASE LINK test1dblink CONNECT TO user IDENTIFIED BY pass USING 'TEST01';
CREATE PUBLIC DATABASE LINK test2dblink CONNECT TO user IDENTIFIED BY pass USING 'TEST02';
SELECT * FROM ALL_DB_LINKS
PUBLIC live2dblink.DOMAIN.COM USER LIVE02 2011-04-10 01:26:23
PUBLIC test1dblink.DOMAIN.COM USER TEST01 2011-04-10 01:26:23
PUBLIC test2dblink.DOMAIN.COM USER TEST02 2011-04-10 01:26:23SELECT * FROM DUAL@test2dblink ;
DUMMY
XBut if I repeat the relevant parts of the setup on test01 to link to the other 3 databases:
CREATE PUBLIC DATABASE LINK live1dblink CONNECT TO user IDENTIFIED BY pass USING 'LIVE01';
CREATE PUBLIC DATABASE LINK live2dblink CONNECT TO user IDENTIFIED BY pass USING 'LIVE02';
CREATE PUBLIC DATABASE LINK test2dblink CONNECT TO user IDENTIFIED BY pass USING 'TEST02';
SELECT * FROM ALL_DB_LINKS
PUBLIC live1dblink.DOMAIN.COM USER LIVE01 2011-04-10 01:26:23
PUBLIC live2dblink .DOMAIN.COM USER LIVE02 2011-04-10 01:26:23
PUBLIC test2dblink.DOMAIN.COM USER TEST02 2011-04-10 01:26:23SELECT * FROM dual@test2dblink
error: "tns could not resolve service name"
I've run out of other things to check - it's not the "global names must match" issue because that's set false and verified with
SELECT name, value
FROM gv$parameter
WHERE (name LIKE '%link%')
OR (name IN ('global_names', 'dblink_encrypt_login'));
Yep, it's false..
I've seen other errors during my fiddling with various parameters, including "end of file on communication channel" when select * from dual@db_link.. as though the test instance kicked the connection from live but for the past half hour, this "cannot resolve" has been the persistent one..Try using the full connect string in the database link like this:
CREATE PUBLIC DATABASE LINK test2dblink CONNECT TO user IDENTIFIED BY pass
USING '(description=(address=(protocol=tcp)(port=1521)(host=10.0.0.2))(connect_data=(sid=TEST02)))'; -
Database Link name altered automatically
Hi everybody,
I'm facing here some strange behavior when I'm trying to create a database link. Here's the statement for creating the database link:
CREATE DATABASE LINK "DEVELOP" CONNECT TO "XXX" IDENTIFIED BY XXX USING 'develop';
After starting Oracle's SQL Developer it turns out that the link is successfully created.
BUT it's not named 'DEVELOP' as expected! Instead the link is named 'DEVELOP.100.10.82.181'
This leads to problems with a DataPump-Job because of an "invalid argument" (I suppose in this case the wrong link name)
How can I avoid this behavior? Or is it possible to alter the name? So far I did not found a solution or comprehendible explanation.
Any help will be highly appreciated.
Kind regards
AlexRobert Geier wrote:
Database version ?
select db_link from dba_db_links;
Try removing some of the quotes.@Robert: removing the quotes did not solve the problem.
Operating System: Mac OS X 10.5.8
SQL> SELECT * from v$version;
BANNER
Oracle Database 10g Release 10.2.0.4.0 - Production
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for MacOS X Server: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> select db_link from dba_db_links;
DB_LINK
DEVELOP.100.10.82.181
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
CORPUS.100.10.82.181
SQL> SHOW PARAMETER global;
NAME TYPE VALUE
global_context_pool_size string
global_names boolean FALSE
Thanks again
Edited by: user9253174 on 03.03.2010 01:41 -
Hello all,
I have a view called V_MEDGEN_LISTRADIO but I can't run
SELECT * FROM V_MEDGEN_LISTRADIO
ORA-02020: too many database links in useThe cause is that we call in the view 5 tables over dblink and the open_links parameter is set to 4.
What is strange is that when I run this select by adding a where clause then it works!
SELECT * FROM V_MEDGEN_LISTRADIO WHERE SPRR = 3645;Can someone explain me ? (use of index so all tables are not called ???)
ThanksExplain plan for SELECT * FROM V_MEDGEN_LISTRADIO WHERE SPRR = 3645;
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | Inst |IN-OUT|
| 0 | SELECT STATEMENT | | 1 | 244 | 19 (6)| 00:00:01 | | | | |
| 1 | SORT ORDER BY | | 1 | 244 | 19 (6)| 00:00:01 | | | | |
| 2 | NESTED LOOPS | | 1 | 244 | 18 (0)| 00:00:01 | | | | |
| 3 | NESTED LOOPS | | 1 | 218 | 17 (0)| 00:00:01 | | | | |
| 4 | NESTED LOOPS | | 1 | 188 | 15 (0)| 00:00:01 | | | | |
| 5 | NESTED LOOPS | | 3 | 384 | 10 (0)| 00:00:01 | | | | |
| 6 | NESTED LOOPS | | 3 | 186 | 4 (0)| 00:00:01 | | | | |
| 7 | REMOTE | SPRR | 1 | 20 | 2 (0)| 00:00:01 | | | DEV10~ | R->S |
| 8 | REMOTE | MPAT_MF | 3 | 126 | 2 (0)| 00:00:01 | | | DEV10~ | R->S |
| 9 | REMOTE | SPER_P | 1 | 66 | 2 (0)| 00:00:01 | | | ORAP_~ | R->S |
|* 10 | TABLE ACCESS BY GLOBAL INDEX ROWID| DOSSIER_MEDICAL | 1 | 60 | 3 (0)| 00:00:01 | ROWID | ROWID | | |
|* 11 | INDEX RANGE SCAN | DOSMED_MPR_IDX2 | 2 | | 1 (0)| 00:00:01 | | | | |
| 12 | REMOTE | MEP | 1 | 30 | 2 (0)| 00:00:01 | | | ORAP_~ | R->S |
| 13 | REMOTE | SSV | 1 | 26 | 1 (0)| 00:00:01 | | | ORAP_~ | R->S |
Predicate Information (identified by operation id):
10 - filter("DM"."EXAM_TYPE"='TELEM')
11 - access("DM"."MPR"="P"."SPER")
Remote SQL Information (identified by operation id):
7 - SELECT "SPRR","MNEMO" FROM "SPRR" "MP" WHERE "SPRR"=3645 (accessing 'DEV10_DBLK' )
8 - SELECT "SPAT","DU","RMPB","SPRR_MF","AU" FROM "MPAT_MF" "MF" WHERE "SPRR_MF"=3645 AND NVL("AU",:1+1)>=:2 AND
"RMPB"='PRINC' AND "DU"<=:3 (accessing 'DEV10_DBLK' )
9 - SELECT "SPER","NOM","PRENOM","DTE_NAI" FROM "SPER_P" "P" WHERE "SPER"=:1 (accessing 'ORAP_DBLK' )
12 - SELECT "MSJ","MEPNO_SEQ","SSV_OU_PAT_SEJOURNE" FROM "MEP" "MEP" WHERE :1="MSJ" AND :2="MEPNO_SEQ" (accessing 'ORAP_DBLK' )
13 - SELECT "SSV","LIB_1" FROM "SSV" "SSV" WHERE :1="SSV" (accessing 'ORAP_DBLK' )Explain plan for SELECT * FROM V_MEDGEN_LISTRADIO
Plan hash value: 3820716840
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop | Inst |IN-OUT|
| 0 | SELECT STATEMENT | | 7 | 1708 | 771 (1)| 00:00:10 | | | | |
| 1 | SORT ORDER BY | | 7 | 1708 | 771 (1)| 00:00:10 | | | | |
| 2 | NESTED LOOPS | | 7 | 1708 | 770 (1)| 00:00:10 | | | | |
| 3 | NESTED LOOPS | | 7 | 1568 | 763 (1)| 00:00:10 | | | | |
| 4 | NESTED LOOPS | | 7 | 1386 | 756 (1)| 00:00:10 | | | | |
| 5 | NESTED LOOPS | | 7 | 1176 | 742 (1)| 00:00:09 | | | | |
| 6 | NESTED LOOPS | | 194 | 24444 | 414 (1)| 00:00:05 | | | | |
| 7 | TABLE ACCESS BY GLOBAL INDEX ROWID| DOSSIER_MEDICAL | 194 | 11640 | 23 (0)| 00:00:01 | ROWID | ROWID | | |
|* 8 | INDEX RANGE SCAN | DOSMED_EXAM_TYPE_IDX2 | 194 | | 1 (0)| 00:00:01 | | | | |
| 9 | REMOTE | SPER_P | 1 | 66 | 2 (0)| 00:00:01 | | | ORAP_~ | R->S |
| 10 | REMOTE | MPAT_MF | 1 | 42 | 2 (0)| 00:00:01 | | | DEV10~ | R->S |
| 11 | REMOTE | MEP | 1 | 30 | 2 (0)| 00:00:01 | | | ORAP_~ | R->S |
| 12 | REMOTE | SSV | 1 | 26 | 1 (0)| 00:00:01 | | | ORAP_~ | R->S |
| 13 | REMOTE | SPRR | 1 | 20 | 1 (0)| 00:00:01 | | | DEV10~ | R->S |
Predicate Information (identified by operation id):
8 - access("DM"."EXAM_TYPE"='TELEM')
Remote SQL Information (identified by operation id):
9 - SELECT "SPER","NOM","PRENOM","DTE_NAI" FROM "SPER_P" "P" WHERE :1="SPER" (accessing 'ORAP_DBLK' )
10 - SELECT "SPAT","DU","RMPB","SPRR_MF","AU" FROM "MPAT_MF" "MF" WHERE NVL("AU",:1+1)>=:2 AND "RMPB"='PRINC' AND "DU"<=:3 AND
:4="SPAT" (accessing 'DEV10_DBLK' )
11 - SELECT "MSJ","MEPNO_SEQ","SSV_OU_PAT_SEJOURNE" FROM "MEP" "MEP" WHERE :1="MSJ" AND :2="MEPNO_SEQ" (accessing 'ORAP_DBLK' )
12 - SELECT "SSV","LIB_1" FROM "SSV" "SSV" WHERE :1="SSV" (accessing 'ORAP_DBLK' )
13 - SELECT "SPRR","MNEMO" FROM "SPRR" "MP" WHERE :1="SPRR" (accessing 'DEV10_DBLK' ) -
What is Database Links in Oracle 10g ?
Same as subject.
Thanks.Hi,
Database Links
A database link is a pointer that defines a one-way communication path from an Oracle Database server to another database server. The link pointer is actually defined as an entry in a data dictionary table. To access the link, you must be connected to the local database that contains the data dictionary entry.
A database link connection is one-way in the sense that a client connected to local database A can use a link stored in database A to access information in remote database B, but users connected to database B cannot use the same link to access data in database A. If local users on database B want to access data on database A, then they must define a link that is stored in the data dictionary of database B.
A database link connection allows local users to access data on a remote database. For this connection to occur, each database in the distributed system must have a unique global database name in the network domain. The global database name uniquely identifies a database server in a distributed system.
http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_concepts.htm#i1007709
Adith -
Changing database links in query's
I'm currently using query's with a syntax like 'select * from table@dblink'. Works fine, however the dblink (DWHD1) should at some time in the future be changed so it points at the production instead of the development server (DWHD1 should become DWHP1). This could mean changing numerous queries by hand after importing in the production server.
I would rather like that this could be accomplished by changing a configuration item or something like that. Is there an easy way to accomplish this in APEX 3.0 by using a 'global variable' or..?
regards
Martin
Message was edited by:
mjb001This can be done only if you create dynamic queries. A better way to solve this is not to
include any database links in your reports. Use Views and point them to a database.
Denes Kubicek -
Hi Friends,
I can create database link from DEV instance to PROD instance using:
===
create database link db_link1 connect to HR identified by HR using 'prod';
===
Question 1
My problem is that when HR changes it password my link gets disabled.
Is there a solution for this?
Question 2
How do I create a database link that is global from DEV to PROD.
What I mean is, I can access all tables of any schema from DEV to PROD.
Is this possible?
Thanks you very much in advance.You shouldn't be creating a database link connecting to the 'HR' account itself. That is dangerous.
On PROD, create a shadow account -- eg called "QUERY_HR_FROM_DEV". Then GRANT SELECT on all HR tables to QUERY_HR_FROM_DEV.
In DEV, create your Database Link as "CREATE DATABASE LINK HR_PROD CONNECT TO QUERY_HR_FROM_DEV IDENTIFIED BY password using 'PROD' "
Question 2 is a worse idea.
You want any schema in DEV to be able to update any schema in PROD.
Maybe you are looking for
-
ITunes won't open or install!
My iTunes stopped responding so I deleted it and tried to re-install, but the installer keeps crashing. I get this error report. Process: Installer [2172] Path: /System/Library/CoreServices/Installer.app/Contents/MacOS/Installer Identifier: com.apple
-
How can I get iCal not to show the same birthday dates from my iCloud
How can I get iCal not to show the same birthday dates from my iCloud?
-
How to uninstall Reporting Services on SQL 2008 R2?
Hi folks, Does anyone know how to uninstall (and intall) Reporting Services without uninstalling SQL server. I have a reporting Services Instance that has gone wrong (Virtual Directories do not exist in IIS) and the RS Configuration tool will not
-
Unable to toggle between LiveCycle Designer & Help
If we opened the LiveCycle Designer Help window, we are unable to switch to the Designer util the help window is minimized. This is slightly annoying the developers. It would be better if it can behave like other applications (e.g. Adobe Workbench ES
-
i lost the iPhoto ability on my iPad when I got IOS8, is there another iPhoto app that can make photo books? Or is there a way to revert back to IOS7?