DB2数据库本地还原
(linux环境数据库还原到windows上)
1、本地建立db2数据库
可以使用db2数据库的控制中心来建库;
数据库语言环境选择中国,地域选择CN,代码集按照被还原库的整理顺序选择(例如整理顺序为: UNIQUE,代码集选择:GBK);
注意设置的表空间和缓冲池要足够大。
创建数据库后,连接数据库:
db2 connect to db_name user user_name using password
2、还原数据库
被还原的数据库文件需要包含.sql文件,.lst文件,.out文件,.ixf文件,.msg文件。
修改需要还原的数据库的.sql文件的连接的数据库名和用户,如下图:
注意:用户名是数据库默认的模式名,数据库名与本地创建的数据库名一致,(db2admin是安装db2数据库时自动创建的用户)。
执行sql脚本****:
以管理员权限进入cmd-->db2cmd执行以下命令:
db2 -tvf d:\script.sql -z d:\script.log
说明:d:\script.sql是被还原数据库的.sql文件,d:\script.log表示打印日志
用db2move导入(所有)数据:
在db2命令窗口中进入.sql文件所在的路径下,执行以下命令:
db2move db_name import -io replace -u user_name -p password
说明:db_name是数据库名(如上图中的ZXYH),user_name表示用户名(如上图中的db2admin),password表示密码
用import导入指定的表数据:
db2 "import from d:\data\tab1.ixf of ixf messages d:\data\tab1.msg insert into schema_name.table_name"
说明:schema_name是表所属,table_name是表名
3、连接db2数据库
导入成功后,(使用数据库连接软件或在命令行)查看还原后的db2数据库的数据信息。
4、用户名与模式名不一致问题
用户名就是默认的模式名,被还原数据库的模式名可能会和本地的用户名不一致,不一致时会导致查询时表名前必须要加上模式名,解决办法:
① 在创建数据库之后,在本机创建一个与被还原数据库中的用户名一致的用户(windows上:我的电脑右击-->管理-->本地用户和组),并将新建用户的权限以及所属组设置的与db2admin用户一致(具体赋权操作请百度);在修改被还原数据库的.sql文件时,不修改用户名。
② 在已经修改用户名且导入了数据库数据之后使用此方法;在本机创建一个与被还原数据库中的用户名一致的用户(windows上:我的电脑右击-->管理-->本地用户和组),并将新建用户的权限以及所属组设置的与db2admin用户一致(具体赋权操作请百度);登录数据库是用新创建的用户。
③ 如不想创建新用户,则在修改.sql文件时,将文件中所有与原用户名一致的信息全部替换成修改后的用户名(如db2admin);将.lst文件中所有与原用户名一致的信息全部替换成修改后的用户名(如db2admin)。
注:此方法未验证,成功率未知。
5、无法远程访问数据库问题
在本地还原DB2数据库后,本地可以连接,查询等操作,但是别的电脑访问时,可以连接但看不到数据信息的问题:
服务器端:
执行db2 get dbm cfg命令,查看TCP/IP服务名,如:
执行db2ilist命令,查看实例名,如:
执行db2set命令,查看通信协议,如:
查看services文件(C:\Windows\System32\drivers\etc)中的端口,如:
客户机端:
执行命令db2 catalog TCPIP node n1 remote 192.168.102.163 server db2c_db2inst2 显示如下图:
说明:n1是节点名(自己命名),192.168.102.163是服务器地址,db2c_db2inst2是服务器TCP/IP服务名。
执行db2 terminate命令,进行刷新。
执行命令db2 catalog database demo as demo2 at node n1 authentication server
说明:demo是数据库名,demo2是数据库别名(自己起的),n1是节点名(与上一条命令节点名一致)。
执行db2 terminate命令,进行刷新。
执行命令db2 connect to demo2 user db2inst2 using passwd连接数据库。
说明:demo2数据库别名,db2inst2用户名,passwd密码
参考:
https://blog.csdn.net/cws1214/article/details/12997451
https://www.cnblogs.com/xitingxie/p/5753093.html