当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 'D
MDB';
数据库链接已创建。
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@link1connect to test identified by test using 'dmdb';
数据库链接已创建。
SQL> create database linkdmdb@link2connect to 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参数**: - 如果`global_names`设置为`true`,则dblink的命名需与远程数据库的global_name一致。 - 如果`global_names`设置为`false`,则可以自由命名dblink。 - 查询命令: ```sql SHOW ...
1. global_names 参数:如果 global_names = true,则 [DB_LINK_NAME] 必须是数据库的真实名称;如果 global_names = false,则 [DB_LINK_NAME] 可以是一个随意的名字。 2. 链接字符串:链接字符串即服务名,需要在...
SELECT owner, object_name FROM dba_objects WHERE object_type = 'DATABASELINK'; ``` 2. **使用 DBLink 进行查询**: - 在查询时可以直接使用 DBLink 名称作为表名的一部分: ```sql SELECT * FROM emp@...
- **注意事项**:当`GLOBAL_NAME`参数为`TRUE`时,`38GLOBAL_NAME`必须与远程数据库的`GLOBAL_NAME`一致;为`FALSE`时可以自定义。`mac2`是远程数据库的用户名,`mac2`是远程数据库的密码。`ORCL_SG_38`是本地建立...
**dblink**的命名规则与参数`global_names`有关: - 当`global_names=true`时,dblink的命名需要与远程数据库的全局名称(global name)保持一致。 - 当`global_names=false`时,可以自由命名dblink,但建议使用有...
2. **确认 global_names 参数状态**:`global_names` 参数控制是否使用全局名称来解析 DB-LINK。当其值为 TRUE 时,DB-LINK 的名称必须与远程数据库的 GLOBAL_NAME 名称相匹配。可通过 `SHOW PARAMETER global_name;...
- 方法一:在数据库的`init.ora`文件中设置`global_names`参数为`TRUE`或`FALSE`。 - 方法二:执行SQL语句来修改: ```sql ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE; ``` 修改后需要重启数据库服务使设置生效...
2. **GLOBAL_NAMES参数**:GLOBAL_NAMES参数决定了DBLINK的命名规则。如果设为TRUE,DBLINK的名称必须与被连接数据库的全局数据库名称(GLOBAL_NAME)完全匹配。若设为FALSE,则可以自由指定DBLINK的名称,此时更...
在创建数据库链接之前,需确认`global_names`参数的设置情况。如果该参数被设置为`true`,则在创建数据库链接时需要带上Oracle默认的域名;若设置为`false`,则可以根据个人需求自由命名。 **步骤二:创建数据库...
在使用dblink时,也需要注意修改GLOBAL_NAME的方法,可以在远程数据库的init.ora文件中将global_names设为false,或者用sys用户执行以下语句: ``` ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE; ``` 然后重新启动...
确认 `global_names` 参数值为 `TRUE`。如果不是,则需要执行 `alter system set global_names = true;` 命令来修改。 **B. job_queue_processes 参数检查** - **命令:** `show parameter job;` 确保 `job_queue_...
- 如果返回的`GLOBAL_NAMES`值为`TRUE`,则表示参数已启用,此时创建的DBLink名称必须与远程数据库的GLOBAL_NAME保持一致。 3. **验证远程数据库是否支持高级复制功能** - 执行以下命令来检查数据库是否支持高级...
SELECT owner, object_name FROM dba_objects WHERE object_type = 'DATABASELINK'; ``` 此外,也可以查看数据库的全局名称配置,这有助于理解数据库链接的全局命名规则: ```sql SELECT * FROM GLOBAL_NAME; ``` ...
- `global_names`: 设置为`TRUE`以启用全局名称识别功能。 - `streams_pool_size`: 设置为`25M`以分配给Streams使用的内存池大小。 - `shared_pool_size`: 设置为`500M`以增大共享池的大小。 - `aq_tm_processes`: ...
全局数据库链接(Global Database Link):Owner 是 PUBLIC.Global 的数据库链接是网络级的,When an Oracle network uses a directory server, the directory server automatically create and manages global ...
ALTER SYSTEM SET GLOBAL_NAMES = TRUE SCOPE = BOTH; ALTER SYSTEM SET AQ_TM_PROCESSES = 10 SCOPE = BOTH; ALTER SYSTEM SET STREAMS_POOL_SIZE = 20M SCOPE = SPFILE; -- 查看归档模式 ARCHIVELOG LIST; ...
- **global_names=true** 要求数据库链接和被连接的数据库名称必须一致。这可以通过全局数据库名的形式表示:`db_name + "." + db_domain`。 - **与数据库作业执行相关的参数** - `job_queue_processes=1` ...
②、global_names = true (alter system set global_names=true),它要求数据库链接(database link)和被连接的数据库名称一致。 ③、有跟数据库 job 执行有关的参数(在 oracle\ora92\admin\sample\pfile 修改 ...
CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl IDENTIFIED BY orcl USING 'orcl'; CREATE SYNONYM mtb FOR mytable@orcl@dbc; 这里之所以用orcl@bdc为dblink的名称是为了设置global_names=true。 然后新建...
alter system set global_names=true scope=both; ---设置全局名称为 true alter system set undo_retention=3600 scope=both; ---设置回滚段时间,默认是 900 alter system set streams_pool_size=25M scope=spfile...