-- DB2 恢复已删除的表测试(进者有分) --
- SQL code
-- DB2 恢复已删除的表测试:(测试平台:RHEL 5.4 DB2 V9.7.0)-- 哈哈,小弟菜鸟一个! 刚看牛大师的书,做了一下例子,混个脸熟,顺便来卖弄一下自己,满足一下自己的虚荣心!-- 下面我们举一个dropped table recovery的例子。-- *(1) 执行完全数据库备份,需要注意备份镜像的时间戳。(Instance:DB2INST1, Database: TEST1):backup db test1 to /home/db2inst1/db2_backupBackup successful. The timestamp for this backup image is : 20100522140304 (Instance:DB2INST1, Database: TEST1):-- *(2) 连接到数据库并创建表,执行生成日志记录的操作,插入几条记录:CONNECT TO test1 CREATE TABLE tab1(no INTEGER) IN tbsp1 INSERT INTO tab1 VALUES(1), (2), (3), (4), (5)-- *(3) 模拟意外丢弃表的场景:DROP TABLE tab1 COMMIT SELECT * FROM tab1-- 将返回以下错误消息:Error: SQL0204N "Administrator.TAB1" is an undefined name-- *(4) 恢复数据库。-- 要恢复已被丢弃的表,先恢复数据库备份,然后执行向前恢复(rollforward)操作:RESTORE DATABASE test1 FROM /home/db2inst1/db2_backup TAKEN AT 20100522140304 INTO test1-- 将返回以下消息:......-- *(5) 检索已丢弃的对象ID。-- 使用以下命令检索意外丢弃的表的对象ID:LIST HISTORY DROPPED TABLE ALL FOR DATABASE test1-- 可以将返回的信息(例如表7-3中显示的示例)复制到某个文件中以供未来引用。(Instance:DB2INST1, Database: TEST1):list history dropped table all for database test1 List History File for test1Number of matching file entries = 1 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log Backup ID -- --- ------------------ ---- --- ------------ ------------ -------------- D T 20100522141107 000000000000684300080004 ---------------------------------------- "DB2INST1"."TAB1" resides in 1 tablespace(s): 00001 TBSP1 ---------------------------------------- Comment: DROP TABLE Start Time: 20100522141107 End Time: 20100522141107 Status: A ---------------------------------------- EID: 33 DDL: CREATE TABLE "DB2INST1"."TAB1" ( "NO" INTEGER ) IN "TBSP1" ; ---------------------------------------- (Instance:DB2INST1, Database: TEST1):-- 表7-3中的Backup ID栏显示被丢弃的表的ID为000000000000684300080004。这一信息对于恢复表非常重要。-- *(6) 向前恢复数据库。-- 现在已经获得了被丢弃的表的ID,下一步需要使用该表的备份ID恢复数据库,这样才能够导入表的数据。在向前恢复数据库之前,-- 需要确保有一个目录可以供存储导入数据,比如说/home/db2inst1/test1/exporttab1。使用以下命令向前恢复数据库:mkdir -p /home/db2inst1/test1/exporttab1-- ROLLFORWARD DATABASE test1 TO END OF LOGS AND STOP RECOVER DROPPED TABLE 000000000000684300080004 TO /home/db2inst1/test1/exporttab1 (Instance:DB2INST1, Database: TEST1):rollforward database test1 to end of logs and stop \ (Instance:DB2INST1, Database: TEST1):recover dropped table 000000000000684300080004 \ (Instance:DB2INST1, Database: TEST1):to /home/db2inst1/test1/exporttab1 Rollforward Status Input database alias = test1 Number of nodes have returned status = 1 Node number = 0 Rollforward status = not pending Next log file to be read = Log files processed = S0000007.LOG - S0000007.LOG Last committed transaction = 2010-05-22-06.11.07.000000 UTCDB20000I The ROLLFORWARD command completed successfully.-- END OF LOGS选项的作用是让DB2在执行备份操作后应用所有可用日志文件。-- *(7) 检查导入的数据文件。-- 完成数据库向前恢复之后,需要 检查在ROLLFORWARD命令中指定的路径。应该能够找到一个.TXT文件,-- 打开该文件并验证其中包含的数据与意外丢弃表之前的数据是否相同。-- *(8) 连接到数据库并重新创建被丢弃的表。-- 验证导出文件之后,我们需要重新创建被丢弃的表并重新填入数据。被丢弃的表的定义包含在步骤(5)的LIST HISTORY命令的输出中。-- 连接到数据库并执行CREATE TABLE语句:CONNECT TO test1 CREATE TABLE "DB2INST1"."TAB1" ( "NO" INTEGER ) IN "TBSP1" ;-- *(9) 导入数据-- 重新创建表之后,可以使用以下命令将数据库重新导入到表中:IMPORT FROM /home/db2inst1/test1/exporttab1/NODE0000/data OF DEL INSERT INTO "DB2INST1"."TAB1"-- IMPORT工具将导出文件中的所有数据导回到表中,并在成功后发送报告(未显示)。-- *(10) 验证恢复后的数据-- 确保IMPORT过程中没有错误或报警,并且所有数据都已导回表中:SELECT * FROM tab1-- 如果一切运行正常,则意外丢弃点之前的所有数据应该都在表中。
[解决办法]
[解决办法]
Good.
[解决办法]
Well done.
[解决办法]
正在学习DB2!
[解决办法]
照着书做完,要仔细研究一下各个参数是怎么回事。
[解决办法]
除了这个场景以外,还有其他的一些场景
http://www.db2cert.com/Article/ShowArticle.asp?ArticleID=25
[解决办法]
jf 回复内容太短了!
[解决办法]
不是很懂,正好学习一下
[解决办法]
围观。。。
[解决办法]
嗯,有注释有理解,值得肯定。
[解决办法]
学习中!
[解决办法]
支持一下
[解决办法]
good,up~
[解决办法]
UP!!!!!!!!
[解决办法]
恢复后,list history dropped table all for database test_db
匹配的文件条目数=0
[解决办法]
都是高人
小弟拜读
[解决办法]
[解决办法]
不知道
[解决办法]
谢谢分享!!
[解决办法]
学习!
[解决办法]
学习。。。。。
学习
[解决办法]
学习
学习
[解决办法]
支持一下
坐等高手
[解决办法]
每天回帖即可获得10分可用分
[解决办法]
学习!!
[解决办法]
haohaohaohaohaohaohaohaohaohaohaohaohaohao
[解决办法]
顶起兄弟
[解决办法]
学习中
[解决办法]
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[解决办法]
不许哦 顶起兄弟
[解决办法]
DB2的呀,可以拿LZ的帮我理解下了
[解决办法]
精一下!~
[解决办法]
学习中,希望可以
[解决办法]
看看再说
先谢谢啦
[解决办法]
学习·学习
[解决办法]
[解决办法]
好好好。
为大家谋了个起死回生的手段
[解决办法]
ADFGHJKL
[解决办法]
WELL DONE
[解决办法]
学习了
[解决办法]
果然是好贴!我到遇到一个是SQL Server 数据库出问题,恢复后只能读取数据,其他的什么都不行,最好只好查询,然后重新输入。汗满面。。。。
[解决办法]
学习一下
[解决办法]
学。。。
[解决办法]
先评论,再看,lol
[解决办法]
真是好东西啊
[解决办法]
good
[解决办法]
ding le
[解决办法]
Well done.
[解决办法]
学习一下
[解决办法]
学习一下
[解决办法]
没有用过啊~~
[解决办法]
学习下!
[解决办法]
书到用时方恨少啊
[解决办法]
顶,学习啦
[解决办法]
学习了!!
[解决办法]
不懂,学习一下
[解决办法]
持续关注
[解决办法]
深奥!
[解决办法]
等待结果
[解决办法]
好\(^o^)/~
[解决办法]
没有学习过DB2,能介绍DB2吗?
[解决办法]
观望中。。
[解决办法]
数据库应处于归档模式才好进行恢复
[解决办法]
不是很懂!~~~~
[解决办法]
先顶了 在慢慢看
[解决办法]
学习了
[解决办法]
db2的恢复机制不错,能够基于时间戳来进行对象级别的恢复。
比sybase强点, sybase目前只能用archive数据库来读取备份文件的内容来实现恢复。
sybase中利用archive数据库来恢复表, 还是有点麻烦的。
[解决办法]
mark……
[解决办法]
db2 ibm中的,我做过一段时间
[解决办法]
不了解,顶一下。Mark以后看。
[解决办法]
ddddddddddddddd
[解决办法]
不错不错。顶下
[解决办法]
俺的SQL还行,正在用DB
[解决办法]
求楼主指点!刚学sql!
貌似最近的项目得用到这个……
求楼主指点……(可以直接发资料到邮箱wwwtiuy@163.com)
谢谢!
[解决办法]
最近正在学习这个
[解决办法]
先收藏再说
[解决办法]
没看懂,精神上 支持你了!
[解决办法]
在创建表之前就备份,删除在恢复备份不还是等于每创建吗。。按照你做的,为啥我这个到第5步时,Number of matching file entries =0 啊?
[解决办法]
学习 学习 收藏了!
[解决办法]
不会啊!!!
[解决办法]
支持一下
[解决办法]
jie fen
[解决办法]
jf 学习。。。
[解决办法]
[解决办法]
学习下
[解决办法]
学习下
[解决办法]
不错,占个位~
[解决办法]
琢磨中 有注释真好
[解决办法]
学习学习!
[解决办法]
真的有分么?好久没得了
[解决办法]
不错,顶一下
[解决办法]
......顶...........
[解决办法]
不是很了解!