linux下的DB2数据库表结构和数据分开的备份,还原到windows下,环境如下


生产服务器A:操作系统:linux    内存:64G  这是生产机的环境,配置比较好。
测试服务器B: 操作系统:windows  内存:6G 
windows编码格式和代码页对照表:https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx
linux下查看内存插槽和每条内存大小命令;
dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range
        Size: 4096 MB
        Size: 4096 MB
以上就是两个插槽,都插满了,每条内存是4G。
系统支持最大内存命令:
dmidecode|grep -P 'Maximum\s+Capacity'
         Maximum Capacity: 4 GB
该系统只支持最大内存是4G
查看主板信息命令:
dmidecode | grep -A16 "System Information$"
第一步:在生产服务器上备份表结构和存储过程以及表空间等,也就是处理数据,把数据库拿过来。
1、 连接好工具后切换用户:  su –user  如果要输入密码,密码为 ****
2、 db2 connect to glpas user <数据库登陆用户> using <数据库登录密码> 
3、 选择一个路径,用于指定导出全库数据的路径, 命令:  cd /dbbak/jksj  如果没有这个路径 ,你可以用pwd 看下当前路径是什么。 
4、 最后输入 :  
5、 换这个命令看下 db2look -D glpas -e -a -l -x -i  <数据库登陆用户> -w <数据库登录密码>  -o glpas.sql
6、 前面那些-e -a的参数使用db2look / ?查看,或者网上看。
    注意(如果你是在windows系统下通过工具连接到linux系统下的话,那么-o后的命名glpas.sql应该是小写),不然会报错db2look utility could not open file for output
7、 之后用export导出数据,注意编码格式,一般是默认的,linux的终端是utf-8,windows是GBK。
第二步:开始在测试服务器上建立db2数据库
1、 通过在运行中输入db2cw进入终端,db2 create database test_db;创建一个test_db的数据库,一般需要一段时间,也是根据你的电脑配置来看的,别心急。
2、 db2 connect to test_db;输入你的密码就ok了。
3、 用notepad或其他工具打开glpas.sql文件,看下里面的缓冲池和表空间的大小,由于文件时生产机备份出来的, 所以缓冲池和表空间这些要根据你自己的机器配置,别配置太大了导致出问题。
4、 在测试机器上文件可能会出现中文乱码,在服务器上打开该文件,选择编码方式就转换过来了,然后另存为就可以了,不一定要是.sql文件,可以是txt或其他的,文件里面是sql语句就可以了。
第三步:导入数据
connect to test_db user <你数据库的用户名>
load  from 'D:\dysj\2014-12-31_CBOD_CICIECIF.del' of del modified by  codepage=1386 
coldel0X1D delprioritychar messages d:\glpas\log.txt replace into CBOD_CICIECIF NONRECOVERABLE;
......
统一写成这种格式存储在一个load.txt文件里面,导入一个1G的文件大约需要15到20min,具体看你服务器性能。
然后切换到相应的目录下,windows进去在c盘。
c:\user\Administrator>
c:\user\Administrator>D:
D:> cd \script
D:\script>  
该目录下存放load.txt和log.txt。
用db2 -stvf load.txt -l log.txt 执行批量脚本。
-s表示出错就终止执行load.txt里面的脚本,其它具体参数不赘述了。
执行完后可以在log.txt里面查看日志。
如果都提示命令成功那几本就到此结束了。
可能出现的问题:
一、表空间不足,提示tablespacename未分配新页面,需要扩容,一开始最好建大些,后面再减小。
使用db2 list tablespaces show detail查看表空间。在以syscat.为前缀的系统表里面可以查看存储过程,函数,表等信息。
db2 "ALTER TABLESPACE TEST ADD (FILE '/home/db2inst1/test_tbsp2' 1000)";   在增加一个表空间容器,会造成数据重新平衡(rebalance),时间比较久,对系统影响较大
db2 "ALTER TABLESPACE TEST resize (all 1000)";   所有表空间容器大小都改为1000,影响系统性能
db2 "ALTER TABLESPACE TEST reduce (file '/database/tbs_data/cont0' 1000)";  缩减表空间容器大小
db2 "ALTER TABLESPACE TEST extend (file '/database/tbs_data/cont0' 1000)";  扩展表空间容器大小
在导入数据有时会出现中断的现象,sql0668n 不允许对表test1进行操作,错误码时“3”。
执行如下语句,d盘的full.txt要么为空,要么就不存在。
db2 load from d:\full.txt of del terminate into test1
db2 load query table test1 查看表的状态
二、数据格式不对的问题,调整格式。
......
另附在windows下部署web项目,一个项目对应一个tomcat。
D:\WebApp\testpas\WebRoot\WEB-INF\classes路径下的applicationContext_resources.xml数据库连接信息。
D:\WebApp\glpas\apache-tomcat-6.0.20\conf\Catalina\localhost 的testpas.xml里面的web项目路径。
D:\WebApp\glpas\apache-tomcat-6.0.20\conf下的server.xml端口信息。
--创建类似的表
create  table tablename1  as (select * from tablename2) definition only
--快速清空一张表
alter table tablename1 activate not logged initially with empty table'
一、获取快照日志
#1.查看数据库编目
db2 list db directory
#2.attach 到要分析的数据库
db2 attach to pm1_9 user db2dev
#3.connect 到要分析的数据
db2 connect to pm1_9 user db2dev
#4.抓取快照
db2 get snapshot for all on pm1_9 > /tmp/snap.out
二、分析日志
#1.Rows Read大的表定位
grep -ni "Rows Read" /tmp/snap.out | grep -v "Not Collected" | sort -k 5rn | more
#2.执行次数多的sql
grep -ni "Number of executions" /tmp/snap.out | sort -k 6rn  | more



你可能感兴趣的:(备份,db2,表结构)