db2笔记

  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。



  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/installedApps

db2 force application all //强行终止所有连接 
db2 terminate //清除所有db2的后台进程

前提:

1、导出数据库建表语句:
   db2look -d feelview -e -a -x -i db2inst1 -w db2inst1 -o  ddl_feelview.sql
2、导出数据:
   mkdir data
   cd data
   db2move feelview export -u db2inst1 -p db2inst1
3、ftp到本地
4、ftp到建数据库的服务器
 
5、执行sql文件
db2 -tvf back_from_feelview.sql -z back_form_feelview.log
back_from_feelview.sql
    connect to databasename;
    import from system_data.del of del modified by codepage=1386 insert into system_data

6、数据导出
export  to system_data.del of del modified by codepage=1386 select * from system_data

7、数据导入
import from system_data.del of del modified by codepage=1386 insert into system_data

db2start  启动命令
删除数据库:

   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 db2inst1
select bpname from syscat.bufferpools #查看缓冲池
CREATE BUFFERPOOL FEELVIEWTMP IMMEDIATE  SIZE 10000 AUTOMATIC PAGESIZE 16K

drop 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 CACHING

DROP 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  FEELVIEWTMP

DROP TABLESPACE <tablespace_name> #删除表空间
5、创建模式:
CREATE SCHEMA DB2INST1 AUTHORIZATION DB2INST1
DB2 drop指定schema的所有表 .
db2 -x "select 'drop table '||trim(tabschema)||'.'||tabname||';'from syscat.tables where tabschema ='schemaname'" > droptable.sql
db2 -tf droptable.sql

db2 -x "select 'drop view '||trim(tabschema)||'.'||tabname||';'from syscat.tables where tabschema ='schemaname'" > dropview.sql
db2 -tf dropview.sql

DROP SCHEMA ERRORSCHEMA1 RESTRICT    --schema中不能含有任何对象
--RESTRICT 关键字强制实施以下规则:不能在指定的模式中为要从数据库中删除的模式定义对象。RESTRICT 关键字并非可选关键字

6、get db cfg for feelview
7、cd 到有建表语句的目录下,执行以下命令:
db2 -tvf ddl.sql -z create.log
8、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_2
db2 "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_POOL


db2中断开数据库连接 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 --断开与数据库的连接。


你可能感兴趣的:(db2笔记)