DB2常用命令总结

登录数据库服务器 切换到数据库用户 su - db2inst1
常用的一些DB2命令总结如下:

  • 查看DB2数据库:db2 list db directory
  • 查看DB2数据库应用:db2 list applications
  • 查看DB2数据库应用与进程号:db2 list applications show detail
  • 杀掉进程: db2 force application (id)
  • 查看DB2数据库配置:db2 get db cfg for DB_NAME
  • 查看DB2归档日志路径:db2 get db cfg for DB_NAME|grep "LOGARCHMETH1"
  • 查看首活动日志:db2 get db cfg for DB_NAME|grep -i "First active log file"
  • 清理日志:db2 prune logfile prior to S0009392.LOG ##其中S0009392.LOG是首活动日志,此命令可以将当前首活动日志文件之前的归档日志文件全部删除
  • 手工归档产生日志命令:db2 archive log for db DB_NAME
  • 创建数据库:db2 create db DB_NAME
  • 删除数据库:db2 drop database DB_NAME(如果不能删除,尝试断开激活的连接或重启db2)
  • 断开数据库连接:db2 connect reset 或者 db2 terminate
  • 连接数据库:db2 connect to DB_NAMEdb2 connect to DB_NAME user USER_NAME using PASSWORD
  • 列出系统表:db2 list tables for system
  • 查询列出所有表:db2 list tables for all
  • 查看特定用户表:db2 list tables for schema user
  • 查看表结构:db2 describe table TB_NAME或者describe select * from schema.TB_NAME
  • 生成所有对象的DDL:db2look -d DB_NAME -a -e -m -l -f -o bak.sql
  • 复制一张表:db2 create table TB1 like TB2
  • 查询表:db2 "select * from table tablename where ..."
  • 查看正在执行的sql:db2 list application show detail |grep -i exe
  • 看数据库表空间:db2pd -db DB_NAME -tablespace
  • 查看死锁:db2 get snapshot for locks on DB_NAME 或者db2 "select agent_id,tabname,lock_mode from table(snap_get_lock('DB_NAME')) as ll"
  • 查看错误代码信息:db2 ? 08003(SQLSTATE值) 可以获取sql错误含义
  • 查看当前DB2的版本:db2 "select * from sysibm.sysversions"
  • 查看DB2的TABLESPACE的状况:db2 "select * from sysibm.SYSTABLESPACES"
  • 启动DB2数据库服务:db2start
  • 激活数据库实例:db2 activate database DB_NAME
  • 查看激活状态的数据库:db2 list active databases
  • 查看失效数据库实例:db2 deactivate database DB_NAME
  • 关闭DB2数据库服务:db2stop
  • 查看DB2消耗资源多的SQL:db2top -d DB_NAME 其中db2top是连在一起的,查看消耗资源 按照提示按 l ,出现Application Handle,记录下资源消耗大的Application Handle(stat)q 退出
  • 测试SQL的执行性能:db2batch -d DB_NAME -f select_sql -r benchmark.txt -o p3其中select_sql 是要测试的语句

或者用DBvisualizer工具直接远程连接DB2数据库,通过SQL获取一些信息

  • 查看INDEX:select * from sysibm.sysindexes where TB_NAME=’XXXX’; 或者 describe indexes for table TB_NAME show detail;
  • 查看表字段信息:select * from sysibm.syscolumns where TB_NAME=’XXXX’
  • 快速清除一个大表:alter table TB_NAME activate not logged initally with empty table; 或者import from null_file of del replace into TB_NAME或者直接 truncate table TB_NAME;
  • 查询字符串中包含‘%’‘_’ ,要使用转义字符,例如SELECT * FROM TEST_INFO WHERE NAME like '%88!%%' escape '!'; 语句后面的escape '!'是定义一个转义字符, 紧跟着转义字符’!'后的%不再是统配符而是百分号。
  • 重命名数据库名: Rename old_tablename to new_tablename;
  • 创建索引:CREATE INDEX index_name ON tb_name(DT_DAY_ID, ...);
  • 查看表空间使用情况:
SELECT A.SNAPSHOT_TIMESTAMP,
A.TBSP_NAME,
B.TBSP_TYPE,
A.TBSP_STATE,
1.00 * A.TBSP_USABLE_PAGES * B.TBSP_PAGE_SIZE / 1024 / 1024 / 1024  AS TOTAL,
1.00 * A.TBSP_USED_PAGES * B.TBSP_PAGE_SIZE / 1024 / 1024 / 1024  AS USED,
1.00 * (A.TBSP_USABLE_PAGES - TBSP_USED_PAGES) * B.TBSP_PAGE_SIZE / 1024 / 1024 / 1024  AS FREE
FROM SYSIBMADM.SNAPTBSP_PART A
INNER JOIN SYSIBMADM.SNAPTBSP B
ON A.TBSP_ID = B.TBSP_ID;
  • 对已删除表的恢复:1.首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开);
    2.对要实施Drop Table Recovery的表空间(限regular tablespace),执行:alter tablespace 表空间名 dropped table recovery on
    3.用 list history dropped table all for DB_NAME 得到删除表的tableid和表结构的生成语句DDL,记录tableid和DDL。之后用drop命令删除的表中的数据可以在前滚恢复时导出。
  • 4
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值