一个客户重启LINUX服务器后,db2实例可以启动,但是无法成功连接,通过检查db2diag.log,出现了下面的错误。这种错误通常是由于其他db2进程例如db2cos没有释放加在控制文件上的锁导致的。常规的解决办法是使用db2_kill杀掉其他进程,以及用ipclean清理IPC资源。我都试了,甚至也试了重启机器,这个问题都无法解决。
2012-11-06-13.43.03.157979+480 I49705715E481 LEVEL: Error
PID : 910 TID : 47931096820032PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : YXDB
APPHDL : 0-19 APPID: 10.137.249.101.2938.121106054304
AUTHID : DB2INST1
EDUID : 31 EDUNAME: db2agent (YXDB) 0
FUNCTION: DB2 UDB, base sys utilities, sqle_GetRelDBLockForInstance, probe:25
MESSAGE : /arch/db2log/db2inst1/NODE0000/SQL00001/SQLINSLK
2012-11-06-13.43.03.157979+480 I49706197E572 LEVEL: Severe
PID : 910 TID : 47931096820032PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : YXDB
APPHDL : 0-19 APPID: 10.137.249.101.2938.121106054304
AUTHID : DB2INST1
EDUID : 31 EDUNAME: db2agent (YXDB) 0
FUNCTION: DB2 UDB, base sys utilities, sqeLocalDatabase::FirstConnect, probe:5
RETCODE : ZRC=0x870F0016=-2029060074=SQLO_SHAR "File sharing violation."
DIA8519C A file sharing violation has occurred, filename was "".
后来,注意到,客户所使用数据库的DB PATH是在/arch/db2log 这个NFS文件系统挂载上的,所以尝试着用db2relocatedb命令将DB PATH从/arch/db2log移动到盘阵/data1/dbpath,最终解决了这个问题。
步骤如下:
1,检查原来的建库语句:
create database yxdb automatic storage yes on /data1, /data2, /data3 dbpath on /arch/db2log ALIAS yxdb2 using codeset UTF-8 territory CN pagesize 32 k
2,复制/arch/db2log下所有文件到新的路径/data1/dbpath
cp -rf /arch/db2log/* /data1/dbpath
PID : 910 TID : 47931096820032PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : YXDB
APPHDL : 0-19 APPID: 10.137.249.101.2938.121106054304
AUTHID : DB2INST1
EDUID : 31 EDUNAME: db2agent (YXDB) 0
FUNCTION: DB2 UDB, base sys utilities, sqle_GetRelDBLockForInstance, probe:25
MESSAGE : /arch/db2log/db2inst1/NODE0000/SQL00001/SQLINSLK
2012-11-06-13.43.03.157979+480 I49706197E572 LEVEL: Severe
PID : 910 TID : 47931096820032PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : YXDB
APPHDL : 0-19 APPID: 10.137.249.101.2938.121106054304
AUTHID : DB2INST1
EDUID : 31 EDUNAME: db2agent (YXDB) 0
FUNCTION: DB2 UDB, base sys utilities, sqeLocalDatabase::FirstConnect, probe:5
RETCODE : ZRC=0x870F0016=-2029060074=SQLO_SHAR "File sharing violation."
DIA8519C A file sharing violation has occurred, filename was "".
后来,注意到,客户所使用数据库的DB PATH是在/arch/db2log 这个NFS文件系统挂载上的,所以尝试着用db2relocatedb命令将DB PATH从/arch/db2log移动到盘阵/data1/dbpath,最终解决了这个问题。
步骤如下:
1,检查原来的建库语句:
create database yxdb automatic storage yes on /data1, /data2, /data3 dbpath on /arch/db2log ALIAS yxdb2 using codeset UTF-8 territory CN pagesize 32 k
2,复制/arch/db2log下所有文件到新的路径/data1/dbpath
cp -rf /arch/db2log/* /data1/dbpath
3,编辑移动文件rel.cfg,内容如下:
DB_NAME=yxdb
DB_PATH=/arch/db2log,/data1/dbpath
INSTANCE=db2inst1
DB_PATH=/arch/db2log,/data1/dbpath
INSTANCE=db2inst1
4,使用db2relocatedb命令修改DB PATH
db2relocatedb -f rel.cfg
Files and control structures were changed successfully.
Database was catalogued successfully.
DBT1000I The tool completed successfully.
5,成功连接
Files and control structures were changed successfully.
Database was catalogued successfully.
DBT1000I The tool completed successfully.
5,成功连接
db2 connect to yxdb
Database Connection Information
Database server = DB2/LINUX 9.7.6
SQL authorization ID = DB2INST1
Local database alias = yxdb
Database Connection Information
Database server = DB2/LINUX 9.7.6
SQL authorization ID = DB2INST1
Local database alias = yxdb
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25714482/viewspace-748508/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25714482/viewspace-748508/