db2笔记

来源:互联网 发布:唱吧假唱软件 编辑:程序博客网 时间:2024/05/22 08:28
  DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016错误解决方法这个错误是:表处于"装入暂挂"状态。经多次尝试 总结方法:1:reorg table <表>; 假如不好使 则下面方法2,先前尝试装入(LOAD)此表失败。表的状态应该是load pending;你可以执行一下db2 "load query table <tabname>"命令来查看你的表状态。然后用db2 "load from /dev/null of del terminate into <tabname>"这个命令来解挂。 然后 reorg table <表>3,恢复时候 没有指定过roll forward选项是数据库的原因,因LOAD异常中断引起,可以用LOAD… TERMINATE 或者RESTART来解决.先在C:建一个空文件test.txt,然后db2 load from c:/test.txt of del terminate into tablename然后 reorg table <表>然后就可以了! 这几种方法尝试后OK。4、db2如果表正在使用的过程中对变得字段进行修改需要执行reorg  table tablename  2、231的was停止与启动:      /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/stopManager.sh      /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/stopNode.sh            用户:wasadmin/wasadmin      /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh      /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startNode.sh    /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedAppsdb2 force application all //强行终止所有连接 db2 terminate //清除所有db2的后台进程rm -rf !(export*|import*)db2 -tvf cleartables.txt -z cleartables.txt.logsed -n '/^alter table/p'  cleartables.txt.log > cleartables.sqldb2 -tvf exports.sql -z exports.logsed -n '/^export/p' exports.log > export.sqldb2 -tvf export.sql -z export.log--清空所有表select  'alter table '||lower(name)||' activate not logged initially with empty table;' from sysibm.systables where creator like '%LIN3%'  and type='T' order by name;--导出表数据select  'export to '||lower(name)||'.del of del modified by codepage=1208 select * from '||lower(name)||';' from sysibm.systables where creator like '%LIN3%'  and type='T' order by name;--导入表数据select  'import from '||lower(name)||'.del of del modified by codepage=1208 insert into '||lower(name)||';' from sysibm.systables where creator like '%LIN3%'  and type='T' order by name;前提:1、导出数据库建表语句:   db2look -d feelview -e -a -x -i db2inst1 -w db2inst1 -o  ddl_feelview.sql2、导出数据:   mkdir data   cd data   db2move feelview export -u db2inst1 -p db2inst13、ftp到本地4、ftp到建数据库的服务器 5、执行sql文件db2 -tvf back_from_feelview.sql -z back_form_feelview.logback_from_feelview.sql    connect to databasename;    import from system_data.del of del modified by codepage=1386 insert into system_data6、数据导出export  to system_data.del of del modified by codepage=1386 select * from system_data;--codepage是编码 1208是utf-8select 'export  to '||lower(name)||'del of del modified by codepage=1208 select * from '||lower(name)|';' from sysibm.systables where creator like '%LIN%' order by name;7、数据导入import from system_data.del of del modified by codepage=1386 insert into system_data--codepage是编码 1208是utf-8db2start  启动命令删除数据库:   1、db2  CONNECT RESET   db2 force application all   drop database feelview      删除成功之后,开始新建数据库,如下:   1、创建数据库db2 CREATE DATABASE feelview ALIAS feelview USING CODESET UTF-8 TERRITORY CN PAGESIZE 16384 db2 drop db feelview #删除数据库2、创建缓冲池db2 connect to feelview user db2inst1 using db2inst1select bpname from syscat.bufferpools #查看缓冲池CREATE BUFFERPOOL FEELVIEWTMP IMMEDIATE  SIZE 10000 AUTOMATIC PAGESIZE 16Kdrop BUFFERPOOL bufferpoolname#删除缓冲池3、创建表空间:list  tablespaces #查看表空间CREATE  LARGE  TABLESPACE FEELVIEWDB  PAGESIZE 16K  MANAGED BY DATABASE  USING ( FILE 'FEELVIEWTBS1' 32000,FILE 'FEELVIEWTBS2' 32000) EXTENTSIZE 32 OVERHEAD 10.5 PREFETCHSIZE 32 TRANSFERRATE 0.14 AUTORESIZE YES INCREASESIZE 50M BUFFERPOOL  FEELVIEWTMP NO FILE SYSTEM CACHINGDROP TABLESPACE <tablespace_name> #删除表空间4、创建临时表空间:CREATE  USER TEMPORARY  TABLESPACE TEMPSPACE2 PAGESIZE 16K  MANAGED BY DATABASE  USING ( FILE 'FEELVIEWTEMP1' 32000) EXTENTSIZE 32 OVERHEAD 10.5 PREFETCHSIZE 32 TRANSFERRATE 0.14 AUTORESIZE YES INCREASESIZE 10M  BUFFERPOOL  FEELVIEWTMPDROP TABLESPACE <tablespace_name> #删除表空间5、创建模式:CREATE SCHEMA DB2INST1 AUTHORIZATION DB2INST1DB2 drop指定schema的所有表 .db2 -x "select 'drop table '||trim(tabschema)||'.'||tabname||';'from syscat.tables where tabschema ='schemaname'" > droptable.sqldb2 -tf droptable.sqldb2 -x "select 'drop view '||trim(tabschema)||'.'||tabname||';'from syscat.tables where tabschema ='schemaname'" > dropview.sqldb2 -tf dropview.sqlDROP SCHEMA ERRORSCHEMA1 RESTRICT    --schema中不能含有任何对象--RESTRICT 关键字强制实施以下规则:不能在指定的模式中为要从数据库中删除的模式定义对象。RESTRICT 关键字并非可选关键字6、get db cfg for feelview7、cd 到有建表语句的目录下,执行以下命令:db2 -tvf ddl.sql -z create.log8、cd到有导出数据的目录下,执行以下命令:  db2move feelview import -u db2inst1 -p db2inst1--查看连接数select * from table(snapshot_appl_info('',-2) )as a;select * from table(snapshot_appl('',-2) )as a;-- 查看连接参数db2 get db cfg for feelview--DB2中两时间相减求之前相差多少月?SELECT  timestampdiff (256, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔年",  timestampdiff (128, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔季度",  timestampdiff (64, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔月",  timestampdiff (32, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔周",  timestampdiff (16, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔日",  timestampdiff (8, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔时",  timestampdiff (4, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔分",  timestampdiff (2, char(timestamp('2013-12-30 20:30:30') - timestamp('2001-09-26 15:24:23'))) AS "间隔秒"FROM SYSIBM.SYSDUMMY1;select * from sysibm.systables where type='T' and creator='DB2INST1'  select * from sysibm.columns where table_name='SYSTEM_DATA' ;  --查看表结构删除db2 数据库db2>disconnect current字面意思是“断开当前连接”;db2 catalog  db dbname.db2 drop db dbname.DB2怎么删除表空间所以数据 DROP TABLESPACE <tablespace_name>db2 表空间常用命令(未完待续)(2013-11-22 19:26:37)转载▼标签: it 分类: DB2  # 1. 查看所有的表空间db2 list tablespaces# 2. 查看某个表空间的容器db2 list tablespace containers for   [ show detail ]如: db2 list tablespace containers for 3 show detail# 3. 查看表空间的配置信息,使用情况及容器信息db2pd -d -tablespaces如:db2pd -d zdb -tablespaces# 4. 通过snapshot 获取表空间信息db2 get snapshot for tablespaces on对于DMS( database manage ) 表空间,提供了几个方法更改表空间容器。    1. Add 用来增加新的容器    2. Drop 删除容器    3. Extend 扩展已有容器大小    4. Reduce 缩减已有容器大小    5. Resize 重新设定容器大小Add和Drop操作,表空间容器之间会发生数据重新平衡(rebalance),Reduce和Resize操作,需要确保修改后的表空间容器有足够的空间,否则DB2会拒绝该操作。日常运维中出现表空间满的情况时,根据对存储空间和对运维的影响,有以下三种方案:1). 如果表空间对应的存储容器中还有未分配空间,可通过alter tablespace 的 extend 或 resize 选项扩展已有表空间容器的大小。如下面的例子是在每个容器上扩展了50GB:    db2 "alter tablespace tbs_dat extend ( file '/db2tbsp/dat_1' 50G, file '/db2tbsp/dat_2' 50G) ";2). 如果表空间容器对应的存储中没有剩下空间时,可以通过alter tablespace 的 add 选项增加新的表空间容器。需要注意的是:通过add增加容器会在容器之间进行数据Reblance,即数据重新平衡。如果数据量很大,reblance的时间会很长,对系统性能会造成很大的影响。下面是增加一个新的容器,表空间的不同容器内会发生reblance:    db2 "alter tablespace tbs_dat add ( file '/db2tbsp/dat_2' 10G)"3). 通过alter tablespace begin new stripe set 选项。begin new stripe set 选项是当已有容器使用完后,再使用新增加的容器。与方法2不同,该选项不会在容器之间做reblance,不会对系统造成性能影响,但它会造成数据偏移。如下:    db2 "alter tablespace tbs_dat begin new stripe set (file '/db2tbsp/dat_2' 10G) "# 删除表空间tbs_dat的容器dat_2db2 "alter tablespace tbs_dat drop ( file '/db2tbsp/dat_2' )"表空间容器的路径变化时,需要建立一个软链接(容器的原路径软链接到容器的新路径),如:ln -s /db2tbs/zdb/dat_1 /db2tbsp/dat_1查看、修改、创建、删除缓冲池查看缓冲池大小:    SELECT BPNAME,NPAGES,PAGESIZE FROM SYSCAT.BUFFERPOOLS修改缓冲池大小:    ALTER BUFFERPOOL <bp_name> SIZE <number_of_pages>创建缓冲池时指定大小:    CREATE BUFFERPOOL <bp_name> SIZE <number_of_pages> PAGESIZE <integer K>删除缓冲池:$ db2 drop BUFFERPOOL PAY_SYS_POOLdb2中断开数据库连接 2010-04-26 15:39:52 分类: db2中connect reset、disconnect current、和quit这三个命令有什么区别?或者说连上db2后哪个能真正断开连接?connect reset字面意思是“连接重置”;disconnect current字面意思是“断开当前连接”;以上两个命令都能断开数据库连接;quit是退出交互模式,相当于在使用Ctrl+C退出交互模式;使用此命令后只是退出了交互模式,数据库连接并未断开,此时如果输入db2进入交互模式,将可以继续使用以前的连接进行sql操作(前提是没有使用connect reset或者disconnect current命令断开连接)。而我平时一直使用的是quit命令,现在从试验结果看,这是个误用,是自己以前没弄明白造成的,为此记录一下。正确的方式是:使用connect reset或者disconnect current命令断开连接之后再quit退出。连接数据库后执行connect reset命令结果:连接数据库后执行disconnect current命令结果:连接数据库后执行quit命令结果:补充:db2 terminate --断开与数据库的连接。--查找某个存储过程   select * from syscat.procedures where procschema='CTLLIN'  --查找某个函数  select * from syscat.functions where funcschema='CTLLIN'  (未经许可,请勿转载)最近在执行DB2数据库SQL脚本时报错如下:DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0010N The string constant beginning with "'单位:天')" does not have an ending string delimiter. SQLSTATE=42603。该脚本在DB2连接工具中执行正常,因此可以确定问题出在中文字符集上面。分析研究后,发现DB2数据库存在三种级别的字符集:操作系统级LANG、实例级(客户端级)db2codepage、数据库级Database code page/set。操作系统级是用户应用程序使用的代码页。可以使用环境变量LANG=C等来设置。用set命令、或者echo $LANG查看其值。实例级DB2应用程序进行客户端到数据库服务端代码页转换时使用的,比如使用SQL脚本时,db2读取脚本时就是按照实例级的字符集db2codepage来识别该脚本的。可用db2set -all来查看其值。可用db2set db2codepage=1208来设置其值。数据库级的字符集是在创建数据库时指定的,是后续不可修改的。设置语句类似db2 "CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY CN"。可以在连库后,使用db2 get db cfg for dbname命令,来查看Database code page/set的值。本问题中数据库级的字符集是1386,即GBK字符集;终端实例级的字符集也是1386字符集。但是,SQL脚本是UTF-8格式的,db2按照1386字符集去读取UTF-8格式的脚本就会出现不可识别的乱码,最终报错SQL0010N。解决办法是临时修改实例级字符集为UTF-8格式,执行完脚本后再恢复为GBK格式。db2 connect to dbnamedb2set db2codepage=1208db2 terminatedb2 connect to dbnamedb2 -tvf *.sql  //执行sql脚本db2set db2codepage=1386db2 terminate(未经许可,请勿转载)最近在执行DB2数据库SQL脚本时报错如下:DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0010N The string constant beginning with "'单位:天')" does not have an ending string delimiter. SQLSTATE=42603。该脚本在DB2连接工具中执行正常,因此可以确定问题出在中文字符集上面。分析研究后,发现DB2数据库存在三种级别的字符集:操作系统级LANG、实例级(客户端级)db2codepage、数据库级Database code page/set。操作系统级是用户应用程序使用的代码页。可以使用环境变量LANG=C等来设置。用set命令、或者echo $LANG查看其值。实例级DB2应用程序进行客户端到数据库服务端代码页转换时使用的,比如使用SQL脚本时,db2读取脚本时就是按照实例级的字符集db2codepage来识别该脚本的。可用db2set -all来查看其值。可用db2set db2codepage=1208来设置其值。数据库级的字符集是在创建数据库时指定的,是后续不可修改的。设置语句类似db2 "CREATE DATABASE dbname USING CODESET UTF-8 TERRITORY CN"。可以在连库后,使用db2 get db cfg for dbname命令,来查看Database code page/set的值。本问题中数据库级的字符集是1386,即GBK字符集;终端实例级的字符集也是1386字符集。但是,SQL脚本是UTF-8格式的,db2按照1386字符集去读取UTF-8格式的脚本就会出现不可识别的乱码,最终报错SQL0010N。解决办法是临时修改实例级字符集为UTF-8格式,执行完脚本后再恢复为GBK格式。db2 connect to dbnamedb2set db2codepage=1208db2 terminatedb2 connect to dbnamedb2 -tvf *.sql  //执行sql脚本db2set db2codepage=1386db2 terminatedb2 快速清除表中所以的数据db2 "alter table t1 activate not logged initially with empty table"快速清除表数据操作, 这个操作是不记录日志的, 最好做过后做一次在线备份命令为:alter table tabname activate not logged initially with empty table这条会删除表中的所有数据


 

0 0
原创粉丝点击