最近在配置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. bzoj 4199 && NOI 2015 品酒大会

    一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 ...

  2. List of NP-complete problems

    This is a list of some of the more commonly known problems that are NP-complete when expressed as de ...

  3. 【转】了解CNN

    摘要 过去几年,深度学习在解决诸如视觉识别.语音识别和自然语言处理等很多问题方面都表现出色.在不同类型的神经网络当中,卷积神经网络是得到最深入研究的.早期由于缺乏训练数据和计算能力,要在不产生过拟合的 ...

  4. OneProxy实现mysql读写分离

    OneProxy for MySQL可以复用不同应用到后端数据库的连接,有效降低数据库的并发连接数:可以即时踢除不可用的节点,将应用请求转发到其他可用节点,保证业务服务的稳定性. 可透明地将查询语句分 ...

  5. python3.5无法安装pip,报错ImportError: cannot import name 'HTTPSHandler'

    本人系统为:centos6 解决方法: 1  安装openssl yum install openssl 2  安装openssl-devel yum install openssl-devel 3  ...

  6. Python模拟登录cnblogs

    Python利用requests.Session对象模拟浏览器登录cnblogs request.Session对行可以跨请求的保持cookie,非常方便的用于模拟登录. cnblogs登录页面分析: ...

  7. ElasticStack系列之十三 & 联想补全策略

    业务需求 1. 实现搜索引擎前缀搜索功能(中文,拼音前缀查询及简拼前缀查询功能) 2. 实现摘要全文检索功能,及标题加权处理功能(按照标题权值高内容权值相对低的权值分配规则,按照索引的相关性进行排序, ...

  8. 科学计算三维可视化---TVTK入门(数据加载)

    一:数据加载 大多数可视化应用的数据并非是在TVTK库中构建的,很多都是通过接口读取外部数据文件 (一)使用vtkSTLReader来读取外部文件 .stl 文件是在计算机图形应用系统中,用于表示三角 ...

  9. python---权限管理和菜单生成

    一:表结构(共八张表) from django.db import models # Create your models here. class User(models.Model): userna ...

  10. excel sum求和遇到的问题及解决

    在偶遇的,借助excel公式sum对一个数字数组进行求和,结果为0,很是诧异,当然原因就是,数组里的数字是“常规”格式,不是“数值”格式,由于系统生成的excel,不方便生成的同时再做格式的设置,于是 ...