HelloDBA [English]
搜索Internet 搜索 HelloDBABA
  Oracle技术站。email: fuyuncat@gmail.com  MSN: fuyuncat@hotmail.com   acoug  acoug 

Fy_Recover_Data 更新 (2014-02-20)--- 支持ASM表空间上的表恢复

[English]

作者: fuyuncat

来源: www.HelloDBA.com

日期: 2016-02-19 22:07:41

分享到  新浪微博 腾讯微博 人人网 i贴吧 开心网 豆瓣 淘宝 推特 Facebook GMail Blogger Orkut Google Bookmarks

Fy_Recover_Data 现在可以恢复创建在ASM表空间上的表被TRUNCATED的数据 

此次更新包括以下修改内容:

  -- 19/02/2014, Fuyuncat:                                                ---

  --   1. 用户指定临时目录用于创建恢复过程中用的表空间和数据文件

  --   2. 可以处理表空间包含多个创建在不同物理位置的数据文件的情况.

  --   3. 可以恢复ASM表空间上的表

一个新的接口:

SQL代码
  1. /************************************************************************  
  2. ** recover truncated table  
  3. **  
  4. ** tgtowner: Owner of Target Table to be recovered;  
  5. ** tgttable: Name of Target Table to be recovered;  
  6. ** datapath: Absolute path of Data Files;  
  7. ** fbks: block number to be filled in recovery table;  
  8. ************************************************************************/  
  9. procedure recover_truncated_table( tow varchar2 default 'DEMO',   
  10.                                    ttb varchar2 default 'T_CHAIN',  
  11.                                    fbks number default 1,   
  12.                                    tmppath varchar2 default '/tmp/');  

删除了不必要的接口

SQL代码
  1. HelloDBA.COM> create tablespace asm_data datafile '+DATA1' autoextend on maxsize 1g;  
  2.   
  3. Tablespace created.  
  4.   
  5. HelloDBA.COM> create table demo.t_asmtable tablespace asm_data as select * from dba_objects where 1=2;  
  6.   
  7. Table created.  
  8.   
  9. HelloDBA.COM> alter tablespace asm_data add datafile '/u01/app/oracle/oradata/dbat1/asm_data_fs.dat' size 100M;  
  10.   
  11. Tablespace altered.  
  12.   
  13. HelloDBA.COM> insert into demo.t_asmtable select * from dba_objects;  
  14.   
  15. 91155 rows created.  
  16.   
  17. HelloDBA.COM> select count(*) from demo.t_asmtable;  
  18.   
  19. HelloDBA.COM>  
  20.   COUNT(*)  
  21. ----------  
  22.      91155  
  23.   
  24. HelloDBA.COM> truncate table demo.t_asmtable;  
  25.   
  26. Table truncated.  
  27.   
  28. HelloDBA.COM> exec fy_recover_data.recover_truncated_table('DEMO','T_ASMTABLE',1,'/tmp');  
  29. 10:46:55: Directory Name: FY_DATA_DIR2  
  30. 10:46:56: Recover Table: DEMO.T_ASMTABLE$  
  31. 10:46:56: Restore Table: DEMO.T_ASMTABLE$$  
  32. 10:47:08: Copy file of Recover Tablespace: FY_REC_DATA_COPY.DAT  
  33. 10:47:08: begin to recover table DEMO.T_ASMTABLE  
  34. 10:47:09: Directory Name: TMP_HF_DIR  
  35. 10:47:10: Recovering data in datafile /u01/app/oracle/oradata/dbat1/asm_data_fs.dat  
  36. 10:47:10: Directory Name: TMP_DATA_FILE_DIR4  
  37. 10:47:19: 630 truncated data blocks found.  
  38. 10:47:19: 43830 records recovered in backup table DEMO.T_ASMTABLE$$  
  39. 10:47:19: Recovering data in datafile +DATA1/dbat1/datafile/asm_data.360.839931591  
  40. 10:47:19: Directory Name: TMP_DATA_FILE_DIR4  
  41. 10:47:30: 686 truncated data blocks found.  
  42. 10:47:30: 47325 records recovered in backup table DEMO.T_ASMTABLE$$  
  43. 10:47:30: Total: 1316 truncated data blocks found.  
  44. 10:47:30: Total: 91155 records recovered in backup table DEMO.T_ASMTABLE$$  
  45. 10:47:30: Recovery completed.  
  46. 10:47:30: Data has been recovered to DEMO.T_ASMTABLE$$  
  47.   
  48. PL/SQL procedure successfully completed.  
  49.   
  50. HelloDBA.COM> select count(*) from DEMO.T_ASMTABLE$$;  
  51.   
  52.   COUNT(*)  
  53. ----------  
  54.      91155  

点击此处:下载源代码

 

--- Fuyuncat ---

Top

Copyright ©2005,HelloDBA.Com 保留一切权利

申明
by fuyuncat