Two ways to create DB link in 11g Database
1. With TNS entry in tnsnames.ora
2. TNS entry given at the time of db link creation.
SQL> desc DBA_DB_LINKS
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
DB_LINK NOT NULL VARCHAR2(128)
USERNAME VARCHAR2(30)
HOST VARCHAR2(2000)
CREATED NOT NULL DATE
***FIND ALL DBLINKS created in database:
select * from dba_db_links;
Create DB link
Syntax:
Create public/private database_link linkname connect to username identified by Password using ‘Service Name’; i
Example :
1st method: Create DBLINK with tns entry made in tnsnames.ora
CREATE PUBLIC DATABASE LINK "TO_SPOT.WORLD" CONNECT TO CFS_SPOT IDENTIFIED BY CFS_Passwd_123 USING 'Spotprof.was.abc.com’;
Now make an entry in tnsnames.ora present in $TNS_ADMIN
SPTPS.WAS.ABC.COM
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = abc.xyz.was.com)(PORT = 1521))
)
(CONNECT_DATA =
(SID = SXXX
(SERVER = DEDICATED)
)
)
2nd Method:
conn / as sysdba issue this command on sqlprompt
CREATE public DATABASE LINK TO_SPOT CONNECT TO CFS_SPOT IDENTIFIED BY password USING
'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname.domainname.com)(PORT=1521)))
(CONNECT_DATA=(SID = SXXX')));
Check DB link is working or not
conn / as sysdba or conn to sql and try the below one :
syntax : select * from dual@linkname;
Example
select * from dual@TO_SPOT;
DROP DBLINK:
DROP PUBLIC DATABASE LINK "TO_SPOT.WORLD";
truncate /drop all database links
truncate table link$;
truncate /drop all database links
truncate table link$;