Oracle DULAULODU

    xiaoxiao2021-03-25  93

    假设我们的数据库遇到以下情况:

        第一, 没有备份;

        第二, 常规方法无法恢复;

        第三, 数据很重要, 但又无法或成本太高而进行重新输入. 如丢失了Oracle的System表空间, System表空间损坏到无法启动的地步, 意外删除表空间或表, 意外截断(Truncate)表等,

     

    在这3中情况下, 最后的方法就是通过工具直接读取数据文件里的数据,将我们的数据找回来。并且工具不需要Oracle 环境的支持。

     

    据我目前的了解,有3种工具:

    (1)Oracle 的内部工具是DUL(Data UnLoader)。 这个需要Oracle 的支持。

    (2)老熊写的ODU。 网址:http://www.oracleodu.com/en/

    (3)d.c.b.a (支付宝 楼方鑫)写的AUL. 网址:http://www.anysql.net/download

     

    ODU 之前是免费的, 现在老熊和dbsnake 在维护ODU,需要购买才能使用。 

    d.c.b.a的AUL 是用C 语言写的, 免费版本最大只支持2个,最大256M的datafile。 如果是更大的datafile,也是需要购买授权。

     

           能写出这样的软件都是牛人了,需要了解各个版本Oracle block的详细信息。 AUL 和 ODU的操作和Oracle DUL 类似。

     

    关于DUL,MOS 有说明: MOS Note 72554.1

       Using DUL to Recover fromDatabase Corruption

     

    Table Of Contents ~~~~~~~~~~~~~~~~~ 1. Introduction 2. Using DUL   2.1 Create an appropriate init.dul file   2.2 Create the control.dul file   2.3 Unload the object information   2.4 Invoke DUL   2.5 Rebuild the database 3. How to rebuild object definitions that are stored in the data dictionary ? 4. How to unload data when the segment header block is corrupted ? 5. How to unload data when the file header block is corrupted ? 6. How to unload data without the system tablespace ? 7. Appendix A : Where to find the executables ? 8. References   1. Introduction ~~~~~~~~~~~~~~~   This document is to explain how to use DUL rather than to give a full explanation of Bernard's Data UnLoader capabilities.   This document is for internal use only and should not be given to customers at any time, Dul should always be used by or under the supervision of a support analyst.   DUL (Data UnLoader) is intended to retrieve data from the Oracle Database that cannot be retrieved otherwise. This is not an alternative for the export utility or SQL*Loader. The database may be corrupted but an individual data block used must be 100% correct. During all unloading checks are made to make sure that blocks are not corrupted and belong to the correct segment. If a corrupted block is detected by DUL, an error message is printed in the loader file and to the standard output, but this will not terminate the unloading of the next row or block.   2. Using DUL ~~~~~~~~~~~~   First you must retrieve the necessary information about the objects that exists in the database, these statistics will be loaded into the DUL dictionary to unload the database objects.   This information is retrieved from the USER$, OBJ$, TAB$ and COL$ tables that were created at database creation time, they can be unloaded based on the fact that object numbers are fixed for these tables due to the rigid nature of sql. bsq. DUL can find the information in the system tablespace, therefor the system tablespace datafile(s) must be included in the control file, if this datafile(s) is not present see chapter 6.   2.1 Create an appropriate "init.dul" file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       REM Platform specific parameters (NT)     REM A List of parameters for the most common platforms can be obtained from     REM http://www.nl.oracle.com/support/dul/index.html     osd_big_endian_flag=false     osd_dba_file_bits=10     osd_c_struct_alignment=32     osd_file_leader_size=1     osd_word_size = 32       REM Sizes of dul dictionary caches. If one of these is too low startup will     REM fail.     dc_columns=2000000     dc_tables=10000     dc_objects=1000000     dc_users=400     dc_segments=100000       REM Location and filename of the control file, default value is control.dul     REM in the current directory     control_file = D:\Dul\control_orcl.dul       REM Database blocksize, can be found in the init<SID>.ora file or can be     REM retrieved by doing "show parameter
    转载请注明原文地址: https://ju.6miu.com/read-18307.html

    最新回复(0)