最近在配置Stream时,发现必须要把GLOBAL_NAMES参数的指设置为TRUE,具体原因为何不知。但是发现在设置了该参数之后,数据库每天的物化视图刷新出现了问题。之后查明原因,是DBLINK出现了问题。随后研究了一下GLOBAL_NAMES这个参数,发现其实很有意思的事情是:GLOBAL_NAMES参数并不是用来控制GLOBAL_NAME的,而是用来限制DBLINK的使用。下面简单了解一下这个参数:

 
    GLOBAL_NAMES参数的作用,简单得说来就是:当GLOBAL_NAMES参数设置为TRUE时,使用DBLINK的名称必须与被连接库的GLOBAL_NAME一致。本来是想做几个简单的测试,但是发现网上已经有人写过了,想想要再配置数据库也比较麻烦,就直接拷过来了:
 
************************************************************************************
 
当GLOBAL_NAMES参数设置为TRUE时,使用DATABASE LINK时,DATABASE LINK的名称必须与被连接库的GLOBAL_NAME一致。下面做一个测试,在测试中,创建数据库链接的库为XJ(WINDOWS 2003 ORACLE 10g 10.2.0.1),被链接的库为DMDB(LINUX AS5 ORACLE 10g 10.2.0.1 RAC)
 
首先查看DMDB的相关配置:
 
SQL> show parameter global_names
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
global_names                         boolean     FALSE
SQL> select * from global_name;;
 
GLOBAL_NAME
----------------------------------------------------------
DMDB
 
可以看到这个被链接的库其global_names参数为FALSE。
 
要创建数据库链接的库的配置:
 
SQL> show parameter global_names
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- -------
global_names                         boolean     FALSE
SQL> select * from global_name;
 
GLOBAL_NAME
--------------------------------------------------------
XJ
 
然后做下面的操作:
 
SQL> create database link test_link connect to test identified by test using 'DMDB';
 
数据库链接已创建。
 
SQL> select * from dual@test_link;
 
D
-
X
 
可以看到数据库链接工作正常。
 
在DMDB库上将global_names设为TRUE:
 
SQL> alter system set global_names=true;
 
系统已更改。
 
在XJ库上再次查询,并新建一个DATABASE LINK再进行查询:
 
SQL> select * from dual@test_link;
 
D
-
X
 
SQL> create database link test_link2 connect to test identified by test using 'DMDB';
 
数据库链接已创建。
 
SQL> select * from dual@test_link2;
 
D
-
X
 
此时可以看数据库链接工作正常。我们再将XJ库的global_names参数设置为TRUE:
 
SQL> alter system set global_names=true;
 
系统已更改。
 
SQL> select * from dual@test_link2;
select * from dual@test_link2
                   *
第 1 行出现错误:
ORA-02085: 数据库链接 TEST_LINK2 连接到 DMDB
 
SQL> select * from dual@test_link
select * from dual@test_link
                   *
第 1 行出现错误:
ORA-02085: 数据库链接 TEST_LINK 连接到 DMDB
 
而再次将XJ库的global_names设为FALSE,则数据库链接又可用了。
SQL> alter system set global_names=false;
 
系统已更改。
 
SQL> select * from dual@test_link;
 
D
-
X
 
SQL> select * from dual@test_link2;
 
D
-
X
 
再将DMDB库的global_names设为FALSE,数据库链接仍然可用:
 
在DMDB库上:
 
SQL> alter system set global_names=false;
 
系统已更改。
 
在XJ库上:
 
SQL> select * from dual@test_link;
 
D
-
X
 
可以看到,链接仍然可以用。
如果在DMDB库上创建链接到XJ库上,可以观察到同样的结果。
可以得出一个结论:global_names参数设置为FALSE,影响的是创建数据库链接的那个库对数据库链接的使用。也就是说,如果一个库(实例)的global_names参数设值为TRUE,则该库连接其他库的数据库链接,其名称必须要与被连接的库的global_name相同:
 
在XJ库上:
 
SQL> alter system set global_names=true;
 
系统已更改。
 
SQL> create database link dmdb connect to test identified by test using 'dmdb';
 
数据库链接已创建。
 
SQL> select * from dual@dmdb;
 
D
-
X
SQL> select * from dual@test_link;
select * from dual@test_link
*
第 1 行出现错误:
ORA-02085: 数据库链接 TEST_LINK 连接到 DMDB
 
SQL> select * from dual@test_link2;
select * from dual@test_link2
                   *
第 1 行出现错误:
ORA-02085: 数据库链接 TEST_LINK2 连接到 DMDB
 
如果在GLOBAL_NAMES设置为TRUE的情况下,如果要建多个数据库链接到同一个库,怎么办呢?因为数据库链接的名称必须与目标库的GLOBAL_NAME相同。可以按如下的方法:
 
SQL> create database linkdmdb@link1connectto test identified by test using 'dmdb';
 
数据库链接已创建。
 
SQL> create database linkdmdb@link2connectto test identified by test using 'dmdb';
 
数据库链接已创建。
 
SQL> select * fromdual@dmdb;
 
D
-
X
 
SQL> select * fromdual@dmdb@link1;
 
D
-
X
 
SQL> select * fromdual@dmdb@link2;
 
D
-
X
 
也就是在GLOBAL_NAME后面加上@再加上一个标识。这样就能够创建多个数据库链接到同一目标库上了。
 
另外在创建数据库链接时,不能给其他SCHEMA创建链接,这是因为数据库链接(database link)其名称可以含有'.'即点号。比如A用户想给B用户创建一个DBLINK名叫LINKB,CREATE DATABASE LINK B.LINKB ......, 这个语句将会实际创建一个A用户下的名为B.LINKB的数据库链接。
**************************************************************************************************

GLOBAL_NAMES参数研究的更多相关文章

  1. java方法可变参数研究

    1 问题引出 (1)缘由 最近在研究如何在项目中引入Redis缓存,于是遇到可变参数这个疑惑点,之前没有好好研究过,为了避免项目后期出现问题. (2)项目相关技术 SpringBoot Redis K ...

  2. rpl_semi_sync_master_wait_no_slave 参数研究实验

    最近在研究MySQL,刚学到半同步. 半同步的配置中,关于这两个参数: rpl_semi_sync_master_wait_no_slave rpl_semi_sync_master_wait_for ...

  3. LayoutInflater.inflate() 参数研究

    参考连接:http://blog.csdn.net/lovexieyuan520/article/details/9036673 http://www.2cto.com/kf/201407/31305 ...

  4. Python的不定长参数研究

     通过观察程序和运行结果我们发现,传参时将1传给了a,将2传给了b,将3,4,5传给了*args,将m=6,n=7,p=8传给了**kwargs.为什么是这样传参呢?*args和**kwargs又是什 ...

  5. bitmap-setBounds方法参数研究

    对于如下的代码,一直有点不明白它具体每一步操作的影响.今天就稍微研究下.代码如下 xml代码 <RelativeLayout xmlns:android="http://schemas ...

  6. ORACLE连接字符串里每个参数的具体意思

    1.数据库名(db_name):数据库名是存储在控制文件中的数据库的名称.它代表的是数据库也就是所有构成数据库的物理文件的总称.要修改这个名称,只要重建控制文件就行了.2.实例名:实例名指的是用于响应 ...

  7. Nginx 参数配置相关

    Nginx参数配置相关 by:授客 QQ:1033553122 目的: 对Nginx配置的点滴学习总结,主要目的在于分析Nginx与性能相关的一些参数设置,以便性能调优时选择最优配置   环境: $ ...

  8. MySQL增强半同步的搭建实验,和一些参数的个人理解

    关于参数理解,已补充实验,可以查看: rpl_semi_sync_master_wait_no_slave 参数研究实验 环境信息 role ip port hostname master 192.1 ...

  9. oracle 错误代码大全

    oracle错误代码大全(超详细)   ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最 ...

随机推荐

  1. 解题:NOI 2009 管道取珠

    题面 考虑这个平方的实际意义,实际是说取两次取出一样的序列 那么设$dp[i][j][k][h]$表示第一次在上面取$i$个下面取$j$个,第二次在上面取$k$个下面取$h$个的方案数 等等$n^4$ ...

  2. R语言:R2OpenBUGS

    R语言:R2OpenBUGS 用这个包调用BUGS model,分别用表格和图形概述inference和convergence,保存估计的结果 as.bugs.array 转换成bugs object ...

  3. Ansible2:主机清单

    目录 Hosts and Groups(主机与组) 简单的主机和组 端口与别名 指定主机范围 使用主机变量 组内变量 组的包含与组内变量 Patterns(主机与组正则匹配部分) 1. 表示所有的主机 ...

  4. 发现视口(窗口)自适应的新大陆!!vw、vh

    从事前端已经1年了,一直为背景自适应铺满整个屏幕而苦苦发愁,因为要适配不同的pc显示器,所以高度不能写死,但是写(height:100%)并不能实现,愁死我了~我要不用写好的css框架实现或者自己写j ...

  5. 使用IDEA复用代码时常见问题

    使用IDEA复用代码时常见问题 觉得有用的话,欢迎一起讨论相互学习~Follow Me 作为新手在直接复用别人的java代码并使用IDEA进行二次开发时,经常出现一些奇怪的问题,在此做一些总结~ In ...

  6. 简便开发插件 -- lombok

    lombok是一款可以精减java代码.提升开发人员生产效率的辅助工具,可以利用注解在编译期自动生成setter/getter/toString()/constructor代码. 彻底将开发人员从繁琐 ...

  7. Bayer图像处理

    Bayer是相机内部的原始图片, 一般后缀名为.raw. 很多软件都可以查看, 比如PS.我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片, 都是从.raw格式转化过来的..raw格式 内部 ...

  8. Git之原有基础开发新功能

    场景描述 当一个项目已经上线,同时又在原有基础上新增功能模块,于是乎就要在原有代码的基础上进行开发,在新增模块功能的开发的过程中,项目发现了一个紧急Bug,需要修复.操作流程如下:

  9. Linux 常见文件及目录

    文件/etc//etc/passwd用户基本信息/etc/group用户组基本信息/etc/shadow/etc/passwd 文件的补充/etc/gshadow阴影口令套组中的组配置文件/etc/l ...

  10. Rolling in the Deep (Learning)

    Rolling in the Deep (Learning) Deep Learning has been getting a lot of press lately, and is one of t ...