首页 | 分页显示

Tools Archives

March 30, 2008

AUL也走品牌路线?

    三年多前为了深入Oracle而选择研究数据块格式, 并在不经意之间写成了AUL恢复软件, 有些无心插柳柳成荫的味道. 当你将一门技术掌握到全国或全世界顶尖的水平时, 肯定可以用它来为人们排忧解难, 人们也会愿意为之支付相应的报酬. 这也算是做技术的一种动力吧, 首先是帮人排忧解难, 然后是得到回报, 其实做服务的真谛也不外是如此. 这三年下来, AUL也算一个小小的品牌了.     目前AUL还只有Oracle版本的, 为了要更好地为大家排忧解难, 要努务发展以下的几个平台. AUL...

March 4, 2008

世上8个DUL, 别破解AUL!

    这世上有8个DUL类(包括DUL本身)的产品, 大家不一定要找Oracle DUL了, 也不一定要找AUL, 中国人要去破解就去破国外的吧, 别破解AUL了, 最近发现很多写程序的都是大牛, 很容易破AUL, 也可能是我太菜了. Bernard’s Data UnLoader Oracle官方工具, 由Netherlands的Oracle工程师Bernard van Duijnen用C语言写成. 由Oracle支持人员提供服务服务, 价格相当贵....

ocidiff助力51job日常维护

    比较两个环境, 比如测试A和测试B, 或测试环境和正式环境之间的表结构差异, 是件很麻烦的事, 如果有成千上百的表, 可能会相当地耗时, 花个一两天也是有的. 正是因为不想花这么长的时间去做麻烦的事, 就偷懒地写了ocidiff这个表结构比较和自动同步程序.     一位51job的DBA朋友正好面临同样的问题, 我就推荐了这个程序给他. 早上正式使用后, 回馈说程序运行相当的快速和准确, 几分钟内完成手工几个小时才能完成的事, 并给出可读性很好很清晰的比较报告, 因此决定作为正式工具在公司内部使用,...

January 25, 2008

ociuldr更新(2008/01/25)

    到现在为止, 免费文本导出小工具(ociuldr)的累计下载次数已经突破5000次, 已经有很多的知名的大公司, 选择下载源代码, 进行编译和使用, blue_prince在阿里巴巴更是创下了导出文本速度的新记录.     而我大约是这个工具的最大用户吧, 昨天花了二个小时, 给数据仓库组导了10亿条记录, 在导的过程中发现了一个无关紧要的小问题, 当文字类型字段不是从表中直接来时, 可能会分配过多的内存. 如下所示. C:\>ociuldr user=test/test query="select...

December 24, 2007

Get DDL工具

    在DBMS_METADATA之前, 要获得建表语法, 估计很多人都要用Toad或PL/SQL Developer之类的程序了, 不过很多数据库运行在Unix或Linux上, 并不允许我们用这类工具去连接, 这时还真是一件难事. 就算有了DBMS_METADATA我也并不觉得它很方便, 因此不如自已写一个角本, 在我的DBDiff程序中, 已经通过exp/imp的办法实现了, 将相关部分功能独立出来, 就成了getddl工具(Windows版本).     程序经以过以下步骤来实现这个功能: 1, rows=n进行导出;...

August 22, 2007

ociuldr的更新, 为了更好的long类型支持

    以前一直以为sqlldr不能装载大于4k大小的文本, 原来这个理解是错误的. 但是在免费的文本导出程序ociuldr中, 没有充分考虑long类型. 第一, 用于fetch的数组大小是固定的500, 第二默认的long类型导出长度是4000. 最主要的原因是ARRAY固定为500不是件好事, 如果我指定long的导出长度为1MB, 那不是得用掉500M的系统内存?     在最新的改进中, ARRAY SIZE的默认值变为50, 最小值为5, 最大值为2000, LONG类型的默认导出长度为32K,...

August 20, 2007

庆祝oramon不停顿运行一周

    要写一个能跑的程序不难, 用C写一个能跑的程序就不易, 写一个能不停顿跑一周的C程序就有点难了. 为了达到理想的效果, 历经周折, 终于搞明白了线程问题, 而我写的程序也已经在服务器上不停顿地运行了一周, 最怕的两个问题, 一个是内存汇漏, 另一个是Segment Fault(core dump), 都没有发生. C程序就有点象Unix小型机, 要出问题则会很快就体现出来, 要不出问题则可以很稳定.    ...

July 11, 2007

MyLOG搞成开源项目能造福于大家吗?

    我想你基本上不知道MyLOG是什么样的东西, 不过下面的一些网上常见到的话题你可能会懂一些. 如何实时同步两边的数据? 如何将数据实时地同步到远程的数据库? 如何做远程冗灾? 比较低级的解决的方案有实体化视图, 或自已写程序来实现自动导出导入, 如果两边的网络很好, 还可以用触发器来实现. 中级一些的方案有Oracle的Stream和Replication, 说他们中级是因为他们还不够成熟. 高级一些的方案是用目前市面上的专用软件, 如很有名气的Quest Shareplex, 不是很有名气的DSG Realsync(缺少宣传)和基本上没有听说过的GoldenGate. 这些高级的专业软件在911事件后, 被国际上的大公司大量采用,...

July 10, 2007

dmp2utf8的下载量骤增, 不知什么原因?

    上个月的统计中还没有发现有多少人下载这个的, 这个月却发现下载量惊人, 短短的10天中, 从站点的AWStats统计看已经被下载了1300多次, 真是不可思议?     这个工具的唯一作用是去改Oracle DMP文件头中的字符集标识, 并没有多少的实际用途, 难道最近玩字符集的人这么多?     希望其他的一些个人工具也有这么大的下载量....

May 11, 2007

终于给ociuldr加上退出代码了

    半年多前有人提出这个需求, 当时我也没有空去处理这事, 就搁下了. 今天将程序改动了一下, 增加了退出代码, 退出代码的含义如下: 0 = Successful 1 = Cannot login to database 2 = Cannot...

ociuldr小工具的新选项, 指定log文件

    ociuldr工具(文档)越来越被人接受, 还有一位外国人特意发邮件来告诉我说, 他成功地将这个工具用于一个项目中. 即使是小工具, 也需要花不少时间去完善和维护的. 今天为这个工具新增了一个小选项: log = log file name, prefix with + to append mode  ...

March 29, 2007

使refresh_mysql适用于数据归档的一点改进

    受上一篇中案例的启发, 对refresh_mysql角本作了一点点改进, 可以为DELETE目标数据库的SQL加一个WHERE条件, 以防止删除不想删除的数据. 举个简单的例子来说, 有一个产品数据和历史库, 产品库中只有今年的记录, 而历史库中包括所有(当前的和07年以前)的数据, 我们还需要将产品库的修改比较实时地反应到历史库中, 那么我有可能要经常在产品库中删除三个月以前的记录, 为了不让这些删除操作被复制到历史库中, 就可以加一个Where条件了, 如"CREATE_DATE > SYSDATE - 30", 这样的话,...

March 27, 2007

对我的DBDiff - ocidiff的两点改进

    ocidiff是一个同步表结构(DBDiff)的程序, 今天所作的主要改进有两个方面. 第一个是类型(Type)/存贮过程(Procedure)/函数(Function)/包(Package)/视图(View)这些对象的刷新机制, 当发现目标数据库这些对象的LAST_DDL_TIME比源数据库的要旧的话, 就会从从源端取出重建代码进行创建(Create or Replace), 对于触发器, 将会在明后天作出相应的更改.     第二个改进是增加了一个命令行参数mask(默认值1, 保留比较报告), 主要用于控制是否自动删除用到的监时文件, 以用于调试, 在ocidiff工作时, 会生成以下文件: 1,...

March 25, 2007

DUL有多大啊, 可不可以发一个啊?

    去ITPub的数据库区一看, 居然有人翻出了04年的这个贴子, 还引得不少人再次回贴, 要求DUL, d.c.b.a居然现在公开发贴要DUL? 不由得让人细看了发帖人的名字好几遍, 这里最基本的原因是因为发贴时间不够明显, 另外呢我们看贴时也很少注意发贴时间, 总以为冒上来的总是最新的.     话说回来, 当时最后还是没有要到DUL, 估计当时总共的发贴数还不到100吧? 要是当时每个人都被看成一支股票, 我想我到是一支好股票, 两年多的时间, 增值了多少倍?...

March 14, 2007

如何在不同类型的数据库间迁移数据?

    refresh_mysql.pl是一个用来从Oracle向MySQL中复制变更数据的Perl角本. 通过变通的方法, 也可以用于在不同种类的数据库之间拷贝数据. 只要我们建一个假的和Oracle实体化视图日志表结构差不多的表就可以了, 然后向这个表中手工插入记录(在Oracle中, 实体化视图日志会被自动维护), 也可以被这个角本支持. 再进一步地去设想, 在非Oracle的数据库中, 可以用触发器(Trigger)来维护变更记录, 达到和视图化视图日志一样的作用, 就可以从其他的数据库向Oracle复制数据了.     在这儿只要我们自已建的临时表包括所有的主键列, 两个名字分别为"SEQUENCE$$"和"DMLTYPE$$"的列就可以了, 我已经在MySQL中测试过了, 列名中可以包含"$"符号,...

refresh_mysql.pl角本的一个配置例子

    在Oracle中创建表和实体化视图日志: CREATE TABLE T_OBJECTS AS SELECT * FROM DBA_OBJECTS WHERE ROWNUM < 1; ALTER TABLE T_OBJECTS MODIFY OBJECT_ID...

March 13, 2007

写了一个从Oracle复制到MySQL的Perl角本

    根据对实体化视图的研究及昨天的设想, 花了大约一个早上的时间, 写了一个从Oracle复制到MySQL的Perl角本, 早上测试时还是比较有趣的. 在现在的角本中, 源表名和目标表名可以不一样, 但字段名必须一样.     做测试时, 先开一个窗口, 运行刷新角本: C:\AnySQL>perl refresh_mysql.pl -s anysql:anysql:test -t mysql:root:mysql:localhost:test...

January 30, 2007

ociuldr的新选项, 是否在第一行打印字段名

    自从blue_prince用ociuldr在1小时内导出了7亿条(50G)记录后, 他就坚持不懈地使用ociuldr来从Oracle中导出数据到格式化文本, 并提出众多的无理要求, 如要支持分成几个文件导出.     今天他又提出了一个新要求, 要在文件的第一行打印字段名, 以符合他们的规范. 我没有立马答应, 但承诺将它列为2008年工作重点, 结果他说要坐车过来请我吃饭, 要我立马完成. 于是我立马改进, 立马在主页上发布他欠我一饨饭的信息, 下次谁要和我一起去杭州的, 就占光好了.  ...

January 2, 2007

在ociuldr的SQL中使用绑定变量

    在以前的ociuldr中不能使用绑定变量, 现在作了一些改进, 允许传入最多20个绑定变量(我想也够用了吧), 所有的变量类型都被当作VARCHAR2类型. 这样的改进不知道是否有必要, 还不得而知. SQL> select * from tab; TNAME                          TABTYPE         CLUSTERID ------------------------------ -------------- ---------- AULEXT                         TABLE...

December 30, 2006

2006年本站的原创软件下载排名

    在过去的1年中, 利用空余时间继续开发一些软件, 由于网站被毁灭过一次, 因此下面的统计其实是06年最后5个月中后三个月(前两个月没有awstats统计)的值.     下面是通过中文页面来下载的次数: aul_trial.zip, 478次 ociuldr.zip, 441次 dcba.zip, 306次 anysql.zip, 225次     对于这个下载次数,...

December 22, 2006

我的DBDiff程序, 可以比较或同步表结构.

    首先在数据库中建两个用户: DBDIFF1和DBDIFF2. 并在DBDIFF1上运行下面的角本: -- run under user dbdiff1 CREATE TABLE T_DBDIFF1 ( COL1 NUMBER(10), COL2 NUMBER(20)); CREATE TABLE...

December 12, 2006

fatal: ... wrong ELF class: ELFCLASS64

    今天有人在用Solaris上的ociuldr时遇到这个问题, 引起这个问题的原因是, ociuldr是编译成32Bit的程序的, 因此需要使用32Bit的Oracle客户端库, 在8i中, $ORACLE_HOME/lib是32Bit的库文件所在目录, $ORACLE_HOME/lib64是64Bit的库所在的目录, 而9i以后, $ORACLE_HOME/lib32是32Bit的库文件, $ORACLE_HOME/lib是64Bit的库文件, 一般在Oracle 9i及以上版本的服务器端, 默认的库文件查找位置(Linux/Unix: LD_LIBRARY_PATH变量, AIX: LIBPATH变量)是指向64Bit的客户端的, 这时运行ociuldr就报了这个错误.  ...

December 11, 2006

更改dmp文件中的字符集 -- dmp2utf8

    看到过几次"如何修改dmp文件字符集"的问题, 我自已仅在刚入门时, 在老板的指导下用过一次. 到现在也不知道这种直接更新dmp文件第二个和第三个字节的方法到底安全不安全, 因为除了第二个第三个字节外, dmp文件中, 每个字符列都有相应的字符集标识的.     虽然如此, 还是发布一个小工具吧, 可以用于修改dmp中的字符集标识, 新工具命令为: dmp2utf8, 命令使用语法如下: Usange: dmp2utf8 dmpfile...

November 23, 2006

ociuldr支持分成几个文件导出了

    一网友导出了7亿多条记录之后, 生成了一个50g大小的文本文件, 却发现Perl处理起来比较难, 于是问我是不是可能导出成几个文件. 现在对程序作了改进, 增加了一个命令行选项:batch. 指定在几个batch后切换文件名, 默认一个batch是50万条记录, 如果指定batch为2就表示100万条记录换一个文件. 默认这个选项值是0, 就是指不生成多个文件. 在指定batch选项后, 请指定file选项来定义生成的文件名, 中间请包含"%d"字样, 在生成文件时, "%d"会被打印成序号. 例如要导出下面的表: SQL>...

November 16, 2006

ociuldr小工具的新选项 -- table

    给我的小工具ociuldr加了一个命令行选项: table = table name in the sqlldr control file     默认这个选项的值为空, 这样的话就不会生成用于sqlldr装裁的控制文件, 如果定义了这个选项的值, 则会生成"表名_sqlldr.ctl"这样的控制文件, 以方便使用. C:\TEMP>ociuldr...

November 13, 2006

小工具 -- 显示归档日志的基本信息

    如何判断一个归档日志保存了从那个SCN开始到那个SCN结束的数据库修改? 或者从那个时间开始到那个时间结束的修改? 首先我们会从V$LOG_HISTORY, V$ARCHIVED_LOG等视图中去查找, 但这些视图只保存了最近一段时间内的归档日志的信息, 如果将control file record keep time参数设得小一些, 可能保存不了多条信息. 另一种方法是将归档日志文件的文件头DUMP出来, 你可以看到以下信息: FILE HEADER: ...... Low scn:...

October 13, 2006

使用HotCopy来移动数据文件

    在HotCopy中增加了一个"-M"参数, 用来方便地进行数据文件移动操作: HotCopy for Oracle, version 2.0.0 (C) Copyright Lou Fangxin 2006, all rights reserved. Usage:   hotcopy [-a]...

October 12, 2006

热备份文件的小工具 -- HotCopy

    RMAN的数据文件拷贝功能很不错, 不过不易于脚本化, 因此我通过调用DBMS_BACKUP_RESTORE包来实现了自已的文件热拷贝功能, 这个工具命名为"HotCopy".     命令行参数: HotCopy for Oracle, version 2.0.0 (C) Copyright Lou Fangxin 2006, all...

ociuldr可自动生成SQL*Loader装载的控制文件

    sqlldr工具现在可以生成SQL*Loader的控制文件信息了, 这样可以极大地方便我们移植数据了, 如下所示: C:\TEMP> ociuldr user=anysql/anysql@prod query="select sysdate  from tab" -- -- Generated by OCIULDR -- OPTIONS(BINDSIZE=4194304,READSIZE=4194304,ERRORS=-1,ROWS=50000) LOAD DATA...

August 25, 2006

OTune工具提供的SQL优化的信息

    写OTune的原因是因为OPMon的输出的信息不够方便我们进行SQL的优化, 在改进后程序输出了以下几方面的信息.     1, 执行信息 HASH : SQL语句的HASH_VALUE, [HASH: 1116368370] EXEC : 在报告期内SQL被执行的次数, [Exec:1] GETS : 在报告期内SQL引起的逻辑读的块数及其权重比例,...

August 24, 2006

指导人家用OTop来查找日志生成过量的原因

    有网友问我为什么他们的库每一分种就生成了1G的日志, 这种问题需要查SQL语句, 但如何找出那个SQL语句生成了过量的日志呢? OTop可以轻松地用"-o"选项来显示最近系统中生成日志最多的SQL语句(使用"-o REDO"选项), 命令如下: otop -u system/manager@prod -o redo -q     运行一分钟后按Control+C退出程序运行, 在运行otop的目录中生成一个文件, 检查文件内容, 发现以下信息(以下信息只显示Top...

当前分类: Tools

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