更改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/