本文主要介绍 Oracle 使用dblink注意事项, 及修改 global_name和db_domian 影响,最后说下 版本之间区别
1.现象
旧环境和新环境,使用dblink 情况不一样,具体如下
--new:
SQL> select * from dual@mydb1;
select * from dual@mydb1
*
ERROR at line 1:
ORA-02019: connection description for remote database not found
--old 可正常使用, mydb1.com 都可以使用, dblink只有一个 ,如下所示:
SQL> select * from dba_db_links;
OWNER DB_LINK USERNAME HOST CREATED
---------- --------------- -------------------- ---------------------------------------- ---------
SYS MYDB1.COM SYSTEM 192.168.8.116/mydb 18-JUN-21
2.分析处理
新环境为Oracle 19c ,老环境为Oracle11.2.0.4 ,通过检查发现,两个环境中 global_name和db_domian的定义不一样,搜索相关资源,上述参数global_name对于dblink 命名有影响。 老环境中global_name带有域名, 新环境没有。 设置域名测试
SQL> col global_name for a20
SQL> select * from global_name;
GLOBAL_NAME
--------------------
mydb
--修改global_name建议使用以下语句:
update global_name set global_name='mydb.com';
--也可以通过以下命令,效果不加:
alter database rename global_name to mydb.com;
--再次创建dblink
SQL> select * from global_name;
GLOBAL_NAME
--------------------
MYDB.COM
-- 默认端口,如非默认,需要 192.168.8.116:11521/mydb
SQL> create database link mydb1 connect to system identified by oracle using '192.168.8.116/mydb';
Database link created.
SQL> set lines 200
col owner for a10
col db_link for a15
col host for a40
col username for a20
select * from dba_db_links;SQL> SQL> SQL> SQL> SQL>
OWNER DB_LINK USERNAME HOST CREATED
---------- --------------- -------------------- ---------------------------------------- ---------
SYS MYDB1.COM SYSTEM 192.168.80.116/mydb 18-JUN-21
如上所示, 虽然创建dblink时使用的名字是mydb1,数据库默认为创建的dblink 是mydb1.com. 此时,访问远程数据库可以使用mydb1或者mydb1.com.
3.其他
Oracle19c 如为pdb添加域名,可通过修改cdb方式,后重启pdb即可。 如计划将服务名字一起修改,需要修改参数db_domain。 参考命令如下:
--cdb 或者通过下面命令 直接修改 pdb的全局名字
update global_name set global_name='mycdb.com';
--添加域名
alter system set db_domian='com' scope=spfile;
--重启cdb
-- 如需修改pdb全局名字,参考命令
alter pluggable databse mypdb close;
alter pluggable databse mypdb open restricted;
alter pluggable database mypdb rename global_name to mynewpdb;
alter pluggable databse mypdb close;
alter pluggable databse mypdb open ;
--需要重启数据库,这样 服务名都有后缀, 例如mycdb.com,mypdb.com