分类:
2009-08-05 20:02:58
--放到这里留给自己备用:)
环境:
产品: UDB
平台:AIX,Solaris,HP-UX,Linux,Windows
版本:V8 V9.1V9.5
问题描述:
出于各种各样的原因,在DB2服务器使用过程中,用户有可能需要修改DB2服务器的主机名,那么DB2需要做哪些相应的修改呢?
问题解答:
为了修改DB2服务器的主机名,我们可以在DB2数据库服务器上执行以下步骤来实现:
1) 停止DB2服务器(DAS)?/SPAN>DB2实例
a)db2admin stop
在Windows上,您可以直接执行命令来停止DAS,在Linux和UNIX上,您可以执行命令来获取DAS实例的名称,然后再停止DAS,如
db2set -all |grep DB2ADMINSERVER
[g] DB2ADMINSERVER=das91
然后su – das91后执行命令“db2admin stop”
b) db2stop
如果有多个实例,需要全部停止。可以用db2ilist命令列出该主机上所有的实例,然后一一停止
如果是Windows系统,您可以
set DB2INSTANCE=INST1
db2stop
这样来停止实例
如果是Linux或UNIX系统,您可以分别登录实例用户来执行”db2stop”
2) 修改服务器主机名(各种操作系统如何修改主机名,请参阅相关操作系统文档)
3) 以DB2实例用户登录后,执行
db2set -g DB2SYSTEM=
db2 terminate
上述命令,在Windows上,应该不会遇到问题,但是如果您的操作系统是Linux或者是UNIX的话,有可能此时遇到错误,如:
如果是V8、V9.1,您将遇到如下错误信息:
$ db2set –g DB2SYSTEM=pirates
DB2SET processing complete, rc = -2029059830, SQLCODE = 0
如果是V9.5,您将遇到如下错误信息:
$ db2set -g DB2SYSTEM=privates
DBI1309E System error.
Explanation:
The tool encountered an operating system error.
User response:
A system error was encountered during registry access. Ensure that there
is enough space on the file system where the registry is located, and
that there is a valid LAN connection if the registry is remote.
上述错误的原因是因为全局变量的操作涉及到系统级别的文件,实例用户并无相应权限来修改文件,而是需要root权限。我们可以用以下方法来完成该命令的执行:
$ su root
root's Password:
$ db2set -g db2system=privates
$ db2 terminate
注意:上述su命令用不带- 的,使得root具有实例用户的环境变量
如果有多个实例,上述命令只需执行一次
用实例用户检查修改情况,可以确认已经修改完成。
$ db2set –all |grep DB2SYSTEM
[g] DB2SYSTEM= privates
4) 编辑db2nodes.cfg文件
该文件位于
** Linux和UNIX:
** Windows:
0 red01 0
改为新的主机名
0 privates 0
如果有多个实例,请一并修改
5) 更新DB2管理服务器的配置信息
a) db2 list admin node directory show detail
b) db2 uncatalog node
c) db2 catalog admin tcpip node
d) db2 update admin cfg using DB2SYSTEM
e) db2 update admin cfg using SMTP_SERVER
6) 启动DB2管理服务器(DAS)和DB2实例
a)db2admin start
在Windows上,您可以直接执行命令来启动DAS,在Linux和UNIX上,您可以执行命令来获取DAS实例的名称,然后再停止DAS,如
db2set -all |grep DB2ADMINSERVER
[g] DB2ADMINSERVER=das91
然后su – das91后执行命令“db2admin start”
b) db2start
如果有多个实例,需要全部运行。可以用db2ilist命令列出该主机上所有的实例,然后一一启动
如果是Windows系统,您可以
set DB2INSTANCE=INST1
db2start
这样来启动实例。
如果是Linux或UNIX系统,您可以分别登录实例用户来执行”db2start”
7) 从服务器上的DB2控制中心删除旧主机名的条目,然后单击“添加系统”菜单,用新主机名发现新的主机名来添加。如果您从来不使用控制中心等GUI工具,此步骤可以忽略。而且,从DB2 V9.1开始,在UNIX系统上将不再提供控制中心等GUI工具。
注意:
从DB2 V9.1 FP2开始,DB2支持用域用户组作为扩展Windows。因此,当您要更改计算机名的时候,计算机用户组DB2ADMNS和DB2USERS是本地用户组,您必须更新全局注册表变量DB2_ADMINGROUP和DB2_USERSGROUP。当计算机主机名修改并且重启后,用以下步骤来修改注册表变量:
1. 打开一个命令行
2. 执行db2extsec命令来更新安全设置
db2extsec -a
请看如下URL作为如何修改的教程:
关于如何使用db2set命令,请参阅:
2009-04-17补充:
如果您在WINDOWS上改名后,仍然在DB2START的时候遇到SQL1042C,日志显示如下:
2009-04-09-14.56.38.187000+480 I536816H287 LEVEL: Severe
PID : 5252 TID : 5268 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000
FUNCTION: DB2 UDB, oper system services, sqloCacheNodeInfo, probe:15
MESSAGE : ZRC=0x83000534=-2097150668
2009-04-09-14.56.38.187000+480 I537105H275 LEVEL: Severe
PID : 5252 TID : 5268 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000
FUNCTION: DB2 UDB, base sys utilities, DB2StartMain, probe:200
MESSAGE : ZRC=0xFFFFFBEE=-1042
2009-04-09-14.56.38.203000+480 E537382H380 LEVEL: Error (OS)
PID : 5252 TID : 5268 PROC : db2syscs.exe
INSTANCE: DB2 NODE : 000
FUNCTION: DB2 UDB, oper system services, sqloGetAccountSID, probe:30
MESSAGE : ZRC=0x83000534=-2097150668
CALLED : OS, -, LookupAccountName
OSERR : 1332 "帐户名与安全标识间无任何映射完成。"
那么,就是这个问题基本上就是上文中
您必须更新全局注册表变量DB2_ADMINGROUP和DB2_USERSGROUP
如:
HKEY_LOCAL_MACHINE\SOFTWARE\IBM\DB2\GLOBAL_PROFILE