1. 首页 > 知识 > 数据库

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 get db cfg for DB_NAME看到,此命令可以将当前首活动日志文件之前的归档日志文件全部删除

手工归档产生日志命令: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_NAME 或 db2 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 是要测试的语句

查看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命令删除的表中的数据可以在前滚恢复时导出。


本文由傻鸟发布,不代表傻鸟立场,转载联系作者并注明出处:https://www.shaniao.net/database/133.html

加载中~

联系我们

在线咨询:点击这里给我发消息

微信号:

工作日:10:30-15:30,节假日休息