首页 > Linux操作系统 > Linux操作系统 > 有关dblink有域名的总结:
两台服务器都是solaris操作系统,数据库版本都是oracle 9i的,最开始我疑心是数据库的设置,所以检查了以下两个参数:
SQL> show parameter global_name
NAME TYPE VALUE
-----------------------------------------------------------------------------------------------------------------
global_names boolean FALSE
SQL> show parameter db_name
NAME TYPE VALUE
-----------------------------------------------------------------------------------------------------------------
db_name string ***
发现两个数据库的设置是相同的,所以我猜想它使用的可能是操作系统的设置。
查了半天有关solaris中域名设置的方法,也询问了网管的MM,做了以下的修改:
首先修改了/etc/hosts文件,将hostname加上了域名,并且重启了网络服务:
ps -ef|grep inetd
找到进程号,然后
kill -HUP 进程号
然后检查了/etc/resolv.conf,发现这里已经配置了和原来的服务器一样的domain参数,nameserver也是一样的。
最后也检查了/etc/nsswitch.conf文件,发现和原来的服务器并没有什么不同。
按照itpub上 http://www.itpub.net/318642.html 的调整了:
SQL> alter database rename global_name to ***.***.***;
Database altered.
结果仍然不对。
折腾了半天,仍然没有进展,我很是灰心,我甚至都打算重建这些dblink了,根据user_db_links这个视图记录的信息生成脚本,问题就是如果下次我需要从原始的数据库同步数据的时候,还需要重建这些dblink。
再后来,同事修改了什么东东,就好了。嘿嘿,结果果然是数据库的配置问题:
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
***
SQL> alter database rename global_name to ***.***.***;
Database altered.
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
***
这个rename global_name以后,global_name并没有被修改,重启数据库仍然没有,而同事执行的是:
SQL> update global_name set global_name = '***.***.***';
1 row updated.
SQL> commit;
Commit complete.
再查询
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
***.***.***
就是修改过的了,这样原来带有域名的dblink就都可以用了,新建的dblink也有域名了。
这样看来alter database rename global_name to ***.***.***;和update global_name set global_name = '***.***.***';并不是等价的操作。
而且这些操作并没有修改global_names和db_name两个参数的内容。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/51862/viewspace-180615/ ,如需转载,请注明出处,否则将追究法律责任。