`
jiaoqf321456
  • 浏览: 10190 次
文章分类
社区版块
存档分类
最新评论

DB2数据库的学习及总结

 
阅读更多

db2命令
给db2用赋权的命令
db2 grant dbadm on database to user dsp
#导出数据库结构会生成一个faldb20160224.sql文件
db2look -d udep -e -a -x -i dsp -w dsp -o dsp20160504.sql

导出所属scheme:dsp的所有表结构的命令如下
db2look -d tyfx -e -z dsp -o udep.ddl
语法: db2look -d DBname [-u Creator] [-s] [-g] [-a] [-t Tname1 Tname2...TnameN]

[-p] [-o Fname] [-i userID] [-w password]
db2look -d DBname [-u Creator] [-a] [-e] [-t Tname1 Tname2...TnameN]
[-m] [-c] [-r] [-x] [-l] [-f] [-o Fname] [-i userID] [
-w password]
db2look [-h]

-d: 数据库名:这必须指定

-a: 为所有创建者生成统计信息
-c: 不要生成模拟的 COMMIT 语句
-e: 抽取复制数据库所需要的 DDL 文件
-g: 使用图形来显示索引的页取装对
-h: 更详细的帮助信息
-m: 在模拟方式下运行 db2look 实用程序
-o: 将输出重定向到给定的文件名
-p: 使用简单文本格式
-r: 不要生成模拟的 RUNSTATS 语句
-s: 生成 postscript 文件
-t: 生成指定表的统计信息
-x: 生成“权限”语句 DDL
-l: 生成数据库布局:节点组、缓冲池和表空间
-f: 抽取配置参数和环境变量
-u: 创建者 ID:若 -u 和 -a 都未指定,则将使用 $USER
-i: 注册到数据库驻留的服务器时所使用的用户 ID
-w: 注册到数据库驻留的服务器时所使用的口令
#生成faldb20160224.sql文件之后要执行这个文件
db2 -tvf faldb20160224.sql

db2 [option ...] [db2-command | sql-statement |
[? [phrase | message | sqlstate | class-code]]]
选项:-a, -c, -e{c|s}, -finfile, -lhistfile, -n, -o, -p, -rreport, -s, -t,
-td;, -v, -w, -x, -zoutputfile。

选项 说明 缺省设置
-------------------------------------------------------------
-a 显示 SQLCA OFF
-c 自动落实 ON
-e 显示 SQLCODE/SQLSTATE OFF
-f 读取输入文件 OFF
-l 将命令记录到历史文件中 OFF
-n 除去换行字符 OFF
-o 显示输出 ON
-p 显示 db2 交互式提示 ON
-r 将输出报告保存到文件 OFF
-s 在命令出错时停止执行 OFF
-t 设置语句终止字符 OFF
-v 回送当前命令 OFF
-w 显示 FETCH/SELECT 警告信息 ON
-x 不打印列标题 OFF
-z 将所有输出保存到输出文件 OFF

注意:
使用 DB2OPTIONS 环境变量定制选项缺省值。
紧跟选项字母后的减号(-)使该选项关闭。
在交互方式或文件输入方式下使用 UPDATE COMMAND OPTIONS
更改选项设置。

select 'db2 "export to '||table_name||'.ixf of ixf select * from CUSTRISK.'||table_name||'"' from sysibm.TABLES where TABLE_SCHEMA='CUSTRISK'


select 'db2 "import from '||table_name||'.ixf of ixf commitcount 500 messages msg.out insert into CUSTRISK.'||table_name||'"' from sysibm.TABLES where TABLE_SCHEMA='CUSTRISK'


从数据库里在一张表中随机的抽取10条记录的db2SQL 语句是:
select * from moiamds.p_mon_dsm_cdt order by rand() FETCH FIRST 10 ROWS ONLY
启动db2数据库的命令是: db2start
关闭db2数据库的命令是: db2stop

命令提示符里连接db2数据库的命令是: db2 connect to moia user moiamds using moiamds

导出一张表里的数据的命令是:db2 "export to F:\IMP\p_mon_dsm_cdt.txt of del select * from MOIAMDS.P_MON_DSM_CDT"
IMPORT FROM employee.ixf OF IXF REPLACE_CREATE INTO employee_copy;
(REPLACE_CREATE 这个参数表示如果employee_copy数据表已经存在,则先清空数据表中的数据然后将ixf 中的数据导入,如果employee_copy 数据表不存在,则会先建立该表,然后将数据导入。)
导入数据到一张表中的命令式:db2 "import from tg.txt of del insert into MOIAMDS.P_MON_TAB_ONE"


如果对一张表进行操作的时候报因为表不活动,所以不能对表操作,解决方法:reorg table ---表名;


如果报事务日志已满的解决办法
DB2COPY2->命令行处理工具->命令行处理器—> db2 get db cfg for mds
db2 update db cfg for mds using logfilsiz 6000

db2显示表空间的语句:db2 list tablespaces show detail


去基线导出数据的方法:197.3.6.1上去导出数据的方法:
moiase@/home/mds/file/tmp> db2 connect to moia user moiamds using moiamds
moiase@/home/mds/file/tmp> db2 "export to P_DQM_SERVICE_CASE_TAB.ixf of ixf select * from moiamds.P_DQM_SERVICE_CASE_TAB"
导出成功! 把它用在本地用E:JDK API ftp 197.3.6.1
输入user:moiase pwd:moiase
连接成功 ; ftp>get P_DQM_SERVICE_CASE_TAB.ixf 回车 现在自己的计算机e:盘JDK API 下就存在了P_DQM_SERVICE_CASE_TAB.ixf文件

查看db2的所有的连接:db2 list applications 断开所有的连接:db2 force applications all


db2 去执行配置文件的方法:
如:在D:盘建一个myscript.txt文件输入:
!db2start;
connect to moia user moiamds using moiamds;
select * from emp;
terminate;
就可以在命令提示符里输入db2cmd 然后输入:db2 -tf D:\myscript.txt

查看db2的数据库分区方法:
db2 list node directory //查询编目录(节点)
db2 list db directory //查询编目录下边具体有哪些库
db2 connnect to mds user mdsuser using mdsuser //连接数据库

创建备份表的sql语句:
create table new_table as (select * from old_table) definition only;

备份数据:insert into new_table select * from old_table;

excel 数据导入到DB2数据库的方法1(先把excel文件另存为.csv文件,放到d盘,然后执行下面的sql)
import from "d:/test.csv" of del messages "d:/msg.out" insert into M_CM_PROD_PRODUCT_ATTRIBUTE;
---------------------------------------------------------------------------------------------------------------------------------------------------------
查看db2数据库最大连接数的命令:
查看当前活动的实例的命令: db2ilist
查看当前活动的实例下的数据库的命令:db2 list db directory
创建一个新的实例下创建数据库的命令:db2icrt newinstance(实例);
删除实例的命令: db2idrop instancename;
set db2instance = 实例;
db2start;
db2 create database 数据库名
连接到数据库后,用db2 get db cfg for database查看一下maxappls和avg_appls的数值。
用db2 update db cfg for database using maxappls number试试把maxappls设置得更大些。
-----------------------------------------------------------------
db2给数据库更改表名的命令:rename table rep_data_04 to rep_data_04_20130528
------------------------------------------------------------------------------
linux系统下重启db2数据库的命令
db2 force applications all
db2stop
db2start
db2 backup db sample on all dbpartitionnums
重启成功---------------------------------------
---------db2只能增加字段的长度(varchar和另外两个)不能dorp掉字段,只能drop掉表,新建表导入数据
修改字段的命令:alter table log_data_11 ALTER nm_rep SET DATA TYPE varchar(200);
-----------------统计字段的出现相同值的行数的sql---------------
select count(formula) as sum, formula from code_formula group by formula


1. 从命令窗口创建一个名为newinst 新实例
db2icrt newinst
2. 在这个新实例newinst 中,使用默认值创建一个名为newdb 的数据库
set db2instance=newinst
db2start
db2 create database newdb
3. 列出服务器上所有的实例
db2ilist
4. 转换到DB2 实例,并确认转换成功
set db2instance=db2
db2 get instance
5. 把dbm cfg 的FEDERATED 参数值由NO 改为YES 并验证修改的结果。
db2 update dbm cfg using FEDERATED YES
db2 force applications all
db2 terminate
db2stop
db2start
db2 get dbm cfg
6. 使用登录操作系统的用户名和密码连接SAMPLE 数据库
db2 connect to sample user <userID> using <psw>
7. 查看当前实例上有多少应用程序在运行
db2 list applications show detail
8. 打开另一个DB2 命令窗口,不指明用户名和密码连接到SAMPLE 数据库。然后查看当前有
多少应用连接到该实例上。
db2 connect to sample
db2 list applications
9. 强制关闭一个DB2 命令窗口
db2 force <application> (<application> 填入程序“b2bp.exe”的句柄,该值由db2 list applications命令获得)
10. 删除实例newins
db2idrop newinst
11. 删除并重新创建DAS,然后启动DAS。
db2admin stop
db2admin drop
db2admin create
db2admin start
12. 在您的实例中设置DB2 注册变量DB2COMM,使其值为tcpip,npipe。
db2set db2comm=tcpip,npipe
db2stop
db2start
13. 置空DB2COMM 注册变量
db2set db2comm=
db2stop
db2start
14. 检查当前db cfg 的LOGSECOND 参数,然后将其值设置成5 并验证新值
db2 connect to sample
db2 get db cfg
db2 update db cfg using LOGSECOND 5
db2 get db cf
------------------db2(标识列)中创建一张表,这张表的一个字段从100开始并且以100增加----------
CREATE TABLE subscriber(subscriberID INTEGER GENERATED ALWAYS AS
IDENTITY (START WITH 100
INCREMENT BY 100),
firstname VARCHAR(50),
lastname VARCHAR(50) )
在这个例子中,列subscriberID 是INTEGER 类型,被定义为标识列并且是常规定义。其值将
从100 开始,按增量100 增加
-------序列对象产生整个数据库的一个唯一值。跟标识列不一样的是,序列独立于数据表。下面提供一个例子:
CREATE TABLE t1 (salary int)
CREATE SEQUENCE myseq
START WITH 10
INCREMENT BY 1
NO CYCLE
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
INSERT INTO t1 VALUES (nextval for myseq)
SELECT * FROM t1
SALARY
------------------------------------------------------
10
11
12
3 record(s) selected.
SELECT prevval for myseq FROM sysibm.sysdummy1
1
----------------------------------------------------------------------------------------------------------------------------------
db2move 工具
Export,Import 和Load 每次都只对一个表进行操作。但是您若使用它们来写一段脚本,就可对
一个数据库中的所有的表进行操作。另一个工具db2move 可以更方便地完成同样的工作。db2move
工具只兼容IXF 格式的文件,而且IXF 文件的名字由db2move 自动生成。下面的例子展示怎么样使
用db2move 并结合export 和import 选项来对SAMPLE 数据库进行整体操作。
导出
db2move faldb export -u slsadmin -p slsadmin
导入
db2move faldb import -u slsadmin -p slsadmin
导出固定schema的语句如下
db2move tyfx(db) export -sn dsp(schema) -u dsp -p dsp
----------------------------------------------------db2load----------------------------------------------------------------
下面的例子将IXF 格式的employee.ixf 文件里面的所有数据导入到表employee_copy。
REPLACE 是LOAD 工具所提供的众多选项之一。它表示将替换employee_copy 表中的所有数据。
LOAD FROM employee.ixf OF IXF REPLACE INTO employee_copy
执行完上面的命令后,该表进入检查暂挂状态。这时您必须运行SET INTEGRITY 命令来检查数据的一致性,下面是执行SET INTEGRITY 的例子:
SET INTEGRITY FOR employee_copy ALL IMMEDIATE UNCHECKE
----------------------------------------------------给用户赋权的命令--------------------------------------------------------
DBADM(DataBase ADMinistrator)是数据库的超级用户。它不是实例层次的权限,所以它没有在前一节中列出,要想授予DBADM 权限,使用GRANT 语句,如下面的例子所示:
connect to sample
grant DBADM on database to user <userid>
--------------如果您想要备份udep 数据库到路径/home/db2inst1/backup,您可以在DB2 Window/Linux 命令行解释器中执行这条命令------
db2 BACKUP DB sample TO C:\BACKUPS;
例如: db2 backup db udep to /home/db2inst1/backup/ compress
备份的文件结构如下

备份完成之后,如果要发生重大灾难,如:DB2 DROP DATABASE UDEP
然后数据库就不存在了,进行数据恢复如下:


命令如下:db2 restore db udep incremental from /home/db2inst1/backup taken at 20160525204710
----------查询的db2的版本的命令------------------------------------------------------------
SELECT service_level, fixpack_num FROM TABLE(sysproc.env_get_inst_info())as INSTANCEINFO
-------------------------------linux上新安装的DB2---------------------------------------------------
db2查看修改端口号

db2安装完成后,tcp/ip连接端口默认为50000,可通过下面的方法确认:

1、使用命令 db2 get dbm cfg
找到"SVCENAME" 查找到TCP/IP 服务名
www.2cto.com
2、到系统配置文件里找到service name 对应的 port number
windows:查看 c:\windows\system32\drivers\etc\services
aix: 查看 /etc/services
如下:
DB2_DB2 60000/tcp
DB2_DB2_1 60001/tcp
DB2_DB2_2 60002/tcp
DB2_DB2_END 60003/tcp
db2c_DB2 50000/tcp
-----------------------------------------------------------
1,先切换到db2inst1用户下,
su - db2inst1
2,查看当前活动的实例
db2ilist
3,切换到当前实例下,
set db2instance = 实例
4,在该实例下创建数据库
----DB2 数据库一旦创建就无法再修改字符集的编码方式了。
----可以在创建的时候指定字符集,如下指定为GBK:
----create db SRCDB using codeset GBK territory CN
db2 create database custrisk
5,为该数据库创建用户和密码(用户名和密码不要超过8个字符,用户名不能大写)
useradd custrisk
passwd custrisk 输入密码:custrisk
创建完成后创建schema,命令如下
CONNECT TO UDEP USER dsp;
------------------------------------------------
-- DDL Statements for Schemas
------------------------------------------------
CREATE SCHEMA "DSP " AUTHORIZATION "DSP ";
---------------创建完成之后必须从起server才能够用创建的用户连接该数据库
6,创建缓冲池
---先连接db2
db2 connect to custrisk
db2 create bufferpool udeptmp32k all nodes size 9060 pagesize 32k //100*1024%32
7,创建表空间
db2 "create regular tablespace eastsp pagesize 32k managed by database using(file '/home/db2inst1/east' 5g) bufferpool udeptmp32k"
@命令创建临时表空间
db2 "create USER TEMPORARY TABLESPACE TEMPSPACE2 pagesize 32k managed by database using(file '/home/db2inst2/faldbtemp' 2g) bufferpool faltmp32k"
@命令创建系统表空间
db2 "create system TEMPORARY TABLESPACE TEMPSPACE3 pagesize 32k managed by database using(file '/home/db2inst2/faldbtemp3' 2g) bufferpool faltmp32k"

8,把表空间赋给用户
db2 grant use of tablespace TEMPSPACE3 to user slsadmin
9,没有什么默认的表空间
创建表的时候必须指定如:
create table test(userid varchar(5),username varchar(20)) in custrisk
-------------------------------------------------------------------------------------------------------------------

创建缓冲池:create bufferpool dsppool size 1000 pagesize 32k;
create tablespace newtbs pagesize 32k managed by system using (file '/home/db2' 300M) bufferpool dsppool
db2 list tablespaces;
db2 list tablespaces contraners for 4 {4为上边查出的id}


=================================================DB2创建触发器的例子===================================================
-- 建表语句
CREATE TABLE WANGZSTABLE (
ID INTEGER NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE VARCHAR(20) NOT NULL,
STATUS VARCHAR(10),
CREATETIME TIMESTAMP,
UPDATETIME TIMESTAMP,
SENDTIME TIMESTAMP
)

select * from wangzsTable;
insert into WANGZSTABLE(id,name,age) values(1,'wangzs1','26');
update WANGZSTABLE set status='4' where id=1;

--update 更新特定状态 status=4
DROP TRIGGER "WANGZS_UPDATE";

CREATE TRIGGER WANGZS_UPDATE
AFTER UPDATE OF STATUS ON WANGZSTABLE
REFERENCING OLD AS OLDROW NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
IF(NEWROW.STATUS='4')
THEN
update wangzsTable set UPDATETIME=CURRENT TIMESTAMP where id=NEWROW.id;
END IF;
END;

--update 更新特定id
DROP TRIGGER "WANGZS_UPDATE";

CREATE TRIGGER WANGZS_UPDATE
AFTER UPDATE OF STATUS ON WANGZSTABLE
REFERENCING OLD AS OLDROW NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
update wangzsTable set UPDATETIME=CURRENT TIMESTAMP where id=NEWROW.id;
END;

--insert
DROP TRIGGER "WANGZS_INSERT";

CREATE TRIGGER WANGZS_INSERT
AFTER INSERT ON WANGZSTABLE
REFERENCING NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
update wangzsTable set CREATETIME=CURRENT TIMESTAMP where id=NEWROW.id;
END;

=======================================================================================================================


分享到:
评论

相关推荐

    最基础的db2数据库学习总结.pdf

    最基础的db2数据库学习总结.pdf

    最基础的db2数据库学习总结分享.pdf

    最基础的db2数据库学习总结分享.pdf

    最基础的db2数据库学习总结终稿.pdf

    最基础的db2数据库学习总结终稿.pdf

    DB2数据库的学习资料

    内容概要:DB2的安装、使用、DB2命令、DB2数据库常见问题及及决方案 适合人群:工作中需要用到DB2,所以做了总结笔记 能学到什么:很多大厂使用DB2的,这份资料就是买不到的,关于DB2的教程

    DB2使用经验总结+DB2数据库性能优化的几个小技巧

    我实习的DB2学习总结~ 包括自己的学习db2的经验总结,与大家分享

    db2学习笔记(个人总结)

    总结了db2学习笔记,其中重点总结了oracle、mysql、db2三种数据库的分页

    DB2学习总结.pdf

    DB2数据库应用实战开发总结。文档编写是基于实际项目应用出发,从数库软件安装、数据库实例、用户创建、数据库参数修改、数据库导入导出、数据库常用函数、DB2数据开发应用注意事项、常用数据库优化方式做相应的总结...

    db2 个人独家整理

    很多XD的要求,现在下调,下了一定...db2教程-db2数据库的备份和恢复; db2教程-DB2优化; db2教程-DB2中的限制; db2教程-我用DB2这些年; 等等...有关很多DB2知识全汇,下载的朋友只希望对你们有所帮助,也不枉我辛苦整理.

    IBM DB2培训ppt

    IBM DB2培训ppt,pdf格式的 答案: 一:dbbbda 二:aaabcdccc 三:d 四:1c 2b 2b 5c 6d 8d 9c12c 14d 五:caaac 六:adbdb 七:bacadbd 八:cddba 九:BBDACA 8-C

    Oracle数据库学习指南

    43. 手工创建数据库的全部脚本及说明 44. 提高Oracle数据库应用系统安全的举例与分析 45. 在ORACLE7数据库并发控制技术的研究及其应用 46. 在SQLPlus中insert进的都是中文的,为什么一存入服务器后,再select出的...

    迁移 DB2 V7 数据库到 DB2 UDB Version 8.1

    学习最新版 DB2 的优点,以及迁移到这一版本是多么容易。本文总结了 V8.1.4 更新版的新功能和增强功能。然后讨论了完整的迁移过程,包括准备、实际迁移和迁移后的任务。突出了提示和技巧,以帮助您执行顺畅而没有...

    《MySQL数据库入门》教学设计.docx

    最后向同学介绍几种常见的数据库产品,如:Oracle,SQL Server,DB2,MongoDB、SQL Server、MySQL以及他们各自的特点。 (4)如何安装和配置MySQL? 教师首先向学生演示如何在MySQL官网上,下载适用于Windows平台的...

    深入解析DB2--高级管理,内部体系结构与诊断案例.part1.rar

    第1章 性能调整概述 1.1 性能概述 1.2 性能评估 1.3 建立性能目标 1.4 什么时候需要做性能调整 1.5 性能调整准则 1.6 性能调整的方法和过程 ...12.5 调优学习案例:利用压力测试程序学习DB2调优 后记

    软件测试+性能测试模板

    软件测试 性能测试 性能测试报告 系统性能测试方案 性能测试经验 测试模板 “苍蝇式的战斗精神”和“XX性能...测试您的 DB2 数据库 用 JMeter 测量性能.mht 一步一步和我学Apache JMeter.doc 运用Jmeter进行测试.doc

    软件测试 性能测试 性能测试报告 系统性能测试方案 性能测试经验 测试模板

    软件测试 性能测试 性能测试报告 系统性能测试方案 性能测试经验 测试模板 ...测试您的 DB2 数据库 用 JMeter 测量性能.mht 一步一步和我学Apache JMeter.doc 运用Jmeter进行测试.doc 第三次了 再上传不成功我就不传了

    asp.net知识库

    简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库访问类 DataTable.Select方法的性能问题 .NET 2.0里使用强类型数据创建多层应用 ADO.NET实用经验无保留曝光 有了...

    MavenFuzzyFactory_Project:SQL项目,用于分析不断发展的业务并收集相关信息,以帮助指导公司的未来

    掌握结构化查询语言(SQL)的技能并学习如何使用基本命令(例如聚合函数,联接,大小写等),以便从数据库中检索相关信息以进行可视化。 数据库 该项目中使用的数据库由Maven Analytics的John Pauler提供,他授权在...

    Linux常用命令汇总

    十二 月,IBM发布了适用于Linux的文件系统AFS 3.5以及Jikes Java 编辑器和Secure Mailer及DB2测试版,IBM的此番行为,可以看作是与Linux羞答答地第一次亲密接触。迫于Windows和Linux的压力,Sun逐渐开放 了Java协议...

    软件专业调研报告(2).doc

    熟悉DB2、ORCALE、MS SQL SERVER数据库其中一种; 5、有较强的新技术学习能力,和良好的沟通能力和理解能力。 2)Android程序员 职位描述: 1、负责Android平台下的APP应用开发; 2、能根据需求开发应用程序,完成...

    软件专业调研报告.doc

    熟悉DB2、ORCALE、MS SQL SERVER数据库其中一种; 5、有较强的新技术学习能力,和良好的沟通能力和理解能力。 2)Android程序员 职位描述: 1、负责Android平台下的APP应用开发; 2、能根据需求开发应用程序,完成...

Global site tag (gtag.js) - Google Analytics