事实证明:
--用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>