在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"命令生成的文件中去查找空间分配信息了, 而不是所有的文件扫描一次.

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • I'll leave for London if I finish my work today.
  • 如果我今天完成工作, 我就会去伦敦.
  • I'll work for 5 years and then go back to school.
  • 我会工作五年, 然后会学校.
  • He will become a writer if he goes on doing well in writing.
  • 如果他仍写的这么好的话, 他将成为一个作家.
  • I hope he will meet me at the airport.
  • 我希望他能到机场接我.
  • I'm thinking of quitting the job.
  • 我在考虑辞职.