Database link

From Oracle FAQ
⧼orafaq-jumptonavigation⧽⧼orafaq-jumptosearch⧽

A database link (DBlink) is a definition of how to establish a connection from one Oracle database to another.

The following link types are supported:

  • Private database link - belongs to a specific schema of a database. Only the owner of a private database link can use it.
  • Public database link - all users in the database can use it.
  • Global database link - defined in an OID or Oracle Names Server. Anyone on the network can use it.

Create and drop

Create a DBlink:

CREATE DATABASE LINK remotedb CONNECT TO scott IDENTIFIED BY tiger USING 'tns_conn_str';

Drop a DBlink:

DROP DATABASE LINK remotedb;

Close Database Link

To close a DBlink:

ALTER SESSION CLOSE DATABASE LINK <link_name>;


Drop a database link when you are not the owner

When you are owner of the link you can drop it without problem but if you are a DBA and want to purge database, let's say after restoring test database from live database, you can use the proxy user feature so you can connect to the database link owner without knowing or changing its password (below MICHEL is the DBA).

SQL> CONNECT test/test
Connected.
TEST> CREATE DATABASE LINK mika@loop CONNECT TO test IDENTIFIED BY test USING 'mika';

Database link created.

TEST> CONNECT michel/michel
Connected. 
MICHEL> ALTER USER test GRANT CONNECT THROUGH michel ;

User altered.

MICHEL> -- Connect to TEST through MICHEL account and so with MICHEL's password
MICHEL> CONNECT michel[test]/michel
Connected.
TEST> SHOW USER
USER is "TEST" 
TEST> DROP DATABASE LINK mika@loop;

Database link dropped.

TEST> CONNECT michel/michel
Connected. 
MICHEL> ALTER USER test REVOKE CONNECT THROUGH michel ;

User altered.