更改Global_name, domain_name, db_name 的方法

更改Global_name, domain_name, db_name 的方法

参考P894<>

 

In a distributed database system, each database should have a unique global database name. Global database names uniquely identify a database in the system.

A global database name is formed from two components: a database name and a domain. The database name and the domain name are determined by the following initialization parameters at database creation:

Database name                                  db_name

Domain containing the database           db_domain

 

The DB_DOMAIN initialization parameter is only important at database creation time when it is used, together with the DB_NAME parameter, to form. the database’s global name. At this point, the database’s global name is stored in the data dictionary. You must change the global name using an ALTER DATABASE statement, not by altering the DB_DOMAIN parameter in the initialization parameter file. It is good practice, however, to change the DB_DOMAIN parameter to reflect the change in the domain name before the next database startup.

 

Use the ALTER DATABASE statement to change the domain in a database’s global name. Note that after the database is created, changing the initialization parameter DB_DOMAIN has no effect on the global database name or on the resolution of database link names.

 

如果你要DBLink后面使用域名mydomain,方法是:

UPDATE GLOBAL_NAME SET GLOBAL_NAME = dbname.mydomain;

(这个其实是操作Global_NAME这张表)

SQL> desc global_name;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 GLOBAL_NAME                                     VARCHAR2(4000)

 

Alter database rename global_name to dbname.mydomain;

这个又是如何实现的呢?是更改的哪个数据字典还是什么?

 

去掉DBLink后面的DOMAIN名字的方法

 

如果你要DBLink后面不使用域名,方法是:

update global_name set global_name='hq';

1 row updated.

 

SQL> commit;

 

Commit complete.

 

但这时却不能使用:

ALTER DATABASE RENAME GLOBAL_NAME TO hq’; 来实现,这时为什么呢?

 

这样看来alter database rename global_name to ***.***.***;

Update global_name set global_name = '***.***.***';

并不是等价的操作。两者间的区别是什么呢?

 

设置完毕后,看结果是否改变:

SELECT GLOBAL_NAME FROM GLOBAL_NAME;

 

如果alter database rename global_name to 中的name没有指定域名,则默认为先前global_name中包含的域名.

 

所有这些操作都是通过更新数据字典Global_name 来实现的,都不会更新参数文件里Global_name, db_domain 的内容。

 

总结:   

1 在数据库创建的时候,global_name db_domain,db_name组成。

2 当数据库创建完后,对global_name的更改只能通过Alter database rename  statement update global_name set global_name 语句来做。且这个结果不会反映回到参数文件中,是保存在数据字典中的。

3 当数据库创建完后,对参数文件中db_main的修改不会影响数据库的Global_name.

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10248702/viewspace-615610/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10248702/viewspace-615610/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值