登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

及吾无身吾又何患

天行健,君子以自强不息。地势坤,君子以厚德载物

 
 
 

日志

 
 
关于我

孩儿立志出相关,学不成名誓不还 埋骨何须桑梓地,人生何处不青山

使用AUL恢复oracle数据手记  

2007-08-24 15:38:28|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

 首先注意要做好系统数据的一个完全备份,把oracle服务停掉,退后完全拷贝oracle文件夹。

下面开始使用AUL恢复数据:

1、导出数据

写配置文件前先查数据库使用到的数据文件

SQL>SELECT FILE#,RFILE#,NAME FROM V$DATAFILE;

我查询结果如下:

    FILE#     RFILE# NAME
---------- ---------- --------------------------------------------------------------------------------
         1          1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\SYSTEM01.DBF
         2          2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\UNDOTBS01.DBF
         3          3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\SYSAUX01.DBF
         4          4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\USERS01.DBF
         5          5 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_BAS_DAT.DBF
         6          6 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_BAS_IDX.DBF
         7          7 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_FIN_DAT.DBF
         8          8 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_FIN_IDX.DBF
         9          9 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_INV_DAT.DBF
        10         10 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_INV_IDX.DBF
        11         11 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_MSC_DAT.DBF
        12         12 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_MSC_IDX.DBF
        13         13 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_STO_DAT.DBF
        14         14 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_STO_IDX.DBF
        15         15 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_SYNC_DAT.DBF
        16         16 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_SYNC_IDX.DBF
        17         17 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_PRESENT_DAT.DBF
        18         18 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\ERP_PRESENT_IDX.DBF
        19         19 D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\WPSALE_DAT.DBF

此次我要恢复的就是WPSALE_DAT.DBF,因为这个文件已经报错损坏了。

写配置文件1.cfg( 写俩个就可以了,因为用的免费的只能打开2个,而且只能打开前521M)

0   0    D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\SYSTEM01.DBF
0   0    D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10\UNDOTBS01.DBF

然后

AUL>open 1.cfg

然后在根据系统表空间生成数据字典


AUL>UNLOAD TABLE USER$;

....
AUL>UNLOAD TABLE OBJ$;

....
AUL>UNLOAD TABLE TAB$;

....
AUL>UNLOAD TABLE COL$;

....


然后在写配置文件2.cfg

0       0       D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\WPSALE_DAT.DBF

接着

AUL>open 2.cfg

AUL>list table wpsale to  wpsale.txt  

这个是生成所有待导出数据库表脚本,然后把 这个wpsale.txt改为wpsale.sql

执行

AUL>@wpsale.sql

执行完后在当前目录下一个表会生成3个文件

T_CONTRAINDICATION.txt    数据文件

T_CONTRAINDICATION_sqlldr.ctl   装载控制文件

T_CONTRAINDICATION_syntax.sql  创建表脚本

好了,数据全部导出来了

2、导入数据
上面我们已经利用AUL导出了数据,现在我们把用户WPSALE删除,并且把对应数据文件删除,然后在重建用户和表空间。先前我有利用以前库把所有表名导出来。

先建表,用excel把所有表处理成 如下样式 @T_ACC_INFO_syntax.sql

                                                                    @T_AP_ACC_CUST_syntax.sql

                                                                    。。。。。。。。。。。

保存为name.sql文件,完了后,然后SQL>@name.sql创建完所有的表

然后使用oracle自带的sqlldr装载文本数据

编写SQLLDR脚本如下形式

               sqlldr  wpsale/wpsale  control=T_ACC_INFO_sqlldr.ctl

               pause

               sqlldr  wpsale/wpsale  control=T_ACC_PERIOD_sqlldr.ctl

               pause

               .............................

把上面的做成批处理,加个pause是因为如果有的数据导入需要时间,如果接着执行下面语句会报错,所以加上最后在当前目录下面双击执行该批处理,直到数据导入完成。(如何每俩个中间加pause是有技巧的,首先把所有表导出来,然后给他们按奇数编码,而下面在编相同数目的偶数行,并且偶数行添上内容pause,然后在按序号排序既可);

3、存储过程,函数,触发器,序列从旧库重新导入,并修改至正确值

 

 

  评论这张
 
阅读(2348)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018