Oracle数据库的global_name

Oracle数据库的global_name

Oracle数据库的global_name,在Database Link与GLOBAL_NAMES参数一文中提到了,设置global_names初始化参数为true后,本地的数据库链接名称必须与远程数据库的global_name相同,才能正常使用数据库链接。那么怎么查询数据库的global_name呢?

SQL> col global_name for a30
SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB

那么怎么样修改global_name?

ALTER DATABASE
RENAME GLOBAL_NAME TO NEW_NAME;

注意不要直接用update global_name set global_name=”将global_name设置为空,否则数据库不能启动,会报ORA-00600[18061] 或 ORA-00600[18062]这样的错误。 只有用备份进行恢复后才能打开。(参见metalink note 743676.1)。

那么global_name到底是个什么对象呢?

SQL> select owner,object_name,object_type from dba_objects where object_name=’GLOBAL_NAME’;

OWNER OBJECT_NAME OBJECT_TYPE
---------- -------------------- --------------------
SYS GLOBAL_NAME VIEW
PUBLIC GLOBAL_NAME SYNONYM

SQL> select text from dba_views where view_name=’GLOBAL_NAME’;

TEXT
----------------------------------------------------------------
select value$ from sys.props$ where name = ‘GLOBAL_DB_NAME’

可以看到global_name实际上是一个视图,来源于sys.props$表,而这个表是非常重要的一个关于数据库属性的表,不要随意更改此表的内容,否则将引起无可预料的、无法挽回的损失。

在用alert database rename global_name时,如果设置了global_name类似于”dmdb.com”这样的名称,则以后更改名称,则没有常规的办法去掉”.”分隔符了。

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB

SQL> alter database rename global_name to dmdb.com;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB.COM

SQL> alter database rename global_name to dmdb.cn;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB.CN

SQL> alter database rename global_name to dmdb;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB.CN

SQL> alter database rename global_name to dm;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DM.CN

SQL> alter database rename global_name to dm.com.cn;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DM.COM.CN

SQL> alter database rename global_name to dmdb;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB.COM.CN
SQL> alter database rename global_name to dmdb.net;

Database altered.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB.NET

要去掉点分隔符,只有用update:

SQL> update global_name set global_name=’DMDB’;

1 row updated.

SQL> commit;

Commit complete.

SQL> select * from global_name;

GLOBAL_NAME
------------------------------
DMDB

郑重提示:除非万不得已,不要去更新global_name视图,即时更新,也不要去更新global_name的基表props$,更不要将global_name更新为空。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值