您的位置:首页 > 运维架构

如何实施已删除表的恢复(Dropped Table Recovery)

2012-08-14 10:26 302 查看
1. 首先数据库要可以前滚恢复(数据库配置参数logretain或userexit打开)。 
2. 对要实施Drop Table Recovery的表空间(限regular tablespace),执行: 
alter tablespace 表空间名 dropped table recovery on 
3. 用 list history dropped table all for 数据库名 得到删除表的tableid(例如 0000000000006d0000020003)和表结构的生成语句(DDL),记录tableid和该语句以便恢复。之后,用drop命令删除的表中的数据可以在前滚恢复时导出。 
4. 恢复数据库后,如果想恢复已删除的表,在前滚时加recover dropped table tableid to 目标目录 。 在该目录下被删除的表中的数据导出,例如导出至 ../NODE0000/data文件。利用上面提到表结构生成语句生成被删除了的表,然后用import命令将数据导入表中。 
如何生成所有对象的DDL 
db2look -d DB_NAME -a -e -m -l -f -o filename.sql 
多表的关联更新方法 
db2的update语法不支持“update table1 set t1.col1=t2.value1 from table1 t1,table2 t2 where …”的写法,但是可以通过如下方法解决: 
update table1 t1 set t1.col1=(select t2.col1 from table2 t2 where …) 
例: 
update test t1 set (t1.username,t1.instcode) = (select t2.instcode,t2.instname from sysinsttb t2 where t2.instcode=t1.instcode); 
获取操作(insert、update)的记录数 
GET DIAGNOSTICS rcount=ROW_COUNT; 
注: 
get diagnostics rcount =ROW_COUNT; 只对update,insert,delete起作用. 不对select into 有效 
如何获取SQL执行计划 
SQL 解释工具 
SQL 解释工具提供查询优化器为 SQL 语句所选择的访问计划的有关详细信息。该信息存储在 EXPLAIN 表中,可以在稍后使用诸如 Visual Explain、db2expln、dynexpln 和 db2exfmt 的工具进行格式化,从而以友好的可视方式进行表示。 
EXPLAIN 表可以在您第一次使用 Visual Explain 时自动进行创建。即使没有创建它们,您也可以手工进行创建,如下: 
% cd <db2 install path>sqllibmisc 
% db2 connect to bank 
% db2 -tvf EXPLAIN.DDL 
本文中,我们使用 db2exfmt 工具。例如,使用 db2exfmt 解释动态 SQL 语句,在 DB2 命令窗口中按照下列步骤进行: 

% db2 connect to <database_name> 
% db2 set current explain mode explain 
% db2 -tvf <Input file with an SQL statement ended with a semicolon> 
% db2 set current explain mode no 
% db2exfmt -d <dbname> -g TIC -w -1 -n % -s % -# 0 -o <output file> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息