GLOBAL_NAMES specifies whether a database link is required to have the same name as the database to which it connects.
GLOBAL_NAMES is either set to FALSE OR TRUE.

If the value of GLOBAL_NAMES is false, then any name can be given to DB_LINK. If value is TRUE, then database link name should be same as that of the database it is pointing.

Default value is FALSE:

SQL> show parameter global_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     FALSE

Lets create a database link with any name:

SQL> create public database link TESTDB  connect to SYSTEM IDENTIFIED BY ORACLE USING 'DBORCL';

Database link created.

SQL>  select sysdate from dual@TESTDB;

SYSDATE
---------
01-MAR-18

SQL>drop public database link TESTDB ;

So with GLOBAL_NAME set to FALSE, db_link name is independent of target database name.

Update the GLOBAL_NAMES value to TRUE:

SQL> alter system set global_names=TRUE scope=both;

System altered.

SQL> show parameter global_names

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------------
global_names                         boolean     TRUE

Create database link as before(with different name)

SQL> create public database link TESTDB  connect to SYSTEM IDENTIFIED BY ORACLE USING 'DBORCL';

Database link created

SQL> select sysdate from dual@TESTDB;
select sysdate from dual@TESTDB
                         *
ERROR at line 1:
ORA-02085: database link TESTDB connects to DBORCL

We can see, when global_name is TRUE,DB_LINKs with different name as that of database name is not working.

Lets create a db_link having same name as target db.

SQL> create public database link DBORCLconnect to SYSTEM IDENTIFIED BY ORACLE USING 'DBORCL';

Database link created.

SQL>  select sysdate from dual@DBORCL;

SYSDATE
---------
01-MAR-18

Voilla!!! Working fine.