db2 表空间 状态 DB2_DBA的注意事项
作者:互联网    来源:互联网    点击数:298  更新时间:2010年08月03日 
  activate database <dbname> 显式地激活数据库.
  deactivate database <dbname> 显式地使数据库失效.
  用crontab,比如:
  25 8 13 2 0 /home/vincent/poweroff
  8:25 2月13日 星期日
  C:\Program Files\FileZilla Client\resources\cyril\32x32\
  182.241.12.73: /home/sybiq/data/irs/etl/20070805main.log:查看表空间情况
  怎么查看哪张表被锁住了?
  db2 update monitor switches using lock on
  get snapshot for locks on 库
  1,打开监控窗口
  db2 update monitor switches using lock on
  2,运行程序一段时间后
  db2 get snapshot for locks on 数据库名称
  即可查看到当前所有连接到该数据库的应用程序句柄,同时每一个连接下锁定的情况
  ================================================== =========================
  1. 启动实例(db2inst1):
  db2start
  2. 停止实例(db2inst1):
  db2stop
  3. 列出所有实例(db2inst1)
  db2 list
  5.列出当前实例:
  db2 get instance
  4. 察看示例配置文件:
  db2 get dbm cfg|more
  5. 更新数据库管理器参数信息:
  db2 update dbm cfg using para_name para_value
  6. 创建数据库:
  db2 create db test
  7. 察看数据库配置参数信息
  db2 get db cfg for test|more
  8. 更新数据库参数配置信息
  db2 update db cfg for test using para_name para_value
  10.删除数据库:
  db2 drop db test
  11.连接数据库
  db2 connect to test
  11.列出所有表空间的详细信息.
  db2 list tablespaces show detail
  12.列出容器的信息
  db2 list tablespace containers for dbname show detail
  13.创建表:
  db2 ceate table tbname(id integer not null,name char(10))
  14.列出所有表
  db2 list tables
  12.插入数据:
  db2 insert into tb1 values(1,’sam’);
  db2 insert into tb2 values(2,’smitty’);
  13.查询数据:
  db2 select * from tb1
  14.数据:
  db2 delete from tb1 where id=1
  15.创建索引:
  db2 create index idx1 on tb1(id);
  16.创建视图:
  db2 create view view1 as select id from tb1
  17.查询视图:
  db2 select * from view1
  18.节点编目
  db2 catalog tcpip node node_name remote server_ip server server_port
  19.察看端口号
  db2 get dbm cfg|grep SVCENAME
  20.测试节点的附接
  db2 attach to node_name
  21.察看本地节点
  db2 list node direcotry
  22.节点反编目
 db2 uncatalog node node_name
  db2 uncatalog node NODE193
  db2 catalog tcpip node NODE_TMP remote 182.119.106.193 server 50000
  23.数据库编目
  db2 catalog db db_name as db_alias at node node_name
  24.察看数据库的编目
  db2 list db directory
  25.连接数据库
  db2 connect to db_alias user user_name using user_password
  26.数据库反编目
  db2 uncatalog db db_alias
  27.导出数据
  db2 export to myfile of ixf messages msg select * from tb1
  28.导入数据
  db2 import from myfile of ixf messages msg replace into tb1
  29.导出数据库的所有表数据
  db2move test export
  30.生成数据库的定义
  db2look -d db_alias -a -e -m -l -x -f -o db2look.sql
  31.创建数据库
  db2 create db test1
  32.生成定义
  db2 -tvf db2look.sql
  33.导入数据库所有的数据
  db2move db_alias import
  34.重组检查
  db2 reorgchk
  35.重组表tb1
  db2 reorg table tb1
  36.更新统计信息
  db2 runstats on table tb1
  37.备份数据库test
  db2 backup db test
  38.恢复数据库test
  db2 restore db test
  39.查看动态sql语句快照信息
  db2 get snapshot for dynamic sql on dbname
  ================================================== =========================
  LOCKLIST 表明分配给锁列表的存储容量
银行为什么用db2数据库  MAXLOCKS 定义了应用程序持有的锁列表的百分比
  如果发生了死锁,可以通过创建死锁监视器来分析产生死锁的原因,命令如下:
  mkdir /tmp/dlmon
  db2 connect to <db>
  db2 create event monitor dlmon for deadlocks with detail write to file ‘/tmp/dlmon’ replace
  db2 set event monitor dlmon state 1
  …..等有死锁发生后
  db2 set event monitor dlmon state 0
  db2evmon –d /tmp/dlmon >/tmp/dlmon.out
  分析/tmp/dlmon.out文件就可以到造成死锁的信息,结合应用就可以到造成死锁的原因了.
  -------------------------------------------------- -------------
  注意 db2look 实用程序也能在一条命令中提供相当可观的有关数据库和其配置的信息.它的使用示例如下:
  db2look -d ldapdb2 -u ldapdb2 -p -o output_file
  更新数据库参数配置信息
  db2 update db cfg for test using para_name para_value
  如何查看DB2允许的最大连接数?
  连接到数据库后,用get db cfg for database查看一下maxappls和avg_appls的数值.
  用update db cfg for database using maxappls number试试把maxappls设置得更大些.
  db2 update db cfg for dbname using MAXAPPLS 数
  在控制中心也可以设置
  list applic
ations all 可以看到当前的进程
  实例级参数MAXAGENTS,数据库级参数MAXAPPLS和最大连接数的关系.
  对于一个数据库,连接到数据库上最大的并发连接数受到数据库级参数MAXAPPLS的限制;
  对于一个实例,连接到实例中的所有数据库最大的并发连接数受到实例级参数MAXAGENTS的限制.
  默认值:
  MAXAPPLS=40
  MAXAGENTS=200
  如需更改,用
  UPDATE DB CFG FOR 数据库名 USING MAXAPPLS 期望值
  UPDATE DBM CFG USING MAXAGENTS 期望值
  或者在控制中心中更改数据库和实例配置参数.
  注意:连接数的大小还要受到系统资源状况的限制.
  -------------------------------------------------- -------------
  connect to db_irs user irs using irs in Exclusive mode;(停用数据库)
  DB2 所使用内存量的一个工具是 db2mtrk
  查看数据库的内存使用情况:
  db2mtrk -d
  表被锁了可用:
  db2 list indoubt TRANSACTIONS:查看
  db2 list indoubt TRANSACTIONS with prompting:解除
  get snapshot for locks on db_irs
  db2 get monitor switches 返回会话监控开关的状态
  db2start 启动数据库管理器实例.
  db2stop 停止数据库管理器实例.
  get dbm cfg 返回数据库管理器配置设置.
  get dbm cfg show detail 显示数据库管理器参数的当前值和延迟值(从 V8 起).
  update dbm cfg using <p> <v> 将数据库管理器配置参数 <p> 更新为值 <v>.
  get instance 返回 DB2INSTANCE 环境变量的值.
  list active databases 列出活动的数据库和连接数.
  list application [show detail] 返回关于当前连接的应用程序的信息.
  force application (h1 [,h2,..,hn]) 根据句柄号与特定应用程序断开连接.
  force application all 断开所有应用程序与数据库的连接.
  attach to <node> user <userid> using <pwd> 以用户 <userid> 通过使用密码 <pwd> 与标识为 <node> 的远程实例连接.
  create database <dbname> 创建名为 <dbname> 的数据库.
  connect to <dbname> [ [user <userid>] using <pwd>] 根据需要,显式地以用户 <userid> 和密码 <pwd> 与数据库 <dbname> 连接.
  update dbm cfg using <p> <v> 将数据库管理器配置参数 <p> 更新为值 <v>.
  connect reset 断开与当前数据库的连接.
  get db cfg show detail 显示数据库配置参数的当前值和延迟值(仅适用于 V8).
  get db cfg for <dbname> 返回数据库 <dbname> 的数据库配置设置.
  update db cfg for <dbname> using <p> <v> 将数据库 <dbname> 的数据库配置参数 <p> 更新为值 <v>.
  list tables[for {user | all | system | schema <schemaname>}][show detail] 列出数据库中的表.如果没有指定
任何参数,则缺省情况是列出当前用户的表.
  describe table <tablename> 显示一个表或视图的列信息.
  list tablespaces [show detail] 显示表空间的标识、名称、类型、内容和状态.
  list tablespace containers for <tablespace_id> [show detail] 显示用 <tablespace_id> 指定的表空间的容器信息.
  -------------------------------------------------- --------------------------------
  quiesce tablespaces for table <tablename> reset 将表空间的状态复位成正常(normal).
  quiesce是一种持续状态的锁,它属于一个连接,当该连接失败时,quiesce状态依然存在.如何将表空间的状态置为正常状态?
  答:除去quiesce状态:
  1. 连接到数据库
  2. 用 list tablespaces 判断哪个tablespace处于quiesce状态和和取得对象(object)ID
  3. 判断对象ID对应的表
  用 db2 "select tabname from syscat.tables where tablid=对象ID" 得到表名
  b)用 db2 list history 判断是那个表
  4. 用 db2 quiesce tablespaces for table 表名 reset 去除quiesce状态
  -------------------------------------------------- ---------------------------------
  catalog [admin] <protocol> node … 为协议 <protocol> 在节点目录中创建一项.
  list [admin] node directory 返回节点目录的内容.
  catalog database <dbname>… 为数据库 <dbname> 在数据库目录中创建一项.
  list database directory [on <path>] 返回数据库目录的内容.
  update monitor switches using <monitor> <on|off> 为 <monitor> 设置会话监控开关的状态.
  reset monitor all 复位性能监控程序值.
  get snapshot for dbm 返回实例级别的性能信息.
  get snapshot for all on <dbname> 为数据库 <dbname> 在数据库级别返回所有性能信息.
  get snapshot for dynamic sql on <dbname> 返回动态 SQL 高速缓存的内容.
  runstats on table <tbschema>.<tbname> 收集表 <tbname> 的统计信息.表名必须是用 <dbschema> 全限定的.
  reorgchk on table all 确定是否需要对表进行重组.这对于对所有表自动执行 runstats 很有用.
  reorg table <tablename> 通过重构行来消除“碎片”数据并压缩信息,对表进行重组.
  请问DB2什么命令可以看到bufferpool,属于哪个tablespace
  select TBSPACE,TBSPACEID,BUFFERPOOLID from syscat.tablespaces
  select * from syscat.bufferpools
  输出中将包含以下参数:
  监控开关 数据库管理器参数 注释
  BUFFERPOOL DFT_MON_BUFPOOL 缓冲区的读写情况和发生时间
  LOCK DFT_MON_LOCK 锁持有,锁等待,以及死锁的发生情况
  SORT DFT_MON_SORT Heap的使用情况,排序性能
  STATEMENT DFT_MON_STMT 语句起始时间,语句内容
 TABLE DFT_MON_TABLE Measure of activity (rows read/written)
  UOW DFT_MON_UOW Start/end times, completion status
  TIMESTAMP DFT_MON_TIMESTAMP Timestamps
  为了观察快照中的锁和执行语句情况,一般把LOCK和STATEMENT选项设为ON,也可以酌情把其他开关打开,示例如下:
  db2 update monitor switches using lock on statement on
  list application for db_irs:察看应用程序连接情况
  在 DB2 V7.2 中,LOAD 不能生成非标识生成列值,因此装入带有非标识生成列的表将使目标表处于 CHECK PENDING 状态,
  直到您运行 SET INTEGRITY 为止.
  如果您运行 SET INTEGRITY FOR <tablename> IMMEDIATE CHECKED FORCE GENERATED ,那么 SET INTEGRITY 会为您生成列值.
  如果您指定 generateoverride ,然后提供您自己的确信有效的值,那么您可以使用下述命令来使表脱离CHECK PENDING状态:
  SET INTEGRITY FOR <tablename> GENERATED COLUMN IMMEDIATE UNCHECKED
  输入带有该选项的SET INTEGRITY命令使DB2跳过一项工作验证所提供的值确实正确(当然,这是有风险的).为使表脱离检查挂起状态,
  并且强制对用户提供的值进行验证,请发出下述命令:SET INTEGRITY FOR <tablename> IMMEDIATE CHECKED.
  创建表空间容器,把表放到这个容器中去
  create tablespace ts1 managed by database using (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c1' 1024);
  create table newstaff like staff in ts1;
  load from staffdata.del of del insert into newstaff nonrecoverable;
  alter tablespace ts1 add (file '/home/melnyk/melnyk/NODE0000/SQL00001/ts1c2' 1024);
  list tablespaces;
  connect reset;
  创建或修改表空间,以便使用 NO FILE SYSTEM CACHING 选项
  CONNECT TO SAMPLE;
  CREATE REGULAR TABLESPACE TESTBSP
  MANAGED BY SYSTEM
  USING (‘/data/’)
  NO FILE SYSTEM CACHING;
  ALTER TABLESPACE TESTTBSP2
  NO FILE SYSTEM CACHING;
  所有DB2表空间都可以使用这个选项,包括系统表空间和临时表空间,以及数据库管理的表空间.惟一的例外是 Linux 原始设备表空间容器,
  因为它本身就绕过文件缓存.要在 Linux 上建立原始设备,请参阅 DB2 Information Center 中的“Linux raw devices”(见 参考资料).
  LOB 和 LONG VARCHAR 数据字段通常不能从直接 I/O 受益,因此将继续使用文件缓存.对于数据库管理的表空间,
  建议拆开 LOB 数据中的常规数据,将 LOB 数据放在一个很大的表空间中.
  db2stop force(断开连接)
  db2start(重起数据库)
  db2 runstats on table <;用户表模式名>.<;表名>
  db2look -d <;用户数据库名> -t <;表名> -m -o statis.sql
  DB2 SQLState 38553的错误及排除
  今天部署环境时出现如下错
误,ReportNet Desiciontream均报错,报错内容如下:
  DS-DBMS-E400: UDA driver reported the following on connection 'ALIAS_00F210DC':
  DMS-E-GENERAL, A general exception has occurred during operation 'asynchronous open'.
  [IBM][CLI Driver][DB2/AIX64] SQL0443N 例程 "SYSIBM.SQLTABLES"(特定名称 "TABLES")返回了带诊断文本 "SYSIBM:CLI:-805" 的错误 SQLSTATE. SQLSTATE=38553
  其中DB2的版本为V8.2,用QuestCentral和DB2CA访问均正常,DS验证用户密码也正确,就是无法创建DS的用户表.
  经分析,我们认为是DB2 V8的版本问题,即IBM 最近发布的DB2 FixPack 10(也称作 DB2 Version 8.2.3,也就是带 FixPack 3 的 DB2 Version 8.2 —— 如何称呼取决于获得产品的途径)出现的问题.
  解决方法如下,在DB2客户端的机器上对本地的db2schema.bnd进行bind操作,使本地的数据库别名真正与DB2的实例对应上:
  To bind db2schema.bnd on the server, execute one of these command
  sequences:
  At a command prompt:
  db2 terminate
  db2 CONNECT TO <dbname>
  db2 BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
  db2 terminate
  or,
  At the DB2 command line:
  TERMINATE
  CONNECT TO <dbname>
  BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
  TERMINATE
  db2look -d dbname -a -e -x -c -o filename(备份表定义)
  db2look -d 实例名 -e -l -x -i 用户名 -w 密码 -o directory/file/.sql
  其中,db2schema.bnd 在DB2的安装目录的bnd目录下.
  /usr/opt/db2_08_01/bnd
  db2 BIND /usr/opt/db2_08_01/bnd/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
  db2 alter table employee add primary key (empno)
  force applications all(断掉各方连接)
  backup db db_irs(irs为数据库名)备份
  compress 文件名(压缩)(压缩完文件后删除原文件)
  compress IRS.0.db2inst2.NODE0000.CATN0000.20070720150344.00 2(后缀格式为.Z)
  rm IRS.0.db2inst2.NODE0000.CATN0000.20070720150344.00 2.Z(删除)
  cp IRS.0.db2inst2.NODE0000.CATN0000.20070720150344.00 2.Z /home/irs/backup(复制到)
  db2 -tvf cmis_import_from.sql(shell调用SQL)
  sh cmis_main.sh 200706312007-8-6 21:58
  (问题)不允许存取表空间
  backup db irs tablespace userspace1 online(备份表空间)
  LOAD
  FROM 'CURINCOMEFORECAST' OF del
  replace INTO CURINCOMEFORECAST nonrecoverable;
  alter table CURINCOMEFORECAST drop primary key;(删除主键)
  ALTER TABLE CUST_INDV_INFO ADD CONSTRAINT PK_CUST_INDV PRIMARY KEY (CUSTCD);(增加主键)
  CREATE INDEX CUSTINDV_IDX1 on CUST_INDV_INFO (CUSTCD,HOME_ADDRESS,HOME_POSTNO);(创建索引)
  连接到:db2 connect to irs140
  测试:db2 -td@ -v -f dorole1_2.sql