OUTBOUND_DBLINK_PROTOCOLS specifies the network protocols allowed for communicating for outbound/outgoing database links in the database. It is introduced in Oracle 12.2 release.
Possible values – { ALL | NONE | [ TCP | [, ] | TCPS | [, ] | IPC ] }
By default, the value is set to ALL. i.e User can fetch data using db_link.
For better understanding, let’s check the below example.
With OUTBOUND_DBLINK_PROTOCOLS=ALL
SQL> show parameter outbound NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ outbound_dblink_protocols string ALL SQL> create public database link TESTLINK connect to system identified by oracle using 'D2ULASIT'; Database link created. SQL> select sysdate from dual@TESTLINK; SYSDATE --------- 10-SEP-17
So with this default setting, db_links are working fine as usual.
Now let’s alter this and set it to NONE:
With OUTBOUND_DBLINK_PROTOCOLS= NONE
-- This can be altered dynamically SQL> alter system set outbound_dblink_protocols=NONE scope=both; System altered. SQL> show parameter outbound NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ outbound_dblink_protocols string NONE
Now i tried to access the previously created db_link:
SQL> select sysdate from dual@TESTLINK; select sysdate from dual@TESTLINK * ERROR at line 1: ORA-25431: Connection with protocol tcp is disallowed by the outbound_dblink_protocols parameter.
it is not allowed as expected. What about creating a new DB_LINK.
SQL> create public database link TESTLINK2 connect to system identified by oracle using 'D2ULASIT'; create public database link TESTLINK2 connect to system identified by oracle using 'D2ULASIT' * ERROR at line 1: ORA-25431: Connection with protocol tcp is disallowed by the outbound_dblink_protocols parameter.
Well create database link also not allowed.
Conclusion:
We can say, this parameter is introduced as a security feature in Oracle 12.2 release. This will control the outbound database_link access.