DB2数据库运维脚本,在不断的持续更新中

由于个人的需要,写了一份数据库运维脚本。  写本脚本的用意是:   写一个自动收集数据库信息的脚本,这个脚本能把想要的数据保存到一个表格文件 中,方便excel等图表软件的处理。这些数据可以利用图表软件和word生 成定期的 维护报告。本脚本的终极目标是自己动手...显示全部
由于个人的需要,写了一份数据库运维脚本。  写本脚本的用意是:
   写一个自动收集数据库信息的脚本,这个脚本能把想要的数据保存到一个表格文件 中,方便excel等图表软件的处理。这些数据可以利用图表软件和word生 成定期的 维护报告。本脚本的终极目标是自己动手实现数据库日常运维的自动化。
   脚本主要定时收集数据库大小、数据库缓冲池、数据库表空间、锁、排 序、应用链接、自动存储路径的信息。

欢迎大家提出宝贵建议!{:3_57:}

附件:

附件图标test.sh (11.92 KB)

附件图标DPR.zip (2.66 MB)

附件图标checker.sh (12.02 KB)

附件图标collector.sh (19.84 KB)

附件图标getevmon.ksh (1.24 KB)

附件图标getsnap.ksh (1.46 KB)

附件图标dbcheck.sh (16.83 KB)

附件图标DBA脚本.doc (89.5 KB)

附件图标ibm_db-2.0.4.1-py2.7-win-amd64.egg (421.22 KB)

收起
参与136

查看其它 80 个回答ce97的回答

ce97ce97软件开发工程师某某某
DB2常用脚本  


列表
--db2 list db directory
删除用户
--db2 drop db mycfsm
强制停止所有应用
--db2 force application all  
备份数据库
--db2 backup db mycfsm to 'c:\' compress
恢复数据库
--db2 restore db cfsm from c:
DB2 8.2 恢复数据库要备份完整文件夹
--增加用户:计算机管理-本地用户和组-用户-添加到组里
查询错误代码
--db2 ? 错误码
连接数据库
--db2 connect to 数据库名 user 用户名 using 口令
定义游标并LOAD数据
--DB2 "DECLARE C1 CURSOR FOR SELECT * from 表名"
--DB2 "LOAD FROM C1 OF CURSOR MESSAGES LOG.TXT INSERT INTO Q_CF_COLLECT_INFO(表字段,要与游标中字段相对应)
DB2数据库系统字典表
--select * from sysibm.sysdummy1
表不活动解决
--terminate
给表添加唯一索引
--alter table user add unique index(user_id,user_name);
给已经有重复数据的表添加唯一索引
--alter ignore table user add unique index(user_id,user_name);
数值转换
--cast(column as int)
--cast('00003338.10' as decimal(17,2))
导出
--EXPORT TO 'D:\tool\Quest Software\Quest Central for DB2 v5.0\Data\BASPYWMX.del' OF DEL
  select dwbh,dwmc,xysbh,khzh,zhlx,jyfw,khrq,ssjgbm,ssjgmc,xjjgbm,sjjgbm,shjjgbm,khjgbm,dwdz,dwdh,lxrxm,lxrdh,beiy from "baspapp"."md_dwzl" where khrq='2008-10-10';
db2 "export to 'c:\a.ixf' of ixf select *from  tablename'";

DBase:db2常用命令及技巧
1.db2里面的字符串连接可用"||"这个进行连接

2.如何快速删除大批量的数据表(test为数据库表)
最常用也是最多人用的语句:delete from test,但这种做法,效率比较低,花费时间太长,因为在删除数据时,要记数据库日志。
import from /dev/null of del replace into test//先清空,再导入数据(由于导入的文件为空,故相当于清空表数据),这种删除的速度较快
ALTER TABLE test activate NOT LOGGED initially WITH EMPTY TABLE ;删除表中的数据,不记日志,这种处理最快

3.导入、导出数据,支持的文件有ixf,del文件
   db2 "export to 'c:\fileName.del' of del select * from tableName" //db2中把表中的数据导入到文件
   db2 "import from 'c:\fileName.del' of del insert into tableName " //db2中把文件中的数据导入到表

4.DB2中检查表是否已存在
select * from "SYSIBM"."SYSTABLES" where lower(name) ='afa_maintransdtl'

5.处理db2锁表问题:
db2 “connect to afa”
db2 “get snapshot for locks on 实例名”
db2 “terminate”
然后查看相关信息,找到被锁定的表,执行以下语句:
db2 “force application(application handle) 注:application handle对应的是一个整数

6.在服务器上创建存储过程时:
应为存储过程指定特定的换行符,然后执行下面的语句:
db2 -td@ -vf fileName.sql (其中@为存储过程中指定的换行符)

7. 查看索引是否起作用
runstats on table afa.yj_jywtk with distribution and detailed indexes all;

8.截取数据库快照:
db2 "connect to 实例名"
db2 "update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON"
db2 "get snapshot for all on 实例名"

9. 查看存储过程
select procname,text from sysibm.sysprocedures;

10.
list tables 查看数据库表

11.查找字符在字串中的位置
locate('y','xyz')
查找'y'在'xyz'中的位置。

12. 计算两个日期的相差天数
days(date('2007-03-01'))-days(date('2007-02-28'))
days 返回的是从 0001-01-01 开始计算的天数

13. 为一个用户访问另一个实例创建表映射
create alias tableName for 实例名. tableName

14.如何查看表结构
describe table tableName
or
describe select * from table_name

15.如何重新启动数据库?
  restart database database_name
  
16.如何激活数据库?
  activate database database_name
  
17.如何停止数据库?
  deactivate database database_name

18.如何重命名表?
  rename table_old to table_new

19.如何定义序列?
create sequence orderseq start with 1 increment by 1 no maxvalue no cycle cache24

20.如何查看一个表的索引
         describe indexes for t欢迎光临学网,收藏本篇文章 [1] [2]


$False$

able tableName show detail



1. create database
create db testdb on /cardpro/dbdir
2. create tablespace
create tablespace tbs2 managed by database using (device '/dev/rapplv2' 4640M, device '/dev/rapplv8' 4640M )
create tablespace tbs2 managed by database using  (file '/home/db2inst1/buff4000.dat' 25000)
3. connect database
connect to testdb user using
4. create table
CREATE TABLE ACL_FUNCTION(
    FUNCTION_ID     CHAR(10)    NOT NULL,
    FUNCTION_DES    CHAR(80),
    MODULE_ID       CHAR(10)    NOT NULL,
    BATRUN_STA      CHAR(1),
    MODIFY_TIME     CHAR(30),
    MODIFY_BY       CHAR(10),
    CONSTRAINT PKACL_FUNCTION PRIMARY KEY (FUNCTION_ID)
) IN TBS1
INDEX IN TBS6
5. create index
create index cb_finacc_acctno on cp_indacc(cb_fin_acctno)
6. select, delete, insert, update
1)  select * from acl_user where user_id='test'
   选择前3条记录:  select * from acl_user fetch first 3 rows only
   查询从第m条到第n条记录:
select * from  (select  ROW_NUMBER() over() as  a, acl_user.* from  acl_user) as  acl_user  where  a >=5  and  a<=30
2 )
insert into acl_screen_fun_map values('CCPM1900C','0',null,'CPM1900',null)
insert into acl_screen_fun_map (sceen_id, button_def) values ('CCPM1900C' , '0' )
3) delete from acl_user
    delete from acl_user where user_id='test'
4)update acl_user set user_id='newtest' where user_id='test'
7. 显示相关信息
显示当前活动数据库
db2 list active databases
显示命令选项
db2 list command options
显示系统数据库目录
db2 list db directory
显示表空间
db2 list tablespaces
db2 list tablespaces show detail
显示表空间容器
db2 list tablespace containers for tablespace-id
Example: db2 list tablespace containers for 1
显示表
db2 list tables for schema cardpro 显示用户为cardpro的所有表
db2 list tables     显示当前用户所有表
db2 list tables for system    显示所有系统表
显示当前用户数据库的存取权限
db2 get authorizations
显示当前数据库的活动进程
db2 list applications
db2 list application for db
db2 force application all : 关闭所有db2 的进程
显示数据库配置信息
db2 get db cfg for
显示db2 数据库管理程序配置
db2 get dbm cfg
显示表结构
db2 describe table
显示表索引
db2 describe indexes for table
8. 重新连接
connect reset
9. 中断数据库连接
disconnect
10.  lock table
lock table in exclusive mode
lock table in share mode
11. 修改数据库参数
1) 数据库配置参数
db2 update db cfg for using
eg: db2 update db cfg for testdb using LOGRETAIN on
2) 数据库管理器配置参数
db2 update dbm cfg using
db2 update dbm cfg using MON_HEAP_SZ 512
12. 启动实例
db2start
13. 停止实例
db2stop
db2stop force
14. 授权
ADD USER:
grant  createtab,connect on database to user cardpro
SCHEMA :
grant  createin,dropin,alterin on schema cardpro to user cardpro with grant option
TABLE :
grant  control on table cp_fintbl to user cardpro
grant  select,insert,update,delete,alter,index,references on table cp_fintbl to user cardpro with grant option
VIEW :
grant  control on v_syscolumns to user cardpro
grant  select,insert,delete,update on v_syscolumns to user cardpro with grant option
INDEX :
grant control on index wb_start_card_no to user cardpro
TABLESPACE :
grant use of tablespace userspace1 to user cardpro with grant option
15. 系统表说明
检查约束 syscat.checks
列 syscat.columns
检查约束引用的列 syscat.colchecks
关键字中使用的列 syscat.keycoluse
数据类型syscat.datatype
函数参数或函数结果 syscat.funcparms
参考约束 syscat.references
模式 syscat.schemata
表约束 syscat.tabconst
表 syscat.tables
触发器 syscat.triggers
用户定义函数 syscat.functions
视图 syscat.views
16. 多数据库联合查询(FEDERATED)
首先确认实例配置参数中FEDERATED值设为YES。
然后通过以下步骤达到在mbank库中访问cards24库cardpro.cp_banknm表的目的。
1) connect to mbank user cardpro using cardpro
2)  create wrapper drda
3)  create server db2sam type db2/nt version 7.2 wrapper drda authorization db2inst1 password cardpro4bos options(node 'p610', dbname 's24db')
注意,要将数据库cards24编目在本地节点上,node对于节点名,dbname对于数据库别名
例如:
catalog tcpip node p610 remote 10.168.4.18 server 50000
catalog db cards24 as s24db at node p610
4)  create user mapping for db2inst1 server db2sam options(remote_authid 'db2inst1', remote_password 'cardpro4bos')
5)  create nickname cardpro.cp_banknm for db2sam.cardpro.cp_banknm
之后,就可以在mbank数据库中用select语句查询,如select * from cardpro.cp_banknm。
17. 利用已有表生成表结构脚本
在命令窗口中利用db2look工具,可以生成表结构。
db2look -d -a -e -o
其中,-d 后跟数据库名,-a 是指针对所有用户,-o 后跟要输出的文件名。
如果希望输出某个用户创建的表,可以用 -u 参数。指定需要输出表结构的表名,可以用 -t 参数。
例如,数据库cards24中,对于db2inst1用户创建的cp_crdtbl表,可以用下面的语句生产表结构:
db2look -d cards24 -t cp_crdtbl -u db2inst1 -e -o cp_crdtbl.sql
生成的脚本文件可以用 db2 -svtf 文件名 来执行。
18. 在命令行下执行DB2脚本(script)
在命令窗口中运行DB2脚本,可用 db2 -svtf 脚本文件名 来实现。
例如,脚本文件名为sample.sql,运行:db2 -svtf sample.sql参数中:
s 代表遇到错误时中止运行脚本
v 代表输出结果到屏幕
t 指以;号作为每行的分隔符
f 指后面需跟脚本文件名
如果希望即使遇到错误也不要中止运行脚本可以去掉参数s。
如果脚本中没有分隔符,应去掉参数t。
如果脚步中分隔符为其他字符,请用-td后接所使用的分隔符,例如如果使用的分隔符为@,可以用db2 -td@ -svf 脚本文件名 来执行脚本。
系统集成 · 2014-04-03
浏览1294

回答者

ce97
ce974612
软件开发工程师某某某
擅长领域: 数据库大数据中间件

ce97 最近回答过的问题

回答状态

  • 发布时间:2014-04-03
  • 关注会员:14 人
  • 回答浏览:1294
  • X社区推广