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

AUL/MyDUL Archives

November 1, 2006

正式开始出售AUL/MyDUL的正式许可证

    9号我在网上发布了一个在线申请AUL许可证的CGI程序, 以便我不在线时也可以获得许可证来进行数据恢复. 2006年10月份是免费的, 从11月份开始, 将不再免费, 需要购买才可以访问了.

    网上许可证的价格将比恢复服务的价格低很多, 且AUL/MyDUL是易于使用的, 并支持10g等最新版本的数据库, 因此, 购买许可证是一个比较实惠的选择.

    如何计算许可证的次数, 不同的日期访问都算一次, 当日期相同时, 五次访问才算一次许可证, 如下面的访问列表, 只算作3次:

DAY=20061013 IP=58.212.85.189 CODE=5IFW-1D8F-UB4U-MT6J-K89C
DAY=20061013 IP=66.211.156.98 CODE=OC0Y-USYX-PP5C-YAGD-O6AN
DAY=20061014 IP=200.6.100.10 CODE=AU3I-KV2S-KQKM-30VS-TV46
DAY=20061014 IP=69.140.195.22 CODE=F901-OX9H-RTAN-NMTT-RDON
DAY=20061014 IP=69.140.195.22 CODE=GLHF-22F5-TR7F-0KL1-NQS5
DAY=20061014 IP=65.113.143.60 CODE=9WBJ-9Q1A-74W1-UK7C-PO88
DAY=20061014 IP=65.113.143.60 CODE=0SDJ-K3BI-KS4D-952X-0WQ9
DAY=20061014 IP=65.113.143.60 CODE=69S2-4TOG-5PY3-O710-EWFN
DAY=20061014 IP=65.113.143.60 CODE=UJ42-URTU-ZEPK-16NZ-2M7L

    现在购买每个Licence的价格为人民币8000元整(不还价), 如果是临时找上我的, 则不能按这个价格来出售的. 按当时协议的时价来计算.

    补充: 用DBA的方法表示计数规则:

-- TABLE AUL_REQUEST (DAY,IP,CODE)
-- PK (DAY,IP,CODE)
SELECT SUM(CEILING(DAYCNT)/5)
FROM
(SELECT DAY, COUNT(*) DAYCNT FROM AUL_REQUEST)

November 20, 2006

在AUL/MyDUL中运行角本文件进行快速恢复

    上周一网友问我, 说他的库中有900个表, 用AUL/MyDUL的话如何快速恢复? 如果一行一行地打命令, 那肯定是不行的. 虽然我没有官方DUL那样可以按用户导出, 或全库导出, 不过我也提供了一个解决的方案, 通过角本文件.

    首先通过LIST TABLE命令来生成恢复的命令.

AUL> list table anysql
UNLOAD TABLE anysql.P_MV_FACT_SALES TO P_MV_FACT_SALES.txt;
UNLOAD TABLE anysql.TIME_DIM TO TIME_DIM.txt;
UNLOAD TABLE anysql.FACT_SALES TO FACT_SALES.txt;
UNLOAD TABLE anysql.MV_FACT_SALES TO MV_FACT_SALES.txt;
UNLOAD TABLE anysql.SEG$ TO SEG$.txt;
UNLOAD TABLE anysql.P_MV_FACT_SALES PARTITION P_MAX TO P_MV_FACT_SALES_P_MAX.txt;

    你可以将上面的拷下来存成一个文件, 或者在后面加一个"TO filename"来输出到一个文本文件.

AUL> list table anysql to unload_anysql.sql

    然后我们用"@文件名"就可以跑了, 如下所示:

AUL> @unload_anysql.sql
AUL>  UNLOAD TABLE anysql.P_MV_FACT_SALES TO P_MV_FACT_SALES.txt;
AUL>  UNLOAD TABLE anysql.TIME_DIM TO TIME_DIM.txt;
2006-11-20 09:39:59
Unload OBJD=9759 FILE=4 BLOCK=11 CLUSTER=0 ...
2006-11-20 09:40:21
AUL>  UNLOAD TABLE anysql.FACT_SALES TO FACT_SALES.txt;
2006-11-20 09:40:21
Unload OBJD=9761 FILE=4 BLOCK=19 CLUSTER=0 ...
2006-11-20 09:40:29
AUL>  UNLOAD TABLE anysql.MV_FACT_SALES TO MV_FACT_SALES.txt;
2006-11-20 09:40:29
Unload OBJD=9762 FILE=4 BLOCK=99 CLUSTER=0 ...
2006-11-20 09:40:37
AUL>  UNLOAD TABLE anysql.SEG$ TO SEG$.txt;
2006-11-20 09:40:37
Unload OBJD=9796 FILE=4 BLOCK=2483 CLUSTER=0 ...
2006-11-20 09:40:45
AUL>  UNLOAD TABLE anysql.P_MV_FACT_SALES PARTITION P_MAX TO P_MV_FACT_SALES_P_MAX.txt;
2006-11-20 09:40:45
Unload OBJD=9777 FILE=4 BLOCK=2475 CLUSTER=0 ...
2006-11-20 09:40:53
AUL>

    在这儿我们不能多层地调用角本文件, 也就是角本文件中不能再有"@文件名"这样的指令了. 同时也在这儿回答另一个问题, 如果在UNLOAD一个表时, 不能读取指示中的块时(如: FILE=4 BLOCK=11, 在这儿我没有打开文件4), 将会扫描所有打开的文件, 可能会很慢, 这也是他上次问我有一个表恢复了很长时间, 却没有恢复出任何记录的原因了.

    解决的方法是在开始UNLOAD之前, 运行一下"SCAN EXTENT"命令, 这样的话到"SCAN EXTENT"命令生成的文件中去查找空间分配信息了, 而不是所有的文件扫描一次.

November 27, 2006

AUL所需要的数据字典 -- 用户信息

    在没有system的情况下, 使用MYDMP进行数据恢复时不能输出成dmp格式的,这时我们可以构造这些信息,在这儿我要讲的是AULUSR.TXT文件, 这个文件名必须是大写的, 其中包括两列信息(userid,username),中间用逗号分开的. 如:

0,SYS
1,PUBLIC
2,CONNECT
3,RESOURCE
4,DBA
5,SYSTEM
......
25,TEST

    在有System表间的情况下, 这个文件是用"unload table user$;"命令来生成的.

November 28, 2006

AUL所需要的数据字典 -- 对象信息

    在没有system的情况下, 使用AUL进行数据恢复时不能输出成dmp格式的,这时我们可以构造这些信息,在这儿我要讲的是AULOBJ.TXT文件, 这个文件名必须是大写的, 其中包括五列信息,中间用逗号分开的:

1, Object ID
2, User ID
3, Object Name
4, Sub-Object Name, partition or sub-partition name
5, Object Type ID

    在有system表空间的情况下,是用"unload table obj$;"这个命令来生成的,如:

9756,5,CUST_INFO,,2
9786,5,FILE$,,2
9776,25,TEST,,2
9787,5,DMPTEST,,2

    对于对象类型编码, 可以去查看DBA_OBJECTS视图的定义, 如果你下载了AnySQL, 则只需要打"SOURCE DBA_OBJECTS"就可以得到视图的源代码了.

December 5, 2006

为AUL增加对NCHAR/NVARCHAR2类型的支持

    有人用AUL去恢复带有NCHAR/NVARCHAR2类型列的表时, 遇到了问题, 导成文本方式则不知道如何用SQLLDR装入到新的数据库中, 而恢复成DMP格式时, 则导入后变成乱码. 这是因为AUL在设计时没有考虑NCHAR/NVARCHAR2这样的数据类型. 其原因是数据库的字符集是WE8ISO8859P1, 一个单字节的字符集, 而民族语言字符集则为AL16UTF16, 一个双字节的UNICODE字符集. 用AUL恢复时是不进行任何字符集转换的, 于是导出的文本文件中就有两种字符集了. 而在DMP文件中对于不同的列类型, 其内部的格式有所不同.

    我花了三个小时增加了DMP格式对NCHAR/NVARCHAR2的支持, 看在AUL中DESC一个表的结果:

AUL> DESC SYS.TEST_NCHAR

Storage(OBJ#=9876 OBJD=9876 TS=0 FILE=1 BLOCK=28465 CLUSTER=0)
No. SEQ INT Column Name      Type
--- --- --- ---------------- ----------------
  1   1   1 COL1             NVARCHAR2(100)
  2   2   2 COL2             NVARCHAR2(100)

    并增加了一个"SET NLSCHARSET"命令, 默认NLSCHARSET为2000, 指AL16UTF16. 如果你在我网上的字符集表(根据8i制作)中找不到某个字符集的ID, 你可以下载AnySQL来查询, 连接到数据库后用"ORA CHARSET charset"来获得字符集编号, 如下所示:

ASQL> ORA CHARSET AL

  ID HEX_ID CHARSET_NAME
---- ------ ------------
870  0366  AL24UTFFSS  
873  0369  AL32UTF8    
2000  07D0  AL16UTF16  

3 rows returned.

    Windows和Linux平台的可执行文件已经更新, 版本号变为"3.2.3".

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