数保软件服务热线
新闻中心

您当前的位置:主页 > 新闻中心 > 技术交流 > 技术交流

AUL/MyDUL 非常规灾难恢复ORACLE数据

打印 打印 来源 数保计算机 点击:
编辑:数保计算机 时间:2014-06-10 11:44

AUL(MyDUL)工具简介

    从2005年开始,AUL (MyDUL)已经为全球不同国家及地区的众多客户恢复了数十TB计的Oracle数据,从损坏的Oracle 8, Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g及Oracle ASM上为客户快速恢复数据. AUL(MyDUL)可以脱离Oracle运行环境,直接从数据文件中读取记录,与官方工具Oracle DUL具有同等功效并且功能更加丰富。当你遇到下列极端情况,并且没有有效备份(客户有备份动作,备份不起作用的情况也遇到过)用来恢复数据时, AUL(MyDUL)是往往是你最后的机会. 一直坚持“拯救数据,帮助客户”的原则!在最新版本AUL 6中, 可以直接访问Oracle ASM来恢复数据,或从Oracle ASM中将数据文件拷贝出来。

 

  • 1. 完全丢失系统表空间
  • 2. 系统表空间有坏块
  • 3. 表空间被删除,但数据文件还存在
  • 4. 表被删除后,马上停止操作,空间未被重用
  • 5. 表被清空(Truncate)后马上停止操作,空间未被重用
  • 6. 一个表空间丢失了部份文件,或文件中有坏块,无法自我修复
  • 7. Oracle ASM存贮损坏,或Oracle ASM磁盘损坏
  • 8. 其他无法正常打开数据库或无法查询数据的情况

AUL(MyDUL)功能列表

 

  • 支持Oracle 8/8i/9i/10g/10g/11g等不同版本
  • 直接访问Oracle ASM存贮,无需先将文件拷出来
  • 从损坏的Oracle ASM中拷出数据文件到文件系统
  • 支持普通表(Table)/聚族(Cluster)/索引组织表(IOT)
  • 数据类型支持
    1. NUMBER
    2. DATE
    3. CHAR
    4. NCHAR
    5. VARCHAR2
    6. NVARCHAR2
    7. RAW
    8. LONG
    9. LONG RAW
    10. BINARY_FLOAT
    11. BINARY_DOUBLE
    12. TIMESTAMP
    13. TIMESTAMP WITH TIME ZONE
  • 可以将数据恢复成格式化文本文件,或者Oracle 8.1.7版本的DMP格式文件
  • 在System表空间有效的情况下,可以自动生成SQL*Loader控制文件,方便数据装载
  • 使用标准C语方编写,可以运行在Windows (VC6), Linux (gcc), Solaris (gcc)等不同平台上
  • 支持跨平台交叉恢复,比如在Windows上也可以恢复AIX下的Oracle数据库
  • CLOB/BLOB支持
    1. 支持inline-lob, enable storage in row LOB和disable storage in row LOB.
    2. 支持不同CHUNK大小的CLOB/BLOB,同一个表不同的LOB CHUNK大小不支持.
    3. CLOB/BLOB数据可以导出成独立的文件,或者DMP格式文件.
    4. 集成ICONV库,支持CLOB字符集转换.
  • 无System表空间的CLOB/BLOB数据恢复.
  • 从AUl 5版本开始支持压缩(Compress)表.
  • 从AUl 5版本开始支持压缩(Compress)的索引组织表(IOT).


    如果你没有丢失迭制文件, 则可以从视图V$DATABASE查询取得. 否则你需要手工从磁盘中根据存留的文件, 来列出所有的文件.
SQL> col name format a40
SQL> select file#,rfile#,name from v$datafile;
     FILE#     RFILE# NAME
---------- ---------- ----------------------------------------
         1          1 C:\ORACLE\ORADATA\SYSTEM01.DBF
         2          2 C:\ORACLE\ORADATA\UNDOTBS01.DBF
         3          3 C:\ORACLE\ORADATA\SYSAUX01.DBF
         4          4 C:\ORACLE\ORADATA\TEST01.DBF
         5          5 C:\ORACLE\ORADATA\AULTEST01.DBF
创建一个AUL/MyDUL使用的配置文件
    配置文件是一个文本文件, 你可以用任何文本编辑器编辑. 文件应当包括三个列(文件号,相对文件号,文件名), 中间以空格分隔. 我们将上面的记录拷贝到文件db10g.cfg中就可以了. 如果数据文件的文件头块没有损坏, 文件号和相对文件号这两列的值是无关紧要的, 在打开时会自动读取文件头进行修正; 文件中不能包括空格, 否则请重命令文件去掉空格.
C:\MYDUL>type db10g.cfg
         0          0 C:\ORACLE\ORADATA\SYSTEM01.DBF
         0          0 C:\ORACLE\ORADATA\UNDOTBS01.DBF
         0          0 C:\ORACLE\ORADATA\SYSAUX01.DBF
         0          0 C:\ORACLE\ORADATA\TEST01.DBF
         0          0 C:\ORACLE\ORADATA\AULTEST01.DBF
在AUL/MyDUL中打开配置文件
    AUL/MyDUL从这个配置文件中读取数据文件列表, 成功打开后并读取文件头, 叫正配置文件中错误的"文件号"和"相对文件号". 在这里我们虽然有5个文件, 但由于我们没有使用正式的许可证号, 免费的许可证只能让我们打开前面的2个文件, 并只能读取每个文件前面的256M.
Register Code: 55E2-4639-864D-F8C3
AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g, Trial Version 3.1.9
(C) Copyright Lou Fangxin 2005-2006 (AnySQL.net), all rights reserved.
AUL> open db10g.cfg
*  ts#  fno  rfn ver bsize     blocks filename
- ---- ---- ---- --- ----- ---------- -----------------------------------
Y    0    1    1 a2   8192      32768 C:\ORACLE\ORADATA\SYSTEM01.DBF
Y    1    2    2 a2   8192       8192 C:\ORACLE\ORADATA\UNDOTBS01.DBF
Y    2    3    3 a2   8192       8192 C:\ORACLE\ORADATA\SYSAUX01.DBF
Y    4    4    4 a2   8192       3072 C:\ORACLE\ORADATA\TEST01.DBF
生成AUL/MyDUL的数据字典
    AUL/MyDUL可以根据"SYS.USER$","SYS.OBJ$","SYS.TAB$","SYS.COL$"四个系统表中的记录来生成所需的数据字典, 有数据字典的情况下恢复要容易得多.
AUL> UNLOAD TABLE USER$;
2006-08-04 09:39:00
2006-08-04 09:39:00
AUL> UNLOAD TABLE OBJ$;
2006-08-04 09:39:07
2006-08-04 09:39:08
AUL> UNLOAD TABLE TAB$;
2006-08-04 09:39:12
2006-08-04 09:39:13
AUL> UNLOAD TABLE COL$;
2006-08-04 09:39:17
2006-08-04 09:39:18
AUL> ! dir AUL*.TXT
Volume in drive C has no label.
Volume Serial Number is 5CF4-08FE

使用LIST命令来生成恢复用的角本
    命令"LIST TABLE 用户名 TO 角本文件名"可以用来生成恢复某个用户下所有表的AUL/MyDUL命令, 在这儿我省略了"TO 角本文件名", 将所有命令输出到屏幕上.
AUL> LIST TABLE MYDUL
UNLOAD TABLE MYDUL.T_PART TO T_PART.txt;
UNLOAD TABLE MYDUL.T_OBJECT TO T_OBJECT.txt;
UNLOAD TABLE MYDUL.T_LOB TO T_LOB.txt;
UNLOAD TABLE MYDUL.T_CLOB TO T_CLOB.txt;
UNLOAD TABLE MYDUL.T_PART PARTITION P2 TO T_PART_P2.txt;
UNLOAD TABLE MYDUL.T_PART PARTITION P1 TO T_PART_P1.txt;
运行恢复命令来恢复数据
    我们来偿试恢复分区表"T_PART", 对于分区表一个分区会有一条命令. 在这儿省略了"TO 文件名", 因此所有记录直接显示在屏幕上.
AUL> UNLOAD TABLE MYDUL.T_PART PARTITION P2;
2006-08-04 09:40:42
Unload OBJD=9928 FILE=4 BLOCK=19 CLUSTER=0 ...
150,1
2006-08-04 09:40:42
AUL> UNLOAD TABLE MYDUL.T_PART PARTITION P1;
2006-08-04 09:40:51
Unload OBJD=9927 FILE=4 BLOCK=11 CLUSTER=0 ...
50,1
2006-08-04 09:40:51
实例:
 
(1)  Dbcfg 文件内容:
 
     1          1 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\SYSTEM01.DBF
     2          2 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\UNDOTBS01.DBF
     3          3 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\SYSAUX01.DBF
     4          4 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\USERS01.DBF
     5          5 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\backup.DBF
    
(2) 字符集:
 
           852 = zhs16gbk
     Set charset 852
 
 (3)   set licence  注册号
 
 
(4)
SET BLOCK_SIZE    {2048 | 4096 | 8192 | 16384 | 32768}
 SET BYTE_ORDER    {BIG | LITTLE}
 SET DELETED_ROW   {TRUE | FALSE}
 SET COMMITED_ONLY {TRUE | FALSE}
 SET FIELD_TAG     field_tag
 SET RECORD_TAG    record_tag
 SET CACHE_SIZE    kbytes (64 - 8192)
 SET OUTPUT_STYLE  {TXT | DMP}
 SET CHARSET       charsetid
 SET NLSCHARSET    charsetid
 SET FIXED_CHARSET {true | false}
 SET BLOCK_CHECK   {0 | 1}
 SET HEAD_SIZE     header size (default 0)
 SET VERBOSE       {0 | 1}
 SET CLOB_EDIAN    {BIG | LITTLE}
 SET LOB_CONVERT   {0:NONE | 1:GBK | 2:UTF8}
 SET LOB_STORAGE   {0:INLINE | 1:FILE | 2:NONE}
 SET MAXLOBDIR     values between 100  and 2000
 SET MAXCHAINS     integer value
 SET BIGFILE       {Yes | NO}
 SET ICONV_NCHAR   from_iconv_charset to_iconv_charset
 SET ICONV_NCLOB   from_iconv_charset to_iconv_charset
 SET ICONV_CLOB    from_iconv_charset to_iconv_charset
 
 相关参数可以进行设置
 
 
*  ts#  rfn ver bsize     blocks   sizemb filename
- ---- ---- --- ----- ---------- -------- -----------------------------------
Y    0    1 a2   8192      62720        0 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\S
YSTEM01.DBF
Y    1    2 a2   8192      12800        0 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\U
NDOTBS01.DBF
Y    2    3 a2   8192      32000        0 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\S
YSAUX01.DBF
Y    4    4 a2   8192      50720        0 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ETA\U
SERS01.DBF
Y    6    5 a2   8192     640000        0 F:\ORADATA\backup.DBF
AUL> unload table user$
   2 ;
2014-06-08 13:12:39
2014-06-08 13:12:39
AUL> unload table obj$;
2014-06-08 13:12:49
2014-06-08 13:12:50
AUL> unload table tab$;
2014-06-08 13:13:04
2014-06-08 13:13:04
AUL> unload table col$;
2014-06-08 13:13:15
2014-06-08 13:13:16
AUL>list table system
AUL>list table  ics8000
 
 
 
 
 





Copyright © 2015-2022 长沙数保信息科技有限公司 ┇ 湘ICP备08103633号 湘公网安备 43011102000746号

地址:长沙市岳麓区润花园D1-903 公司邮箱:dpisi@163.com
7*24小时技术支持服务热线:0731-85057097/13607439515 QQ: 400528 或 156462627

湘公网安备 43011102000746号