ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 有关dblink有域名的总结:

有关dblink有域名的总结:

原创 Linux操作系统 作者:orchidllh 时间:2005-03-21 00:00:00 0 删除 编辑
上周五将一个数据库的逻辑备份倒入到另一个数据库中,计划将原数据库迁移,逻辑备份的倒出和倒入都比较顺利,但是在检查一起迁移的crontab进程的执行日志的时候,发现使用的dblink都提示不存在。
因为该数据库是用作数据整理用的,需要从很多的数据库提取数据,所以建了很多的dblink,这些dblink都不能使用了。
我手工创建了一个dblink发现原来创建的dblink都有域名,而新创建的dblink没有域名,而在脚本中使用的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博客 ” ,链接:http://blog.itpub.net/51862/viewspace-180615/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-02-21

  • 博文量
    180
  • 访问量
    842358