??xml version="1.0" encoding="utf-8" standalone="yes"?>
一. Bcp 错误
ct_connect(): network packet layer: internal net library error: Net-Lib protocol driver call to connect two endpoints failed
cs_convert: cslib user api layer: common library error: The conversion/operation was stopped due to a syntax error in the source field.
cs_convert: cslib user api layer: common library error: The conversion/operation was stopped due to a syntax error in the source field.
blk_rowxfer(): blk layer: internal BLK-Library error: Data truncated while doing local character set conversion. col = 3
ct_sendpassthru(): network packet layer: internal net library error: Net-Library operation terminated due to disconnect
字符集错?/font>
? Bcp 导入不同字符集数?/font>
bcp in到字W集是utf8的数据库时用以下的参数,q样可以解决javaE序使用utf8字符集看中文是ؕ码的问题
Establishing connection failed.
无法q接q程服务?/font>
CSLIB Message: - L0/O0/S0/N36/1/0:
导入表对应的列数量不正确
导入数据存在自增长列Q但数据源不存在自增长列
导入表对应的字段长度不
CTLIB Message: - L5/O3/S5/N5/5/0:
bcp dbname..tabname in filename -Uxx -Pxx -Sxx -Jcp936 -c -Y
]]>
bill_id INTEGER
charge INTEGER
pay_id INTEGER
payment表――pay_idZƄPchargeZN额,PKQpay_id
pay_id INTEGER
charge INTEGER
要求更新payment使charge=bill表中同一pay_id的charge之和?br />
2、表A定义如下Q?br />属?cd
Year Integer
Quarter VarcharQ?0Q?br />Amount float
Year Quarter Amount
2000 1 1.1
2000 2 1.2
2000 3 1.3
2000 4 1.4
2001 1 2.1
2001 2 2.2
2001 3 2.3
2001 4 2.4
其中每行表表CZ个季度的数据?br />
如果处理表A中的数据Q得到如下的l果?br />Year Quarter1 Quarter2 Quarter3 Quarter4
2000 1.1 1.2 1.3 1.4
2001 2.1 2.2 2.3 2.4
LSQL写一D代码实现?br />
3、有如下信息Q?br />起始?目的?距离Q公里)
A B 1000
A C 1100
A D 900
A E 400
B D 300
D F 600
E A 400
F G 1000
C B 600
LSQL语句或一D代码写ZA出发Q可辑ֈ的目的地Q包括间接方式)?br />
4Q表A定义如下Q?br />属?cd 备注
Id Integer PK
Name VarcharQ?0Q?br />State charQ?Q?br />表A中现?000万条记录Q如果客L要通过分页的方式从表A中取数据Q其中每?0?br />记录Q有几种ҎQ描q每U方法如何处理,有什么优~点Q用SQL写出实现代码?br />
不错吗!
CSDN上的l典问题阿!
2.
create table A
(
year int,
Quarter varchar(30),
amount float
)
insert A select 2000,'1',1.1
insert A select 2000,'2',1.2
insert A select 2000,'3',1.3
insert A select 2000,'4',1.4
insert A select 2001,'1',2.1
insert A select 2001,'2',2.2
insert A select 2001,'3',2.3
insert A select 2001,'4',2.4
declare @T_SQL varchar(8000)
set @T_SQL=''
select @T_SQL=@T_SQL + ' sum(case when Quarter=''' + T.Quarter + ''' then amount else 0 end) as Quarter' + T.Quarter +','
from (select Quarter from A group by Quarter) T
set @T_SQL='select year ,' + left(@T_SQL,len(@T_SQL)-1) + ' from A group by year'
exec (@T_SQL)
3.
create table A
(
起始?varchar(5),
目的?varchar(5),
距离 int
)
insert A select 'A','B',1000
insert A select 'A','C',1100
insert A select 'A','D',900
insert A select 'A','E',400
insert A select 'B','D',300
insert A select 'D','F',600
insert A select 'E','A',400
insert A select 'F','G',1000
insert A select 'C','B',600
declare @Q varchar(5)
declare @T table ( 起始?varchar(5),目的?varchar(5),?varchar(8000),lev int)
declare @lev int
set @Q='A'
set @lev=1
insert @T select 起始?目的?起始?'->'+目的?as ?@lev as lev from A where 起始?@Q
while @@rowcount>0
begin
set @lev=@lev+1
insert @T select A.起始?A.目的?T.?'->'+A.目的?,@lev as lev from (select * from @T where lev=@lev-1) T,(select * from A where A.目的?not in (select 起始?from @T)) A where A.起始?T.目的?
end
select ?from @T
1.
update payment set charge=(select sum(charge) from bill where pay_id=T.pay_id)
from payment p
我晕Q这是哪个公司的面视题?怎么有那么多公司都用q题来考h?br />
不是吧?有这么多公司用啊Q?br />
是啊Q我也碰q第二题
select year,sum(case Quarter when '1' then Amount else 0 end) as Quarter1,
Quarter2=sum(case Quarter when '2' then Amount else 0 end),
Quarter3=sum(case Quarter when '3' then Amount else 0 end),
Quarter4=sum(case Quarter when '4' then Amount else 0 end),
Amount=sum(Amount)
from ?group by year order by year
看过了~~
select year,sum(case Quarter when '1' then Amount end) as Quarter1,
sum(case Quarter when '2' then Amount end) as Quarter2,
sum(case Quarter when '3' then Amount end) as Quarter3,
sum(case Quarter when '4' then Amount end) as Quarter4
from A order by year group by year
1?br />select pay_id,charge=sum(charge) into #temp from bill group by pay_id
update payment set payment.charge=#temp.charge from payment,#temp where payment.pay_id=#temp.pay_id
]]>
]]>
作者:彭徏?br />最新更新时_2006-5-8
关键字:DB2 性能 runstats reorg reorgchk 优化 l计信息
对于在数据库中那些经常发生变动的表,定期q行q行重组l计Ҏ据库性能的提高效果是显著的,本文只是抛砖引玉?/p>
注意Q?在?runstats 命o的时候,必须指定表所在的模式?/p>
1、首先执行表、烦引检?/span>
--------------------------------------------------------
--DB2 CLP
--------------------------------------------------------
db2 reorgchk update statistics on table db2admin.K_Order
执行 RUNSTATS ....
表统计信息:
F1: 100 * OVERFLOW / CARD < 5
F2: 100 * (Effective Space Utilization of Data Pages) > 70
F3: 100 * (Required Pages / Total Pages) > 80
SCHEMA NAME CARD OV NP FP ACTBLK TSIZE F1 F2 F3 REORG
----------------------------------------------------------------------------------------
DB2ADMIN K_ORDER 258500 51699 12932 16165 - 61781500 19 93 80 *-*
----------------------------------------------------------------------------------------
索引l计信息Q?/p>
F4: CLUSTERRATIO 或正常化?CLUSTERFACTOR > 80
F5: 100 * (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) / ((NLEAF - NUM EMPTY LEAFS) * INDEXPAGESIZE) > 50
F6: (100 - PCTFREE) * ((INDEXPAGESIZE - 96) / (ISIZE + 12)) ** (NLEVELS - 2) * (INDEXPAGESIZE - 96) / (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) < 100
F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20
F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
表:DB2ADMIN.K_ORDER
DB2ADMIN IDX_K_C 258500 14894 0 4 106 21040 258500 72 48 13 7 0 **---
SYSIBM SQL060417152213950 258500 7122 0 4 60 0 258500 72 61 62 0 0 *----
-------------------------------------------------------------------------------------------------
CLUSTERRATIO 或正常化?CLUSTERFACTORQF4Q将指示索引需?br />REORGQ该索引与基本表不在相同的序列中。当在表中定义了多个索引Ӟ一个或多个索引
可能被标Cؓ需?REORG。指?REORG 序的最重要索引?/p>
使用 ORGANIZE BY 子句和相应的l烦引定义的表的名称?'*'
后缀。维索引的基数等价于表的“活动的块数”统计信息?/p>
2、DB2 提示信息说明
?reorgchk 所使用的度量的考虑因素包括Q(当查?reorgchk 工具的输出时Q找到用于表?F1、F2 ?F3 q几列,以及用于索引?F4、F5、F6、F7 ?F8 q几列。如果这些列中的M一列有星号 (*)Q则说明当前的表?或烦引超Z阈倹{)
F1: 属于溢出记录的行所占的癑ֈ比。当q个癑ֈ比大?5% Ӟ在输出的 F1 列中有一个星?(*)?
F2: 数据中使用了的I间所占的癑ֈ比。当q个癑ֈ比小?70% Ӟ在输出的 F2 列上有一个星?(*)?
F3: 其中含有包含某些记录的数据的|占的癑ֈ比。当q个癑ֈ比小?80% Ӟ在输出的 F3 列上有一个星?(*)?/p>
F4: 集率,卌中与索引h相同序的行所占的癑ֈ比。当q个癑ֈ比小?80% Ӟ那么在输出的F4 列上有一个星?(*)?
F5: 在每个烦引页上用于烦引键的空间所占的癑ֈ比。当q个癑ֈ比小?50% Ӟ在输出的 F5 列上有一个星?(*)?
F6: 可以存储在每个烦引的键的数目。当q个数字于 100 Ӟ在输出的 F6 列上有一个星?(*)?
F7: 在一个页中被标记?deleted 的记?IDQ键Q所占的癑ֈ比。当q个癑ֈ比大?20% Ӟ在输出的 F7 列上有一个星?(*)?
F8: 索引中空叶子|占的癑ֈ比。当q个癑ֈ比大?20% Ӟ在输出的 F8 列上有一个星?(*)?
3、解x?/span>
1、针对reorgchkl出的提CZ息(特别是打*Lreorg列)Q结合SQL语句本n的构成,建立适当的烦?/p>
2、根据实际情况,重组表、重l烦?/p>
3、更新表、烦引统计信?/p>
例如Q?/p>
--------------------------------------------------------
--DB2 CLP
--------------------------------------------------------
db2 reorg table db2admin.K_Order;
db2 reorgchk update statistics on table db2admin.K_Order;
db2 reorg indexes all for table db2admin.K_Order;
db2 runstats on table db2admin.K_Order and indexes all;
?一)中收集了对象的统计信息,q里Q可以用q些l计信息来诊断对象的物理存储了?br />具体内容见:http://blog.csdn.net/dlinger/archive/2004/10/12/133178.aspx
2.REORGCHK Q诊断对象的物理存储
>>-REORGCHK----+-------------------------------+----------------------------------+<<
| |-UPDATE--| | | .-USER------- .--|
'--+-CURRENT-+---STATISTICS--' '-ON TABLE--+-SYSTEM-----+--'
+-ALL--------+
'-table-name-'
在UDB的V8版本中增加了on schema 的选项?/font>
UPDATE STATISTICSQ先调用RUNSTATS来对tableq行分析Q?br /> 然后Ҏ分析的统计信息诊断是否需要重ltable
CURRENT STATISTICSQ用现有的l计信息诊断是否需要重ltable
ON TABLE USERQ?当前USER的所有table
ON TABLE SYSTEMQSYSTEM的所有table
ON TABLE ALL: 当前db的所有table
ON TABLE table-nameQ指定名U的table
我们分析SYSIBM.SYSTABLESQ看看具体的执行l果Q?/font>
db2 => reorgchk update statistics on table SYSIBM.SYSTABLES
执行 RUNSTATS ....
表统计信息:
F1: 100 * OVERFLOW / CARD < 5
F2: 100 * (Effective Space Utilization of Data Pages) > 70
F3: 100 * (Required Pages / Total Pages) > 80
SCHEMA NAME CARD OV NP FP ACTBLK TSIZE F1 F2 F3 REORG
----------------------------------------------------------------------------------------
SYSIBM SYSTABLES 2988 0 290 290 - 4774824 0 100 100 ---
----------------------------------------------------------------------------------------
索引l计信息Q?/font>
F4: CLUSTERRATIO 或正常化?CLUSTERFACTOR > 80
F5: 100 * (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) / ((NLEAF - NUM EMPTY LEAFS) * INDEXPAGESIZE) > 50
F6: (100 - PCTFREE) * ((INDEXPAGESIZE - 96) / (ISIZE + 12)) ** (NLEVELS - 2) * (INDEXPAGESIZE - 96)
/ (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) < 100
F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20
F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20
SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
-------------------------------------------------------------------------------------------------
表:SYSIBM.SYSTABLES
SYSIBM IBM00 2988 55 0 2 27 42 2988 95 47 3 1 0 -*---
SYSIBM IBM137 2988 18 0 2 4 52 2845 98 51 9 1 0 -----
SYSIBM IBM21 2988 5 0 2 3 26 3 99 73 24 0 0 -----
SYSIBM IBM22 2988 5 0 2 3 22 1 100 72 24 0 0 -----
SYSIBM IBM23 2988 5 0 2 3 2 1 100 72 24 0 0 -----
SYSIBM IBM78 2988 62 0 2 33 17 2988 95 49 2 0 0 -*---
-------------------------------------------------------------------------------------------------
CLUSTERRATIO 或正常化?CLUSTERFACTORQF4Q将指示索引需?br />REORGQ该索引与基本表不在相同的序列中。当在表中定义了多个索引Ӟ一个或多个索引
可能被标Cؓ需?REORG。指?REORG 序的最重要索引?/font>
使用 ORGANIZE BY 子句和相应的l烦引定义的表的名称?'*'
后缀。维索引的基数等价于表的“活动的块数”统计信息?/font>
先来说明一下上面的信息Q?/font>
CARDQ基表中的数据行?br />OV(OVERFLOW)Q?q移行的数量
NP(NPAGES)Q?包含数据的page的数?br />FP(FPAGES)Q?该表d分配的page数量
TSIZEQtable的实际数据的大小Q以字节为单位?br />TABLEPAGESIZEQtable所在表I间的page size
F1: 处理溢出行。在溢出行超q总行数的5%Ӟ该报告徏议对tableq行重组?br />F2Q处理空间用率。在TSIZE于{于该表分配ȝ间的70%Ӟ该报告徏议对tableq行重组?br />F3Q处理空白页。所谓空白页Q就是没有数据的c当table中空白页大于20%Ӟ该报告徏议对tableq行重组?/font>
LEAFQindex上叶节点的数?br />LVLS(LEVELS)QindexU数
ISIZEQindex的^均行ѝ?br />KEYSQ唯一取值的数量
INDEXPAGESIZEQindex所在表I间的page size
PCTFREEQindex page中预留空?%)
F4Q聚因?br />F5Qؓindex key预留的空间。这个值应于50%Q否则该报告对indexq行重组
F6Q估index늚用量Q应大于L?0%Q否则该报告对indexq行重组
F7Q伪删除RID的数量。应于L?0%Q否则该报告对indexq行重组
F8: 伪空늚数量。应于L?0%Q否则该报告对indexq行重组
我们Ҏ报告?/strong>REORG的g有?”来军_是否对table或indexq行数据重组。当ӞF1-F8的阀值只是徏议倹{?/strong>
W三部分Q我们将介绍在DB2中如何对数据q行重组?/font>
DB2数据库提供了三种恢复cdQ?/p>
1、崩溃恢复(crash recovery)Q崩溃恢复是用来在失败后立即q行恢复Q把数据库恢复到一个事务一致状态,此状态的所有更改只有在执行提交事务后才生效。崩溃恢复用命?RESTART 执行?/p>
2、备份恢复(restore recovery)Q备份恢复可从上一ơ所作的备䆾中恢复数据库的内宏V备份恢复?RESTORE 命o执行?/p>
3、向前恢复(forward recoveryQ?/b>Q在一个数据库从备份中恢复了以后,向前恢复可以重新执行那些在备份后才更改了数据库的操作。在q种情况下,数据库可以恢复到备䆾和当前时间之间的M旉断。向前恢复?ROLLFORWORD 命o执行?/p>
崩溃恢复和备份恢复对M数据库都适用Q而向前恢复只有在数据库被指定可以使用此功能是才用。表一昄了此功能带来的媄响?/p>
表一 数据库能否进行向前恢复带来的影响
如果不允许进行向前恢?/th> | 如果允许q行向前恢复 |
---|---|
在发生失败后Q可以把数据库恢复到p|前与最后一ơ事务一致的状态?/p> |
同样Q也支持恢复C最后一ơ事务一致的状态?/p> |
可以把数据库恢复CQ何有效的备䆾状态,但是不能重新执行发生在备份之后的事务?/p> |
可以把数据库恢复CQ何有效的备䆾状态,q且可以重新执行从发生失败到当前为止提交的事务?/p> |
只能在没有Q何应用连接到数据库时q行备䆾Q这UCؓ脱机备䆾Q?/p> |
可以在应用连接到数据库时和事务正在处理时q行备䆾Q这UCؓ联机备䆾Q。同h持脱机备份?/p> |
每一个备份都必须包含整个数据库的当前状态?/p> |
一个备份可能包含整个数据库的当前状态,或者是一个或多个表空间。数据库的表I间可以单独地备份和恢复?/p> |
可以通过把数据库配置参数 LOGRETAIN ?USEREXIT 讄?YES 来向前恢复生效。日志会׃生成新的文g而不断增加,q且它们是无限制的。在q种情况下,必须采取一些办法把旧的日志文g保存到文档中Q以防止文gpȝ被日志占满?/p>
1、RESTART 命o
此命令是当一些操作还在处理时发生断电或Y件崩溃后要发出的W一个命令。它建立一个数据库的连接,q用日志来把数据库恢复C务一致状态。所有在p|发生前由提交操作所引v的数据库更改都会生效。所有在p|前被撤消的操作和p|时正在处理的事务Ҏ据库q行的更攚w被撤消?/p>
下面?RESTART 命o的例?
RESTART DATABASE mydb
2、RESTORE 命o
此命令用存储在备䆾中的内容来恢复数据库的内宏VRESTORE 命o可以创徏一个新的数据库。RESTORE 命o需?SYSADM,SYSCTRL?b>SYSMAINTҎ。RESTORE 命o要用的备䆾可能包含整个数据库或一l表I间。恢复整个数据库必须脱机q行Q恢复表I间可以联机q行Q也是在还有应用连接到数据库时q行。RESTORE 命o语法为:
RESTORE DB 目标数据库别?[TABLESPACE 表空间名] [FROM 介质名] [TAKEN AT 旉]
下面是一?RESTORE 命o的例子:
Q?Q从一个特定目录(/backup/mydbQ中的备份来恢复 mydb 数据库。如?mydb 不能够进行向前恢复,数据库将被恢复到备䆾时的状态,而且可以立即使用。如果能够进行向前恢复,数据库会被置为向前挂PpendingQ状态,直到它被执行向前恢复命o之后才能被用?/p>
RESTORE DATABASE mydb FROM /backup/mydb
Q?Q下面的命o是对数据?mydb q行恢复Qƈ且在外部指定不进行向前恢复,数据库可以被立即使用?/p>
RESTORE DATABASE mydb FROM /backup/mydb WITHOUT ROLLING FORWARD
Q?Q下面的例子是从一个指定的目录Q?backup/mydbQ中来恢?mydb 数据库的一个指定的表空_此恢复要使用指定的日期和旉Q?/p>
RESTORE DATABASE mydb TABLESPACE ONLINE FROM /backup/mydb TAKEN AT 20000926201226
3、ROLLFORWARD 命o
ROLLFORWARD 命o是在执行了一?RESTORE 命o之后执行的,以便Ҏ据库或它的表I间q行向前恢复。ROLLFORWARD 命o需?b>SYSADM,SYSCTRL ?SYSMAINT ҎQƈ且数据库必须能够q行向前恢复?/p>
ROLLFORWARD 命o可以适用于整个数据库或是一个或多个表空_它们的状态此旉是向前挂PpendingQ的。如果向前恢复整个数据库Q此q程必须是脱机的Q而且数据库可以被恢复成备份时间和当前旉之中的Q何时间段。如果只向前恢复单独的表I间Q此q程既可以是联机的也可以是脱机的Q但是必L表空间向前恢复到当前旉后,再重新执行所有引h改的提交操作Q这样可保证被恢复的表空间和数据库中的其它部分保持一致。ROLLFORWARD 命o语法为:
ROLLFORWARD DATABASE 数据库名 [TO {旉,END OF LOGS}][TABLESPACE {ONLINE,表空间名}]
下面是一?ROLLFORWARD 命o的例子:
Q?Q此例子?mydb 数据库恢复到当前时刻。字?AND STOP 是让数据库不被置?ROLLFORWARD PENDING 状态,q且可以被存取:
ROLLFORWARD DATABASE mydb TO END OF LOGS AND STOP
Q?Q下面的例子向前恢复 mydb 数据库,q新执行在指定日期和时间之前提交的所有事务:
ROLLFORWARD DATABASE mydb TO 2000-09-26-10.3059 AND STOP
Q?Q下面的例子只把数据?mydb 中的某一表空间向前恢复。此命o是在执行了一ơ表I间U别的恢复后发出的,它只适用于被恢复的表I间。此命o指出向前恢复是联行的Qƈ且要q行到当前时_日志末尾Q:
ROLLFORWARD DATABASE mydb TO END OF LOGS AND STOP TABLESPACE ONLINE
注:如果数据库中有一些列?LOB 数据cd的,q且它们被创建带?NOT LOGGED 选项Q那么对q些列进行的更新操作没有被记录到日志中Q向前恢复就不会对这些列q行操作。如果在向前恢复q程中,遇到了没有日志的列,它们的g被置为十六进制的0?/font>
随着银行业的不断发展壮大Q计机|络和数据库的应用越来越q泛Q其中数据库Q特别是大型数据库的安全问题Q已得到q大q大数据库管理员的重视。ؓ了防止数据的意外丢失或损坏,必须Ҏ据采取有效的备䆾手段?/p>
所谓数据备份,是保留一套备用系l,当运行系l出现故障时Q能够以最的旉恢复原来的数据。数据库的备份,可以是整个数据库的拷贝,也可以是其中一部分数据的拷贝(一个或多个表空_。数据备份一般有两个层次Q?/p>
gU备份:用冗余的g来保证系l的q箋q行Q比如双机容错、硬盘镜像等方式。如果主g损坏Q后备硬件能够立L替其工作?
软gU备份:系l数据保存到其他可以Ud的介质上Q如带、Y盘、光盘等。当pȝ出现故障后,可以系l恢复到备䆾时的状态。本文主要讨论的是数据库的Y件备䆾?
IBM的DB2数据库早已在世界范围赢得非常好的信誉Q是受到q大用户青睐的数据库pȝ之一。本文讨论的?DB2 5.5 for AIX 数据库系l的备䆾与恢复?/p>
一、DB2数据库的备䆾
DB2数据库可以备份整个数据库Q也可以备䆾其中的一个或多个表空_可以在应用连接到数据库时和事务正在处理时q行备䆾Q这UCؓ联机备䆾Q,也可以在没有M应用q接到数据库时进行备份(q称机备份)?见表一Q?/font>
DB2数据库用命?i>BACKUP来备份。BACKUP命o需?b>SYSADM,SYSCTRL?b>SYSMAINT的权限,其命令语法ؓQ?/font>
BACKUP DATABASE 数据库别?TO 介质?/font>
或?/font>
BACKUP DATABASE 数据库别?TABLESPACE 表空间名 [ONLINE} TO 介质?/i>
其中介质名一般指定ؓ介质的绝对\径,?AIX 中不回{的磁带机讑֤名ؓ /dev/rmt0Q回转的带备名?/dev/rmt0.n 。也可将数据备䆾在硬盘上Q介质名即ؓ其绝对\径。BACKUP命o在指定的介质上生成一个或多个备䆾文gQ以下显CZ?AIX 4.3 for RS/6000 上生成的文g名结构:
以下?BACKUP 命o的一些例子:
(1)此例子是在指定的服务器目?/backup/mydb 下给 mydb 数据库创Z个完整的备䆾Q?/font>
BACKUP DATABASE mydb TO /backup/mydb
(2)此例子是l?mydb 数据库中指定的表I间 myspace1 q行联机备䆾Q在q行备䆾Ӟ应用可l更新数据库Q?/font>
BACKUP DATABASE mydb TABLESPACE myspace1 ONLINE TO /backup/mydb
表一 数据库能否进行向前恢复带来的影响
如果不允许进行向前恢?/th> | 如果允许q行向前恢复 |
---|---|
在发生失败后Q可以把数据库恢复到p|前与最后一ơ事务一致的状态?/p> |
同样Q也支持恢复C最后一ơ事务一致的状态?/p> |
可以把数据库恢复CQ何有效的备䆾状态,但是不能重新执行发生在备份之后的事务?/p> |
可以把数据库恢复CQ何有效的备䆾状态,q且可以重新执行从发生失败到当前为止提交的事务?/p> |
只能在没有Q何应用连接到数据库时q行备䆾Q这UCؓ脱机备䆾Q?/p> |
可以在应用连接到数据库时和事务正在处理时q行备䆾Q这UCؓ联机备䆾Q。同h持脱机备份?/p> |
每一个备份都必须包含整个数据库的当前状态?/p> |
一个备份可能包含整个数据库的当前状态,或者是一个或多个表空间。数据库的表I间可以单独地备份和恢复?/p> |
UNCATALOG NODE TESTCATALOG TCPIP NODE TEST REMOTE toone-1eb06fba5 SERVER db2c_db2 REMOTE_INSTANCE
DB2 SYSTEM TOONE-1EB06FBA5 OSTYPE WIN
TEST 节点名称
toone-1eb06fba5 q程服务器名U?br />db2c_db2 为服务名
DB2 实例名称
2、启动DB2数据?br />db2start
3、备份数据库
BACKUP DATABASE命o?br />实例Q?br />--q接数据?br />CONNECT TO JMINNET;
--停顿数据?br />QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS;
--断开q接
CONNECT RESET;
--备䆾
BACKUP DATABASE JMINNET TO "D:\2005-10-12备䆾\" WITH 1 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT
PROMPTING;
--q接数据?br />CONNECT TO JMINNET;
--取消停顿
UNQUIESCE DATABASE;
--断开q接
CONNECT RESET;
4、常用命令,参看IBM开发网?br />connect to <dbname>
[ [user <userid>] using <pwd>]
CLP 命o 描述
db2start 启动数据库管理器实例?
db2stop 停止数据库管理器实例?
get dbm cfg q回数据库管理器配置讄?
get dbm cfg show detail 昄数据库管理器参数的当前值和延迟|?V8 P?
1update dbm cfg using <p> <v> 数据库理器配|参?<p> 更新为?<v>?
get instance q回 DB2INSTANCE 环境变量的倹{?
list active databases 列出zd的数据库和连接数?
list application [show detail] q回关于当前q接的应用程序的信息?
force application (h1 [,h2,..,hn]) Ҏ句柄号与特定应用E序断开q接?
force application all 断开所有应用程序与数据库的q接?
attach to <node> user <userid> using <pwd> 以用?<userid> 通过使用密码 <pwd> 与标识ؓ <node> ?/p>
q程实例q接?
数据?/p>
create database <dbname> 创徏名ؓ <dbname> 的数据库?
activate database <dbname> 昑ּ地激zL据库?
deactivate database <dbname> 昑ּC数据库失效?
connect to <dbname>
[ [user <userid>] using <pwd>] Ҏ需要,昑ּC用户 <userid> 和密?<pwd> 与数据库 <dbname> q?/p>
接?
1update dbm cfg using <p> <v> 数据库理器配|参?<p> 更新为?<v>?
connect reset 断开与当前数据库的连接?
get db cfg show detail 昄数据库配|参数的当前值和延迟|仅适用?V8Q?
get db cfg for <dbname> q回数据?<dbname> 的数据库配置讄?
update db cfg for <dbname> using <p> <v> 数据库 <dbname> 的数据库配置参数 <p> 更新为?<v>?
list tables[for {user | all | system | schema <schemaname>}][show detail] 列出数据库中的表。如?/p>
没有指定M参数Q则~省情况是列出当前用L表?
describe table <tablename> 昄一个表或视囄列信息?
list tablespaces [show detail] 昄表空间的标识、名U、类型、内容和状态?
list tablespace containers for <tablespace_id> [show detail] 昄?<tablespace_id> 指定的表I间
的容器信息?
quiesce tablespaces for table <tablename> reset 表I间的状态复位成正常QnormalQ?
q接?/p>
catalog [admin] <protocol> node ?为协?<protocol> 在节点目录中创徏一V?
list [admin] node directory q回节点目录的内宏V?
catalog database <dbname>?为数据库 <dbname> 在数据库目录中创ZV?
list database directory [on <path>] q回数据库目录的内容?
性能
get monitor switches q回会话监控开关的状态?
update monitor switches using <monitor> <on|off> ?<monitor> 讄会话监控开关的状态?
reset monitor all 复位性能监控E序倹{?
get snapshot for dbm q回实例U别的性能信息?
get snapshot for all on <dbname> 为数据库 <dbname> 在数据库U别q回所有性能信息?
get snapshot for dynamic sql on <dbname> q回动?SQL 高速缓存的内容?
runstats on table <tbschema>.<tbname> 攉?<tbname> 的统计信息。表名必L?<dbschema> 全限?/p>
的?
reorgchk on table all 定是否需要对表进行重l。这对于Ҏ有表自动执行 runstats 很有用?
reorg table <tablename> 通过重构行来消除“碎片”数据ƈ压羃信息Q对表进行重l?
理
export 数据库数据抽取C个^面文件中?
import 通过使用 IMPORT 实用E序Q将数据导入到数据库?
load query table <tbname>
[to local-message-file][nosummary | summaryonly] [showdelta] q回 LOAD 实用E序的进度?
backup database <dbname> [to <path>] 执行数据库备份?
restore database <dbname> [from <path>] 执行数据库恢复?
get health snapshot for dbm q回实例的正常快照信息(仅适用?V8Q?
get health snapshot for all on <dbname> q回数据?<dbname> 的所有正常快照(仅适用?V8Q?
理服务?/p>
get admin cfg q回理服务器的配置讄?
update admin cfg using <p> <v> 管理服务器配置参数 <p> 更新为?<v>?
应用E序开?/p>
get routine into <filename> from [specific] procedure <routine-name>[hide body] ?SQL q程抽取?/p>
二进制文件?
put routine from <filename> [owner <newowner>[use registers]] 从二q制文g部v SQL q程?
*************************************************
* version: V1.0
* author: xiedd <mailto:xiedd@icss.com.cn>
* update: 2006-06-14
* memo:
详细命o请?/span>
"db2 ? <command>"
q行查看。
*************************************************
<!--[if !supportLists]-->1. <!--[endif]-->关闭db2
db2stop
?/span>
db2stop force
?/span>
在脚本中一般两个都写上Q避免?/span>
db2stop force
命oQ如Q?/span>
db2stop
db2stop force
<!--[if !supportLists]-->2. <!--[endif]-->启动db2
db2start
<!--[if !supportLists]-->3. <!--[endif]-->创徏数据?/span>
db2 create db <db name>
?/span>
db2 create db using codeset GBK territory CN
<!--[if !supportLists]-->4. <!--[endif]-->删除数据?/span>
执行此操作要心?/span>
db2 drop db <db name>
如果不能删除Q断开所有数据库q接或者重?/span>
db2
?/span>
<!--[if !supportLists]-->5. <!--[endif]-->断开数据库连?/span>
db2 force application all
<!--[if !supportLists]-->6. <!--[endif]-->q接数据?/span>
db2 connect to <db name> user <username> using <password>
<!--[if !supportLists]-->7. <!--[endif]-->断开数据库连?/span>
断开当前数据库连接:
db2 connect reset
或者:
db2 disconnect current
断开所有数据库的连接:
db2 disconnect all
<!--[if !supportLists]-->8. <!--[endif]-->备䆾数据?/span>
db2 backup db <db name>
备注Q执行以上命令之前需要断开数据库连?/span>
<!--[if !supportLists]-->9. <!--[endif]-->恢复数据?/span>
db2 restore db <source db name>
<!--[if !supportLists]-->10. <!--[endif]-->导出数据文g
db2move <db name> export [-sn <
模式名称Q一般ؓ
db2admin>] [-tn <
表名Q多个之间用逗号分隔
>]
<!--[if !supportLists]-->11. <!--[endif]-->导入数据文g
db2move <db name> import
<!--[if !supportLists]-->12. <!--[endif]-->列出数据库中所?/span>db
db2 list db directory
<!--[if !supportLists]-->13. <!--[endif]-->q入db2命o环境
在“运行”中执行Q?/span>
db2cmd
<!--[if !supportLists]-->14. <!--[endif]-->获取db2数据库管理配|环境信?/span>
db2 get dbm cfg
<!--[if !supportLists]-->15. <!--[endif]-->获取db2某个数据库数据库理配置环境信息
db2 get db cfg for <db name>
或者:q接x个数据库以后执行
db2 get db cfg
?/span>
<!--[if !supportLists]-->16. <!--[endif]-->讄联合数据库ؓ可用Q默认联合数据库不可用)
db2 update dbm cfg using federated yes
<!--[if !supportLists]-->17. <!--[endif]-->更改db2日志I间的大?/span>
备注Q以下命令ؓ了防?/span>
db2
数据库过份用硬盘空间而设Q仅用于开发者自己机器上?/span>
db2
Q如果是服务器,则参数需要修攏V?/span>
db2 UPDATE DB CFG FOR <db name> USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;
如果大是
4KB
Q则以上命o创徏
3
?/span>
<!--[if !supportLists]-->18. <!--[endif]-->创徏临时表空?/span>
DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256
<!--[if !supportLists]-->19. <!--[endif]-->获取数据库管理器的快照数?/span>
db2 –v get snapshot for dbm
<!--[if !supportLists]-->20. <!--[endif]-->昄q行E号
db2 list applications show detail
<!--[if !supportLists]-->21. <!--[endif]-->调查错误
sqlcode:
产品特定错误码;
sqlstate:DB2
pd产品的公共错误码Q符?/span>
ISO/ANSI 92SQL
标准?/span>
调查
sqlcode : db2 ? sql1403n
调查
sqlstate: db2 ? 08004
<!--[if !supportLists]-->22. <!--[endif]-->创徏表空?/span>
rem
创徏~冲池空?/span>
8K
db2 connect to gather
db2 CREATE BUFFERPOOL STMABMP IMMEDIATE SIZE 25000 PAGESIZE 8K
rem
创徏表空_
STMA
rem
必须认路径正确
rem D:\DB2Container\Stma
db2 drop tablespace stma
db2 CREATE REGULAR TABLESPACE STMA PAGESIZE 8 K MANAGED BY SYSTEM USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL STMABMP DROPPED TABLE RECOVERY OFF
db2 connect reset
<!--[if !supportLists]-->23. <!--[endif]--> 暂挂的数据恢复到前滚状?/span>
db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE
<!--[if !supportLists]-->24. <!--[endif]-->备䆾表空?/span>
BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING
<!--[if !supportLists]-->25. <!--[endif]-->创徏db2工具数据?/span>
db2 create tools catalog systools create new database toolsdb
<!--[if !supportLists]-->26. <!--[endif]-->如何q行增量/差量备䆾
增量Q上一ơ完整备份至本次备䆾之间增加的数据部分;
差量
(delta)
Q上ơ备份以来(可能是完整备份、增量备份或者差量备份)xơ备份之间增加的数据部分Q?/span>
<!--[if !supportLists]-->27. <!--[endif]-->更新所有表的统计信?/span>
db2 -v connect to DB_NAME
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
db2 -v reorgchkupdate statistics on table all
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
db2 -v terminate
<!--[if !supportLists]-->28. <!--[endif]-->对一张表q行l计信息
db2 -v runstatson table TAB_NAMEand indexes all
<!--[if !supportLists]-->29. <!--[endif]-->查看是否Ҏ据库执行?/span>RUNSTATS
db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"
<!--[if !supportLists]-->30. <!--[endif]-->更改~冲池的大小
~冲池中Q当
syscat.bufferpools
?/span>
npages
?/span>
-1
Ӟ由数据库的配|参?/span>
bufferpage
控制~冲池的大小?/span>
?/span>
npages
的值更改ؓ
-1
的命令:
db2 -v connect to DB_NAME
db2 -v select * from syscat.bufferpools
db2 -v alter bufferpoolIBMDEFAULTBP size -1
db2 -v connect reset
db2 -v terminate
更改数据库配|参?/span>
BufferPages
的命令如下:
db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value
db2 -v terminate
<!--[if !supportLists]-->31. <!--[endif]-->查看数据库监视内容列?/span>
db2 -v get monitor switches
<!--[if !supportLists]-->32. <!--[endif]-->打开某个数据库监视内?/span>
db2 -v update monitor switches using bufferpoolon
<!--[if !supportLists]-->33. <!--[endif]-->获取数据库快?/span>
db2 -v get snapshot for all databases > snap.out
db2 -v get snapshot for dbm>> snap.out
db2 -v get snapshot for all bufferpools>> snap.out
db2 -v terminate
<!--[if !supportLists]-->34. <!--[endif]-->重置数据库快?/span>
db2 -v reset monitor all
<!--[if !supportLists]-->35. <!--[endif]-->计算~冲池命中率
理想情况下缓冲池命中率在
95%
以上Q计公式如下:
(1 -((buffer pool data physical reads + buffer pool index physical reads) /(buffer pool data logical reads + pool index logical reads))) *100%
<!--[if !supportLists]-->36. <!--[endif]--> 创徏db2实例
db2icrt < 实例名称 >
<!--[if !supportLists]-->37. <!--[endif]-->删除db2实例
db2idrop < 实例名称 >
<!--[if !supportLists]-->38. <!--[endif]-->讄当前db2实例
set db2intance=db2
<!--[if !supportLists]-->39. <!--[endif]--> 昄db2拥有的实?/span>
db2ilist
<!--[if !supportLists]-->40. <!--[endif]-->恢复ȝ增量备䆾数据库的命o
DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015
<!--[if !supportLists]-->41. <!--[endif]--> 创徏h数据?/span>
?/span>
unix
q_Q用:
sqllib/bin/db2sampl <path>
?/span>
windows,os/2
q_Q用:
db2sampl e,e
是可选参敎ͼ指定创建数据库的驱动器Q?/span>
<!--[if !supportLists]-->42. <!--[endif]--> 列出数据库中所有的?/span>
db2 list tables
<!--[if !supportLists]-->43. <!--[endif]--> 列出某个表的数据l构
db2 describe table v_ro_role
<!--[if !supportLists]-->44. <!--[endif]-->l表增加?/span>
ALTER TABLE STAFF ADD COLUMN PNHONE VARCHAR(20)
<!--[if !supportLists]-->45. <!--[endif]-->数据q移Ҏ1
export
脚本CZ
db2 connect to testdb user test password test
db2 "export to aa1.ixf of ixf select * from table1"
db2 "export to aa2.ixf of ixf select * from table2"
db2 connect reset
import
脚本CZ
db2 connect to testdb user test password test
db2 "load from aa1.ixf of ixf replace into table1 COPY NO without prompting "
db2 "load from aa2.ixf of ixf replace into table2 COPY NO without prompting "
db2 connect reset
<!--[if !supportLists]-->46. <!--[endif]-->