楼主: sunny_zhao0127

db2 学习笔记总结

[复制链接]
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
11#
 楼主| 发表于 2013-5-23 14:21 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-5-24 17:31 编辑

创建系统临时表空间
CREATE SYSTEM TEMPORARY TABLESPACE (NAME) MANAGED BY SYSTEM  USING ('<Directories>')
删除系统表空间

DROP TABLESPACE (NAME)


DMS 表空间的优点:
1 通过使用 ALTER TABLESPACE语句 可添加 或扩展容器来增加表空间的大小
现有数据可以自动在新的容器集合中重新平衡 已保存最佳的I/O效率
2 根据存储的数据的类型
可以把一个表长字段(LF)和大对象数据(LOB) 索引 和常规表数据分割存放在多个表空间中
已提高性能和空间存储容量。通过分割表数据,可以提高性能和增加每个表存储的数据库量



裸设备 裸分区  
raw partition 一个没有被加载 到操作系统的文件系统上的磁盘分区


禁用文件系统级高速缓存:
ALTER TABLESPACE TABLE_SPACE_NAME ... ON FILE SYSTEM CACHING

对现有表空间启用文件系统级高速缓存
ALTER TABLESPACE TABLE_APACE_NAME  … FILE SYSTEM CACHING


OVERHEAD TRANSFERRATE



缓冲池
指的是从磁盘读取表和索引数据时
数据库管理器分配的用于高速缓存这些表或者索引数据的内存区域。
IBMDEFAULTBP 默认缓冲池
IBMSYSTEMBP4K
IBMSYSTEMBP8K
IBMSYSTEMBP16K
IBMSYSTEMBP32K

create schema agent AUTHORIZATION db2inst1

drop SCHEMA <NAME> RESTRICT
DROP SCHEMA agent RESTRICT



使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
12#
 楼主| 发表于 2013-5-23 16:25 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-5-30 15:26 编辑


同构平台间的数据迁移
异构平台间的数据迁移
灾难或故障情况下的数据挽回(db2dart)

定界 ASCII格式(del)是DB2用于数据交换的最常用格式
最主要的分隔符:字符分隔符("") 列分隔符(,) 行分隔符(换行符)

asc格式
定长 ASCII (ASC) 格式
这种文件类型包含定长的ASCII 数据 每个数据长度与列定义相同 不足的用空格补齐
行与行之间通过换行符分割

游标 比较适合表间数据迁移 只有LOAD支持游标
EG:
DECLARE mycur CURSOR FOR SELECT COL1,COL2,col3,…… FROM TAB1;
LOAD FROM mycur of CURSOR INSERT INTO NEWtab;

export
export to filename 用来指定将导出的数据放在<filename>文件中,
of filetype 指定导出文件的格式, 如IXF、DEL 或WSF 等。
messages 用来保存导出过程中发生的错误或警告信息.
select-statement 通过 SQL 语句指定导出的数据.
eg :
db2 "export to employee.del of del messages emp.msg select * from employee"
db2 "export to employee.del of del monified by CHARDEL '' message emp.msg select * from employee" -- 选用'' 作为字符串的定界符 而不是 默认的双引号""

导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinfile,大对象字段的所有值都保存到一个文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinfile select
* from emp_resume"
 导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinsepfiles,大对象字段的每个值都存在一个独立的文件中,代码如下:
db2 "export to emp_resume.del  of del lobs to d:\temp\lobs modified by lobsinsepfiles
select * from emp_resume"

定界 ASCII格式(del)是DB2用于数据交换的最常用格式
最主要的分隔符:字符分隔符("") 列分隔符(,) 行分隔符(换行符)

asc格式
定长 ASCII (ASC) 格式
这种文件类型包含定长的ASCII 数据 每个数据长度与列定义相同 不足的用空格补齐
行与行之间通过换行符分割

游标 比较适合表间数据迁移 只有LOAD支持游标
EG:
DECLARE mycur CURSOR FOR SELECT COL1,COL2,col3,…… FROM TAB1;
LOAD FROM mycur of CURSOR INSERT INTO NEWtab;

export
export to filename 用来指定将导出的数据放在<filename>文件中,
of filetype 指定导出文件的格式, 如IXF、DEL 或WSF 等。
messages 用来保存导出过程中发生的错误或警告信息.
select-statement 通过 SQL 语句指定导出的数据.
eg :
db2 "export to employee.del of del messages emp.msg select * from employee"
db2 "export to employee.del of del monified by CHARDEL '' message emp.msg select * from employee" -- 选用'' 作为字符串的定界符 而不是 默认的双引号""

导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinfile,大对象字段的所有值都保存到一个文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinfile select
* from emp_resume"
 导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinsepfiles,大对象字段的每个值都存在一个独立的文件中,代码如下:
db2 "export to emp_resume.del  of del lobs to d:\temp\lobs modified by lobsinsepfiles
select * from emp_resume"


import

Import 用来将文件里的数据导入到表中,是export 操作的逆向过程。
import from <filename> 指定导入文件的位置和名字,
of <filetype>指定输入文件的类型,如DEL、IXF 或ASC 等.
messages 用来记录导入过程中发生的错误或警告信息。
<Action> INTO table-name 用来指定导入数据的几种方式,目前支持insert,insert_update,
replace,replace_create 和create.
9.7 版本以后replace_create 和create 将不再支持.
insert 用于追加,不改变表中已有数据.
insert_update 用于表中有主键的情况,如果导入数据与表中数据主键匹配,则update,否则insert 追加。
replace 首先删除表数据,然后插入输入文件数据.由于replace 会首先清空数据,所以
建议先做好备份。
commitcount 和restartcount.
commitcount 参数的主要目的是避免事务日志满和锁升级.commitcount <N/automatic>表示
每导入N 行数据后提交一次,而不是等所有数据都导入才提交.automatic 表示DB2 内部会自动
计算什么时候提交,默认情况下,DB2 会自动使用automatic 选项。
restartcount/skipcount N 表示跳过文件前N 行数据,而从第N+1 开始继续导入。该选项一般
用于导入过程中出现了错误,有些数据已经提交入库了,重新导入时就可以忽略这些已经入库
的数据.
在默认情况下,import 会在目标表加X 锁(排他锁),不允许其他应用访问(allow no access)。
如果import 允许其他应用读和写,可指定allow write access 选项,这时import 会在目标表上加
IX 锁,但该选项只能用于insert 或insert_update 操作


db2 "import from employee.del of del messages emp.msg insert into employee"

将 employee.del 文件数据导入到employee 表中,在文件中,字符串用“' '”分隔,而
不是默认的“" "”。allow write access 允许其他应用读或写,commitcount automatic 允
许import 命令自动选择何时提交,代码如下:
db2 "import from employee.del of del modified by CHARDEL'' allow write access
commitcount automatic insert into employee"
将大对象数据导入到表中lobs from 指定大对象数据的位置,代码如下:
db2 "import from emp_resume.del of del lobs from d:\temp\lobs modified by lobsinfile
insert into emp_resume"












使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
13#
 楼主| 发表于 2013-5-23 16:25 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-5-24 17:31 编辑

定界 ASCII格式(del)是DB2用于数据交换的最常用格式
最主要的分隔符:字符分隔符("") 列分隔符(,) 行分隔符(换行符)

asc格式
定长 ASCII (ASC) 格式
这种文件类型包含定长的ASCII 数据 每个数据长度与列定义相同 不足的用空格补齐
行与行之间通过换行符分割

游标 比较适合表间数据迁移 只有LOAD支持游标
EG:
DECLARE mycur CURSOR FOR SELECT COL1,COL2,col3,…… FROM TAB1;
LOAD FROM mycur of CURSOR INSERT INTO NEWtab;

export
export to filename 用来指定将导出的数据放在<filename>文件中,
of filetype 指定导出文件的格式, 如IXF、DEL 或WSF 等。
messages 用来保存导出过程中发生的错误或警告信息.
select-statement 通过 SQL 语句指定导出的数据.
eg :
db2 "export to employee.del of del messages emp.msg select * from employee"
db2 "export to employee.del of del monified by CHARDEL '' message emp.msg select * from employee" -- 选用'' 作为字符串的定界符 而不是 默认的双引号""

导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinfile,大对象字段的所有值都保存到一个文件中,代码如下:
db2 "export to emp_resume.del of del lobs to d:\temp\lobs modified by lobsinfile select
* from emp_resume"
导出 emp_resume 表数据,并将大对象数据存放到lobs to 指定的目录下,通过指定
modified by lobsinsepfiles,大对象字段的每个值都存在一个独立的文件中,代码如下:
db2 "export to emp_resume.del  of del lobs to d:\temp\lobs modified by lobsinsepfiles
select * from emp_resume"




import

Import 用来将文件里的数据导入到表中,是export 操作的逆向过程。
import from <filename> 指定导入文件的位置和名字,
of <filetype>指定输入文件的类型,如DEL、IXF 或ASC 等.
messages 用来记录导入过程中发生的错误或警告信息。
<Action> INTO table-name 用来指定导入数据的几种方式,目前支持insert,insert_update,
replace,replace_create 和create.
9.7 版本以后replace_create 和create 将不再支持.
insert 用于追加,不改变表中已有数据.
insert_update 用于表中有主键的情况,如果导入数据与表中数据主键匹配,则update,否则insert 追加。
replace 首先删除表数据,然后插入输入文件数据.由于replace 会首先清空数据,所以
建议先做好备份。
commitcount 和restartcount.
commitcount 参数的主要目的是避免事务日志满和锁升级.commitcount <N/automatic>表示
每导入N 行数据后提交一次,而不是等所有数据都导入才提交.automatic 表示DB2 内部会自动
计算什么时候提交,默认情况下,DB2 会自动使用automatic 选项。
restartcount/skipcount N 表示跳过文件前N 行数据,而从第N+1 开始继续导入。该选项一般
用于导入过程中出现了错误,有些数据已经提交入库了,重新导入时就可以忽略这些已经入库
的数据.
在默认情况下,import 会在目标表加X 锁(排他锁),不允许其他应用访问(allow no access)。
如果import 允许其他应用读和写,可指定allow write access 选项,这时import 会在目标表上加
IX 锁,但该选项只能用于insert 或insert_update 操作


db2 "import from employee.del of del messages emp.msg insert into employee"

将 employee.del 文件数据导入到employee 表中,在文件中,字符串用“' '”分隔,而
不是默认的“" "”。allow write access 允许其他应用读或写,commitcount automatic 允
许import 命令自动选择何时提交,代码如下:
db2 "import from employee.del of del modified by CHARDEL'' allow write access
commitcount automatic insert into employee"
将大对象数据导入到表中lobs from 指定大对象数据的位置,代码如下:
db2 "import from emp_resume.del of del lobs from d:\temp\lobs modified by lobsinfile
insert into emp_resume"

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
14#
 楼主| 发表于 2013-5-28 16:46 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-5-28 16:50 编辑

db2 get snapshot for tablespaces on sample |more:
Tablespace name                            = SYSCATSPACE
Container Name                           = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000000/C0000000.CAT
Tablespace name                            = TEMPSPACE1
Container Name                           = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000001/C0000000.TMP
Tablespace name                            = USERSPACE1
Container Name                           = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000002/C0000000.LRG
Tablespace name                            = IBMDB2SAMPLEREL
Container Name                           = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000003/C0000000.LRG
Tablespace name                            = IBMDB2SAMPLEXML
  Container Name                           = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000004/C0000000.LRG
  Tablespace name                            = SYSTOOLSPACE
Container Name                           = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000005/C0000000.LRG
db2 list tablespaces show detail:

db2 list tablespace containers for 5:

            Tablespace Containers for Tablespace 5

Container ID                         = 0
Name                                 = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000005/C0000000.LRG
Type                                 = File
db2 list tablespace containers for 5 show detail:

            Tablespace Containers for Tablespace 5

Container ID                         = 0
Name                                 = /home/db2inst1/db2inst1/NODE0000/SAMPLE/T0000005/C0000000.LRG
Type                                 = File
Total pages                          = 4096
Useable pages                        = 4092
Accessible                           = Yes



使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
15#
 楼主| 发表于 2013-5-28 17:02 | 只看该作者
ALTER TABLESPACE sp_name BEGIN NEW STRIPE SET :让已有容器使用完之后 在使用新增加的容器 不会在容器间作rebalance 对系统不会造成性能影响但会造成数据偏移


使用道具 举报

回复
论坛徽章:
0
16#
发表于 2013-5-29 10:10 | 只看该作者
谢谢楼主分享……

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
186
授权会员
日期:2008-07-27 22:25:202014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14版主4段
日期:2015-02-26 02:21:03慢羊羊
日期:2015-03-04 14:51:35
17#
发表于 2013-5-29 11:51 | 只看该作者
谢谢分享,
最好能整理成完整的文档

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
18#
 楼主| 发表于 2013-5-29 14:01 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-5-29 14:03 编辑

节点和数据库编目:
1 在db2服务端配置:
   1 配置监听协议 db2set db2comm=tcpip
   2 配置实例端口号: db2 update dbm cfg using svcename 50000 (然后 db2stop  db2start)
2 在db2客户端编目:
   1 编目节点:db2 catalog tcpip node node_129 remote 192.168.220.129 server 50000
(节点编目语法:catalog {tcpip/tcpip4/tcpip6} node node-name  remote hostname [server service-name] node-name 节点名 一般为服务端主机名 hostname服务端主机名或IP Server=name 服务端实例端口号)
    2 编目数据库:db2 catalog db testdb as testdb at node node_129
    3 terminate

在客户端 list node directory 查看节点信息(以上配置的信息)
通过 list db directoy 查看数据库信息

在客户端进行数据库连接 远程连接需要提供用户名密码: db2 connect to testdb user db2inst1  using password

使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
19#
 楼主| 发表于 2013-5-29 16:09 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-5-30 15:22 编辑

Describe indexs for table tb_name show detail
-- 字典表 syscat.indexs
describe table tb_name

list tables --当前连接用户模式下的表
list tables for all 查看所有模式下的表 视图 alias别名
list table for schema schema_name 查看某个模式下的表 视图 alias 别名
syscat.tables--系统视图查看表定义 等信息

表压缩命令:
alter table  tb_name compress yes.
reorg重组:
db2 reorg table schema_name.table_name



修改表字段类型
alter table tb_name alter col_name set data type <new type>;
alter table tb_name alter col_name set not null;
alter table tb_name drop column  col_name;


创建索引
1 create index idx_tb_itemno on tb_name (itemno);
2 create unique index dba.empno on dba.employee(empno asc)
3 create index item on tb_name(itemno) cluster
4 create unique index empidx on employee (empno) include (lastname,firstname)
5 create index name on employee(firstname,lastname);



长度小于32的二进制数据建议用varchar(32k) for bit data
当长度可能大于32K时 才考虑用BLOB
由于lob数据不通过bufferpool 可考虑在文件系统缓存
eg:在创建表空间的时候 指定 create tablespace ……file system caching
长度小于32KB的字符字段 建议用varchar(32k) 当长度有可能大于32kb时才考虑用clob


函数返回在字符串文字“Another test literal”中进行以下替换后生成的字符串:A 替换为 B,t 替换为 f,e 替换为 i 并且 r 替换为 m。fn:translate('Another test literal', 'Ater', 'Bfim')
rand() 函数返回0-1之间的随机数

http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=%2Fcom.ibm.db2.luw.xml.doc%2Fdoc%2Fxqrfntrn.html&lang%3Dzh_CN


使用道具 举报

回复
论坛徽章:
5
奥运会纪念徽章:蹦床
日期:2012-08-24 16:50:342013年新春福章
日期:2013-02-25 14:51:24鲜花蛋
日期:2013-06-08 15:24:31ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:422014年世界杯参赛球队: 意大利
日期:2014-06-25 12:38:19
20#
 楼主| 发表于 2013-6-5 11:52 | 只看该作者
本帖最后由 sunny_zhao0127 于 2013-6-5 11:53 编辑

[db2inst1@db2asiait bkp]$ db2 restore db sample from /home/db2inst1/db2inst1/bkp taken at 20130604160958
SQL2539W  Warning!  Restoring to an existing database that is the same as the
backup image database.  The database files will be deleted.
Do you want to continue ? (y/n) y
DB20000I  The RESTORE DATABASE command completed successfully.
[db2inst1@db2asiait bkp]$ db2 connect to sample
SQL1117N  A connection to or activation of database "SAMPLE" cannot be made
because of ROLL-FORWARD PENDING.  SQLSTATE=57019
[db2inst1@db2asiait bkp]$ db2 ROLLFORWARD DATABASE sample TO END OF LOGS    AND COMPLETE OVERFLOW  LOG PATH '(/home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR)'
SQL4910N  Overflow log path
"/home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR" is not valid.
[db2inst1@db2asiait SQL00001]$ cd SQLOGDIR/
[db2inst1@db2asiait SQLOGDIR]$ ls -lah
total 1.6M
drwxr-x--- 2 db2inst1 db2iadm1 4.0K Jun  5 10:26 .
drwxr-x--- 4 db2inst1 db2iadm1 4.0K Jun  4 14:03 ..
-rw------- 1 db2inst1 db2iadm1 1.6M Jun  5 10:26 S0000003.LOG

[db2inst1@db2asiait SQLOGDIR]$ db2 rollforward db sample to end of logs and stop

                                 Rollforward Status

Input database alias                   = sample
Number of nodes have returned status   = 1

Node number                            = 0
Rollforward status                     = not pending
Next log file to be read               =
Log files processed                    = S0000001.LOG - S0000003.LOG
Last committed transaction             = 2013-06-05-01.30.19.000000 UTC

[db2inst1@db2asiait SQLOGDIR]$ db2 connect to sample

   Database Connection Information

Database server        = DB2/LINUXX8664 9.7.0
SQL authorization ID   = DB2INST1
Local database alias   = SAMPLE
出现SQL1117N  由于 ROLL-FORWARD PENDING,不能连接或激活数据库

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表