首页 | 摘要显示 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 下一页

AUL/MyDUL Archives

August 18, 2006

AUL/MyDUL更新到3.2.0版本

    此次更新内容:

1, 改变动态注册码的长度.
2, 标记为坏块之前检查是否已经标记过了.
3, 更改查找坏块列表的算法,采用二分法, 提高效率.
4, 增加一个新的命令"corrupt list"来显示已经标记的坏块.

    请看如下例子:

Register Code: Z239-VV3O-HT3G-AA43-G027
AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g, release 3.2.0

(C) Copyright Lou Fangxin 2005-2006 (IamDBA.com), all rights reserved.

AUL> open db10g.cfg
*  ts#  fno  rfn ver bsize     blocks filename
- ---- ---- ---- --- ----- ---------- -----------------------
Y    0    1    1 a2   8192      32768 SYSTEM01.DBF
Y    1    2    2 a2   8192       8192 UNDOTBS01.DBF
Y    2    3    3 a2   8192       8192 SYSAUX01.DBF
Y    4    4    4 a2   8192       3072 TEST01.DBF
AUL> corrupt file 4 block 10
AUL> corrupt file 4 block 11
AUL> corrupt file 4 block 8
AUL> corrupt file 4 block 11
AUL> corrupt file 4 block 4
AUL> corrupt list
Corrupted Blocks List:
  RDBA = 16777220 , FILE = 4 , BLOCK = 4
  RDBA = 16777224 , FILE = 4 , BLOCK = 8
  RDBA = 16777226 , FILE = 4 , BLOCK = 10
  RDBA = 16777227 , FILE = 4 , BLOCK = 11
AUL> bcheck rdba 16777224
Block Tail Unmatched!
AUL> bcheck rdba 16777223
Block Tail Matched!

    由于注册码的长度变化,Key值也发生变化, 重新下载最新版.

AUL/MyDUL更新到3.2.1版本

    此次更新内容:

1, 更改"UNLOAD OBJECT"命令的默认列类型为"RAW",原先为跳过没有指定的列.
2, 提高"SCAN TABLE"命令中列类型自动猜测的准确度.
3, 改变"SCAN TABLE"命令实现的逻辑过程, 获得更好更全的输出.

    现在我们在一个2M的表空间中创建一个小表,如下所示:

CREATE TABLE TEST
(
   COL1 CHAR(10),
   COL2 VARCHAR2(10),
   COL3 DATE, COL4 NUMBER,
   COL5 BINARY_FLOAT,
   COL6 BINARY_DOUBLE
);

INSERT INTO TEST VALUES('A','A1',SYSDATE,1.11,1.0,1.0);
INSERT INTO TEST VALUES('B','B1',SYSDATE,2.11,2.0,2.02);
INSERT INTO TEST VALUES('C','C1',SYSDATE,3.11,3.0,3.02);
INSERT INTO TEST VALUES('D','D1',SYSDATE,4.11,4.0,4.02);
INSERT INTO TEST VALUES('E','E1',SYSDATE,5.11,5.0,5.02);

阅读全文

在AUL/MyDUL中如何处理坏块/死块?

    在Oracle中偶儿会遇到坏块而不能读取的情况, 这时我们首先要想到的是从备份中恢复. 当有一个坏块时, 你就应当用RMAN或DBV去检查整个文件, 它们可以帮助你找出这个文件中所有的坏块. 在AUL/MyDUL中, 坏块并不一定是不能恢复的, 只有那些引起了AUL/MyDUL程序异常退出的坏块(已经遇到过几次了)才是问题, 异常退出通常是因为程序访问内存出了边界. 对于这些块我将他们命名为死块, 处理这种块时需要额外的步骤.

    首先是要将他们找出来, 通过设置"set verbose 1"这样的调试命令, AUL/MyDUL会在屏幕上打印出当前正在处理的块的地址(RDBA). 当程序退出时, 我们只需要将最后一行中的块地址标记为死块就行了, 然后重新开始恢复. 如果数据文件中有多个这样的块, 我们可能要这样进行好多个回合. 如下所示:

AUL> set verbose 1
  Current VERBOSE is : 1
AUL> unload table mydul.t_lob to t_lob.txt;
2006-08-12 14:11:15
Unload OBJD=9946 FILE=4 BLOCK=219 CLUSTER=0 ...
Recover rows from RDBA=16777436 ...
Recover rows from RDBA=16777437 ...
Recover rows from RDBA=16777438 ...
Recover rows from RDBA=16777439 ...
Recover rows from RDBA=16777440 ...
<< program aborted here>>

阅读全文

September 4, 2006

AUL/MyDUL恢复成DMP格式时的注意事项

    AUL/MyDUL的基本目标是恢复数据, 所以恢复出来的DMP格式文件只包括了一个基本的建表语句和所有的数据. 和exp工具导出生成的文件不同, 在exp的文件中包括了建表的完全语法, 及其索引, 约束及触发器. 在AUL/MyDUL生成的文件中不会包括以下信息:

  1. 表的Storage子句及其他属性
  2. 分区表或子分区的定义
  3. 表的索引信息
  4. 除非空(Not Null)之外的其他所有约束
  5. 列上的默认值
  6. 建在表上的索引
  7. 表的权限信息

    生成的DMP格式文件总是以"mydul"用户导出的; 并且一个表只能生成一个DMP文件, 不能象exp那样用FILESIZE选项来指定文件大小来生成多个文件; DMP文件的版本是8.1.7, 那怕你的数据库是8.1.7以前的版本, 所以在恢复时必须用8.1.7以上的版本的exp来进行导入.

    关于多个DMP文件的支持, 也许会在以后的版本中实现.

September 5, 2006

没有SYSTEM时如何恢复数据?

    在Oracle数据库中, 所有的表结构的信息都存放在SYSTEM表空间中. 光从数据文件的角度看, 我们只能从文件中找到一个数据对象的编号及你 想要的数据. 在丢失SYSTEM的情况下, 还是可以通过扫描所有的数据文件而恢复数据. 但是并不知道这些记录本属于那个表, 需要DBA和开发人员一起去确定这些 记录是那个表的. 下面是一个用AUL/MyDUL去做没有SYSTEM的恢复的例子.

    我创建了一个只有2M大小的表空间(一个数据文件, 压缩后6KB), 并在这个表 空间上创建了几张表, 插入一些记录, 然后在Oracle中发一个Checkpoint命令或正常关闭, 以让Oracle将所有的内容写入文件中. 创建表的SQL语句如下:

SQL> CREATE TABLE TEST1 (COL1 VARCHAR2(10));
SQL> CREATE TABLE TEST2 (COL1 VARCHAR2(10));
SQL> CREATE TABLE TEST3 (COL1 VARCHAR2(10));

    接下来我们编辑一个配置文件并打开, 运行"SCAN TABLE TO 文件"来扫描文件获得恢复的命令. 如下所示:

AUL> open db10g.cfg
*  ts#  fno  rfn ver bsize     blocks filename
- ---- ---- ---- --- ----- ---------- ----------------------
Y    5    5    5 a2   8192        256 AULTEST01.DBF
AUL> scan table to scan_table.log
2006-08-12 13:02:43
2006-08-12 13:02:43

    接下来我们来检查生成的"scan_table.log"文件, 你可以看到很多信息, 其中以"CMD:"开头的行为AUL/MyDUL自动猜测列类型和数量以后自动 生成的恢复命令, 这儿不保证能正确认识所有列的类型, 所以称之为猜. 另外对于每一个不同的数据对象, 会以二进制打印出5条样本记录. 通过Linux/Unix"下 的grep命令, 很容易生成恢复的角本的. 扫描出来的结果中也包括了DROP或TRUNCATE了的表的数据, 总之是包括了现在还留在数据文件中的所有数据对象.下面是 这个命令的结果:

阅读全文

1 2 3 4 5 6 7 8 9 10 11 12 13 14 下一页

当前分类: AUL/MyDUL

Creative Commons License
本站版权: 共用创作 CC
署名-非商业性-相同方式分享
本站基于MT-3.36免费版
(©)版权所有, 2004 - 2008, www.AnySQL.net, 保留所有权利.
MSN: loufangxin(a)msn.com, Mail: anysql(at)126.com/support(at)iamdba.com, Skype ID:anysql