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

AUL/MyDUL Archives

April 8, 2007

全套出售AUL/MyDUL, 包括源代码, 请估值!

    AUL是本人开发的一个在极端情况下进行Oracle数据恢复的软件, 具有很高的科技含量和一定的商业价值. 什么是极端情况? 第一, 没有备份; 第二, 常规方法无法恢复; 第三, 数据很重要, 但又无法或成本太高而进行重新输入. 如丢失了Oracle的System表空间, System表空间损坏到无法启动的地步, 意外删除表空间或表, 意外截断(Truncate)表等, 在过去的两年中, AUL已经成功地为十几个客户救回了超过300G/几十亿条记录的数据. 现在最新版本已经支持Oracle CLOB/BLOB类型, 已有LOB类型成功恢复的经验, 功能上来说已经相当完善和稳定了.

    为什么出售? 1, 本人没有信心和能力去开一个公司; 2, 这样的工具以私人方式经营, 其价值严重被贬值, 通过对比Oracle提供的服务价格和我的价格, 得出这个结论; 3, 一些其他原因; 4, 本人最近需要用钱.

    达成交易后出售方的责任: 1, 提供全套源代码; 2, 停止本站AUL软件的下载; 3, 视购买方需要, 删除本站有关页面, 或在所有页面中指明请与购买方联系; 4, 提供一个月的技术培训; 5, Oracle 11g出来后, 进行相应的研究, 以支持该最新版本; 6, 不再接受AUL软件的数据恢复业务, 推荐人家联系购买方; 7, 由购买方决定是否需要本站一年的免费链接广告; 8, 全球范围内只卖给一个客户, 不得同时卖给多个客户.

    达成交易后购买方的责任: 1, 按时支付购买款项; 2, 按排时间地点进行技术培训; 3, 对本站相关页面提出修改意见.

    同时请广大网友, 对这个软件估一下价值.

April 17, 2007

AUL中未用过的恢复删除记录的功能

    AUL中有个选项可以试图恢复被删除的记录, 不过这个选项我未没有下式用过, 因为它只适合于没有DELETE的表, 如果这个表本身有DELETE操作, 则这个命令基本上会失败, 这是因为在Oracle中, 记录被打上了DELETE标记后, 那部份空间有可能被重用了, 也有可能引起AUL程序非法退出. 不过在实验室环境中我们还是可以玩一玩的, 下面以EMP表为例:

SQL> SELECT COUNT(*) FROM ANYSQL.EMP;

  COUNT(*)
----------
        14

SQL> DELETE ANYSQL.EMP;

14 rows deleted.

SQL> COMMIT;

Commit complete.

    接下来我运行了一句Checkpoint命令, 然后来作恢复, 恢复时只需要将DELETED_ROWS选项设为TRUE(默认值为False)就行. 如下所示:

AUL> unload table anysql.emp;
2007-04-17 11:35:56
Unload OBJD=10279 FILE=4 BLOCK=139 CLUSTER=0 ...
2007-04-17 11:35:56
AUL> set deleted_row true
  Current DELETED_ROW is : TRUE
AUL> unload table anysql.emp;
2007-04-17 11:36:06
Unload OBJD=10279 FILE=4 BLOCK=139 CLUSTER=0 ...
7369|SMITH|CLERK|7902|1980-12-17 00:00:00|800||20
7499|ALLEN|SALESMAN|7698|1981-02-20 00:00:00|1600|300|30
7521|WARD|SALESMAN|7698|1981-02-22 00:00:00|1250|500|30
7566|JONES|MANAGER|7839|1981-04-02 00:00:00|2975||20
7654|MARTIN|SALESMAN|7698|1981-09-28 00:00:00|1250|1400|30
7698|BLAKE|MANAGER|7839|1981-05-01 00:00:00|2850||30
7782|CLARK|MANAGER|7839|1981-06-09 00:00:00|2450||10
7788|SCOTT|ANALYST|7566|1987-04-19 00:00:00|3000||20
7839|KING|PRESIDENT||1981-11-17 00:00:00|5000||10
7844|TURNER|SALESMAN|7698|1981-09-08 00:00:00|1500|0|30
7876|ADAMS|CLERK|7788|1987-05-23 00:00:00|1100||20
7900|JAMES|CLERK|7698|1981-12-03 00:00:00|950||30
7902|FORD|ANALYST|7566|1981-12-03 00:00:00|3000||20
7934|MILLER|CLERK|7782|1982-01-23 00:00:00|1300||10
2007-04-17 11:36:06

    这个功能仅是实验室设计, 真正遇到问题应当先去恢复, 如果没有备份, 则思路从Log中用LogMiner去取出Undo SQL, 再不行用手工输入吧, 最后不行的话可以试试AUL的这个功能.

May 8, 2007

使用iconv来进行CLOB数据的恢复

    一个韩国的Oracle数据库, System表空间的文件被删除了需要进行恢复. 还好整个的数据文件的大小只有500MB, 在免费的范围内, 不用交钱他们自已就可以恢复. 但今天被他们问了太多的问题, 有些烦了, 所以我将免费的范围缩小了, 第一, 只能免费打开2个文件了, 原来是4个, 第二, 相对文件号为1的还可免费读取前512MB, 不为1的则只能读取256MB了. 他的数据库中有CLOB字段, 还好值都不大, 而且是Enable Storage In Row的CLOB, 因此虽然丢失了System表空间, 但还是能恢复出CLOB数据的, 他们真是好运啊.

    由于使用的字符集是变长的, 因此存放在CLOB中的数据是以Unicode(UCS-2)字符集存放的, 虽然恢复出来了, 但装载前还得将恢复出来的文件进行转换. 由于Unicode用两个字节来存放一个字符, 因此这中间有Byte Edian的问题. 到10g以后, Oracle的CLOB总是用Big Edian的, 而在10g以前, 则看数据库运行的平台, 运行在SUN Sparc 64平台的数据库则是Big Edian, 而运行在x86机器上的Windows或Linux则是Little Edian的.

    AUL内部只提供了从Unicode到UTF8或GBK的转换, 因此不能满足这个场合, 只好不做转换恢复数据, 然后借助iconv工具来转换了. iconv工具并不支持所有的字符集, 你可以用如下命令来列出支持的字符集:

iconv -l

    在这个例子中, 对所有的文件进行了如下转换:

iconv -f UCS-2BE -t 5601 src\LOB_???.dat > dest\LOB_???.dat

    Windows下的iconv可以到GnuWin32项目组上去下载, 本站也可以下载.

May 9, 2007

AUL升级, 更改sqlldr控制文件选项的默认值

    AUL在恢复成文本格式时, 可以自动生成一个sqlldr的控制文件, 这极大地方便和简化了数据恢复的过程, 在实际的使用中, 遇到了几个sqlldr的问题. 为了方便恢复, 改更了一些默认值. 在本次修改以前, 控制文件的选项为:

--
-- Generated by AUL/MyDUL, for table anysql.mem_member
--
OPTIONS(DIRECT=TRUE,READSIZE=4194304,ERRORS=-1,ROWS=50000)
LOAD DATA

    更改后, 取消了DIRECT设置, 采用默认值; 增加了BINDSIZE值; 将READSIZE的值增大了. 新版本的选项如下:

--
-- Generated by AUL/MyDUL, for table anysql.mem_member
--
OPTIONS(BINDSIZE=8388608,READSIZE=8388608,ERRORS=-1,ROWS=50000)
LOAD DATA

    当然更改后还是可以在sqlldr的命令行加入参数控制是否进行DIRECT方式装载, 如下所示:

sqlldr anysq/anysql control=mem_member_sqlldr.ctl direct=true

    加大READSIZE和BINDSIZE将使数据装载更快, 重新下载AUL最新版.

May 31, 2007

AUL功能改进, 生成建表的SQL文件

    在有SYSTEM的情况下, 生成DMP格式时, 会自动包含一个建表的语句, 而在导出成文本文件时, 则没有生成建表语句. 从以往的经历来看, 文本方式的导出更稳定一些, 另外DBA找不表建表语句的情况也常发生, 出于这两点, 我对AUL作了一点改进, 在以文本方式导出时, 自动生成一个建表的SQL文件.

    在AUL中早就可以看表结构了:

AUL> desc anysql.emp

Storage(OBJ#=10560 OBJD=10560 TS=4 FILE=4 BLOCK=627 CLUSTER=0)
No. SEQ INT Column Name                   Type
--- --- --- ----------------------------- ----------------
  1   1   1 EMPNO                         NUMBER(4) NOT NULL
  2   2   2 ENAME                         VARCHAR2(30)
  3   3   3 JOB                           VARCHAR2(9)
  4   4   4 MGR                           NUMBER(4)
  5   5   5 HIREDATE                      DATE
  6   6   6 SAL                           NUMBER(7,2)
  7   7   7 COMM                          NUMBER(7,2)
  8   8   8 DEPTNO                        NUMBER(2)

    恢复成文本文件格式:

AUL> unload table anysql.emp to emp.txt;
2007-05-31 21:43:35
Unload OBJD=10560 FILE=4 BLOCK=627 CLUSTER=0 ...
2007-05-31 21:43:35
AUL>

    生成了一个表名_syntax.sql(EMP_syntax.sql)文件, 内容如下:

CREATE TABLE "EMP" ( "EMPNO" NUMBER(4) NOT NULL , "ENAME" VARCHAR2(30) , "JOB" VARCHAR2(9) , "MGR" NUMBER(4) , "HIREDATE" DATE , "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2) , "DEPTNO" NUMBER(2) );

    这些小功能, 有时能节约很多的恢复时间.

上一页 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