mydul实验与学习

来源:互联网 发布:最近淘宝流量出奇的少 编辑:程序博客网 时间:2024/06/05 03:02

itpub高手如云,各种块读取,各种非常规恢复

这个mydul太好了,论坛帖子地址:

http://www.itpub.net/thread-550802-1-1.html

但是没开源,很遗憾

使用方法:
/home/sun/src/mydul>mydul
PAY ATTENTION,THIS TOOL IS DESUPPORTED BY ORACLE
Usage: mydul -s system file -d datafile [ -t table name ] [-u owner name]
[-p output path] [-f full scan flag]
-s:     the oracle system tablespace datafile        系统数据文件
-d:     the datafile will be duled                用户数据文件
-t:     data of the table will be duled                对指定的表进行挖掘(表名)
-u:     data of user will be duled                对该用户的数据进行挖掘
-p:     path of the output file                        指定输出文件存放的路径
-f:     full scan flag,ignore the extent map        数据文件全扫描
Version:  1.2           Author: WZSH-SUN
Contact me: Email:wzsh-sun@wzccb.com  MSN:jerrysun1981@hotmail.com

注意:
1、系统数据文件是必须要的,因为表结构的定义都在系统数据文件中,不然数据就算挖出来也没有什么意义。
2、-s -d参数是必须的,其他参数可以选填

输出:
被挖掘的每个表的结构和数据被写在一个文件里,格式为:USER_TABLENAME.txt
如:
CREATE TABLE LONC_COLLATE (
PLEDGE_CONTRACT_NO            CHAR(30),
ACCT_SEQNO                    NUMBER(8),
CONTRACT_NO                   CHAR(30),
OPER_NO                       CHAR(8),
TRANS_DATE                    DATE,
SET_DATE                      DATE
);


insert into LONC_COLLATE values ('7352004A259                   ',2004233,'WZCB7
352005Jb00195            ','00494   ',to_date('2005-06-06 00:00:00','YYYY-MM-DD
hh24:mi:ss'),to_date('2005-06-06 00:00:00','YYYY-MM-DD hh24:mi:ss'));
insert into LONC_COLLATE values ('80120050125                   ',20050297,'WZCB
8012005Jb00480            ','01032   ',to_date('2005-06-06 00:00:00','YYYY-MM-DD
hh24:mi:ss'),to_date('2005-06-06 00:00:00','YYYY-MM-DD hh24:mi:ss'));



特点:
1、目前支持linux,aix下oracle 9i 10g各种block_size的数据库的挖掘(我想对其他UNIX系统应该也支持,只是没环境编译测试)
2、支持普通数据文件和裸设备的数据挖掘(由于没有linux裸设备环境,只测了aix)
3、支持普通表空间和assm表空间的数据挖掘
4、支持行迁移和行链接的数据挖掘
5、支持的数据类型包括NUMBER,CHAR,VARCHAR2,NCHAR,NVARCHAR2,DATE,TIMESTAMP,RAW,BFILE,LONG,ROWID

需完善的:
1、目前不支持一个segment有多个extent map的情况,由于环境有限,这种情况也比较难模拟
2、不支持大数据类型
3、测试不足

例子:
$ ls
archs          demo01.dbf  redo21.log  sysaux01.dbf  undotbs01.dbf
control01.ctl  demo02.dbf  redo31.log  system01.dbf
control02.ctl  redo11.log  sun         temp01.dbf
$ mydul -s system01.dbf -d demo01.dbf demo02.dbf
-----------------数据库基本信息--------------------
数据库名称[SUN16K]
数据库ID[198075710]
数据库块大小[16384]
---------------------------------------------------
正在挖掘BOOTSTRAP$数据,共2块,已经挖掘[2]块
正在挖掘OBJ$数据,共51块,已经挖掘[51]块
正在挖掘TAB$数据,共236块,已经挖掘[236]块
正在挖掘USER$数据,共1块,已经挖掘[1]块
正在挖掘T1数据,共53块,已经挖掘[53]块
正在挖掘T2数据,共12块,已经挖掘[12]块
正在挖掘T3数据,共1块,已经挖掘[1]块
挖掘结束,共消耗[3]秒时间,共挖掘[3]个表
$ ls
DEMO_T1.txt  archs          demo01.dbf  redo21.log  sysaux01.dbf  undotbs01.dbf
DEMO_T2.txt  control01.ctl  demo02.dbf  redo31.log  system01.dbf
DEMO_T3.txt  control02.ctl  redo11.log  sun         temp01.dbf

由于前前后后花了一个月不到的时间,所以测试是很不够的,我测试使用的环境是aix5l和linux as3
希望大家帮忙测试一下,测出BUG的以后免费提供使用。
----------------------------------------------------------------------------------------------

使用方法:

SQL> shutdown immediate                                                                                                                                               
Database closed.
Database dismounted.
ORACLE instance shut down.

./mydul_linux -s system02.dbf -dtest01.dbf

-----------------数据库基本信息--------------------
数据库名称[DUXIU]
数据库ID[1418004073]
数据库块大小[8192]
---------------------------------------------------
正在挖掘BOOTSTRAP$数据,共3块,已经挖掘[3]块
正在挖掘OBJ$数据,共611块,已经挖掘[611]块
正在挖掘TAB$数据,共852块,已经挖掘[852]块
正在挖掘USER$数据,共3块,已经挖掘[3]块
正在挖掘DUL数据,共12157块,已经挖掘[12157]块
挖掘结束,共消耗[47]秒时间,共挖掘[1]个表
[oracle@hadoop-m1 duxiu]$

SCOTT_DUL.txt 即是生成的文件

[oracle@hadoop-m1 duxiu]$ more SCOTT_DUL.txt
CREATE TABLE DUL (
OWNER                         VARCHAR2(30),
OBJECT_NAME                   VARCHAR2(128),
SUBOBJECT_NAME                VARCHAR2(30),
OBJECT_ID                     NUMBER,
DATA_OBJECT_ID                NUMBER,
OBJECT_TYPE                   VARCHAR2(19),
CREATED                       DATE,
LAST_DDL_TIME                 DATE,
TIMESTAMP                     VARCHAR2(19),
STATUS                        VARCHAR2(7),
TEMPORARY                     VARCHAR2(1),
GENERATED                     VARCHAR2(1),
SECONDARY                     VARCHAR2(1)
);


insert into DUL values ('SYS','ICOL$',NULL,20,2,'TABLE',to_date('2005-06-30 19:10:16','YYYY-MM-DD hh24:mi:ss'),to_date('2005-06-30 19:28:30','YYYY-MM-D
D hh24:mi:ss'),'2005-06-30:19:10:16','VALID','N','N','N');
insert into DUL values ('SYS','I_USER1',NULL,44,44,'INDEX',to_date('2005-06-30 19:10:16','YYYY-MM-DD hh24:mi:ss'),to_date('2005-06-30 19:10:16','YYYY-M
M-DD hh24:mi:ss'),'2005-06-30:19:10:16','VALID','N','N','N');

。。。。。。。。。。。。。。。。。。。。