Oracle10g中如何建立没有域名的DB_LINK

事实证明:

--用alter语句这种修改方法,重启数据库,无效!
alter database rename global_name to ORCL;
--用alter语句这种修改方法,重启数据库,有效!但是不是我想要的结果,虽然域名修改后变短了,但是建立DB_LINK还有域名存在!
alter database rename global_name to ORCL.QIANGGUO.COM;
--用update语句这种修改方法,重启数据库,有效!创建DB_LINK没有域名存在!
update global_name set global_name='ORCL';

以DBA身份进入oracle 

C:/Documents and Settings/Administrator>sqlplus "/ as sysdba"

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 19 14:22:37 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> show parameter global_name
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     FALSE
SQL> select * from global_name;
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
SQL> alter database rename global_name to ORCL;   

数据库已更改。
 
SQL> select * from global_name;  --在这里可以看到,把global_name直接修改为“ORCL”,并不起作用!
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
 
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
 
Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             134218432 bytes
Database Buffers          146800640 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> select * from global_name; ---重启数据库后,仍然不起作用,GLOBAL_NAME并没有变成我想要的“ORCL”!
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
 
SQL> alter database rename global_name to ORCL.QIANGGUO.COM;  --如果修改为带域名的“ORCL.QIANGGUO.COM”,重启数据库将起作用,域名发生了变化!
 
数据库已更改。
 
SQL> select * from global_name;
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL.QIANGGUO.COM
 
SQL> alter database rename global_name to ORCL;  --再次试着修改为”ORCL“,仍然不行!
 
数据库已更改。
 
SQL> select * from global_name;
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL.AHDX.COM
 
SQL> update global_name set global_name='ORCL'; --如果用update语句修改,重启数据库,成功!哈哈!
 
已更新 1 行。
 
SQL> select * from global_name;
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL
 
SQL> select * from global_name;
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL
 
SQL> commit;
 
提交完成。
 
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
 
Total System Global Area  289406976 bytes
Fixed Size                  1248576 bytes
Variable Size             134218432 bytes
Database Buffers          146800640 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> select * from global_name;--如果用update语句修改,重启数据库,成功!哈哈!
 
GLOBAL_NAME
--------------------------------------------------------------------------------
 
ORCL
 
SQL>

 分析一下:global_name视图

创建global_name视图的语句如下:

create or replace view global_name
as
select value$ from sys.props$ where name = 'GLOBAL_DB_NAME'

不能直接修改sys.props$内部表,会告诉你权限不足!
所以可以用update修改!

验证如下:

SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL
SQL> select value$ from sys.props$ where name = 'GLOBAL_DB_NAME';
VALUE$
--------------------------------------------------------------------------------
ORCL
SQL>

猜你喜欢

转载自xcxn.iteye.com/blog/1874291