// *Cause: a database link connected to a database with a different name.
// The connection is rejected.
// *Action: create a database link with the same name as the database it
// connects to, or set global_names=false.
//
2)从报错信息的描述上已经可以得到问题的原因和处理方法
错误原因:使用的dblink名字与要连接的数据库名字不相同
处理方法:有两种处理方法
第一种处理方法:创建与对方数据库名字相同的dblink
第二种处理方法:调整数据库参数global_names值为false,取消这种限制
一定要理解具体怎么操作
global_names和global_name看起来很相似,global_names的作用是创建db link时是否强制使用远程数据库的global_name,如果
global_names=true,则db link name必须要求是remote database的global_name,否则创建之后db link 不能连同,
假如在本地:不是远端,和自己的思维不一样。
SQL> show parameter global_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
这样在本地要想创建dblink ,那么该dblink的名字 ,必须是远端4.151的global_name ,如下查看global_name
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
NEWZQDB
也就是只能起名为newzqdb ,都则报错ORA-02085
create public database link newzqdb
connect to system identified by manager
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.4.151)(PORT = 18000))
)
(CONNECT_DATA =
(SERVICE_NAME = newzqdb)
)
)';
你可以在本地通过 alter system set global_names=FALSE; 来取消这种限制,一定注意在本地, 不是远端。
也就是说如果本地global_names这个参数是TRUE,那么在这里只能创建一个可以使用的dblink。