AUL恢复数据案例

     前些日子公司数据库服务器故障,没有最新备份,只有两周之前的数据备份(用户dataDump导出的),后来数据库重建,将两周以前的数据impdp导入后,需要用AUL6恢复部分核心数据。由于AUL6第一次用,先在本地做了个测试案例,记录下面,希望能帮助有需要的学友;

   案例设计:我在本地新建了个用户sun及其相应的表空间sun,里面含两张表(create table sun_dept as select * from scott.dept,create table sun_emp as select * from scott.emp),处理完后将其sun.dbf和system01.dbf用作AUL6处理做导出.然后将sun用户及表空间删除,然后重新创建用户sun及sun表空间,最后运用AUL6作数据恢复.

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

1、导出数据

此次我要恢复的就是SUN.DBF,因为这个文件已经报错损坏了(不加system表空间好像不行)。

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

0 0 D:\AUL_TEST\SUN.DBF
0 0 D:\AUL_TEST\SYSTEM01.DBF

然后

AUL>open sun.cfg

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


AUL>UNLOAD TABLE USER$;

....
AUL>UNLOAD TABLE OBJ$;

....
AUL>UNLOAD TABLE TAB$;

....
AUL>UNLOAD TABLE COL$;

....


AUL>list table sun to  sun.txt  

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

执行

AUL>@sun.sql

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

SUN_DEPT.txt,SUN_EMP.txt    数据文件

SUN_EMP_sqlldr.ctl,SUN_DEPT_sqlldr.ctl   装载控制文件

SUN_DEPT_syntax.sql,SUN_EMP_syntax.sql  创建表脚本

好了,数据全部导出来了

2、导入数据
 

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

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

                                                         @SUN_EMP_syntax.sql

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

编写SQLLDR脚本如下形式

               sqlldr  sun/sun@dawn control=SUN_DEPT_sqlldr.ctl

               pause

               sqlldr  sun/sun@dawn  control=SUN_EMP_sqlldr.ctl

               pause

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

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

这里需要注意:
--------------------------------------------------------------------------------------------------------------------------------------------

SQL> exit
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 11.2.0.1.0 - Production中断开

 

-- 这里的操作系统根目录必须得是生成的文本数据文件的目录,否则找不到对应的文件(看看控制文件中的内容就知道啦)

C:\Documents and Settings\IBM>sqlldr sun/sun@dawn control=E:\SUN_DEPT_sqlldr.ctl

 

SQL*Loader: Release11.2.0.1.0 - Production on 星期三 7月 23 15:51:36 2014

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

SQL*Loader-500:  无法打开文件 (AA01.txt)
SQL*Loader-553:  未找到文件
SQL*Loader-509:  系统错误系统找不到指定的文件。
SQL*Loader-2026:  由于无法继续加载已中止。

C:\Documents and Settings\IBM>e:

 

E:\>cd E:\huill_DATABASE

 

E:\huill_DATABASE>sqlldr sun/sun@dawn control=E:\huill_DATABASE\SUN_DEPT_sqlldr.ctl

 

SQL*Loader: Release 9.2.0.1.0 - Production on 星期三 3月 23 15:54:12 2014

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

达到提交点,逻辑记录计数82

 

E:\huill_DATABASE>sqlldr sun/sun@dawn control=E:\huill_DATABASE\SUN_EMP_sqlldr.ctl

 

SQL*Loader: Release 9.2.0.1.0 - Production on 星期三 3月 23 15:56:35 2008

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

E:\huill_DATABASE>sqlldr userid=hospital/hospital@s9i control=E:\huill_DATABASE\FYFL_sqlldr.ctl

 

SQL*Loader: Release 11.2.0.1.0 - Production on 星期三 3月 23 15:57:59 2014

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

达到提交点,逻辑记录计数5329
达到提交点,逻辑记录计数10658
达到提交点,逻辑记录计数15987
达到提交点,逻辑记录计数21316
达到提交点,逻辑记录计数26645
达到提交点,逻辑记录计数31974
达到提交点,逻辑记录计数32766

-----------------------------------------------------------------------------------------------------------------------

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

4.其实AUL也能恢复ASM上的数据,只是我们这次只需要恢复部分数据,所以用不到。暂时就不列举使用案例了。下面摘录出相关使用手册:

AUL(MyDUL)工具简介

    从2005年开始,AUL (MyDUL)已经为全球不同国家及地区的众多客户恢复了数十TB计的Oracle数据,从损坏的Oracle 8, Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g及Oracle ASM上为客户快速恢复数据. AUL(MyDUL)可以脱离Oracle运行环境,直接从数据文件中读取记录,与官方工具Oracle DUL具有同等功效并且功能更加丰富。当你遇到下列极端情况,并且没有有效备份(客户有备份动作,备份不起作用的情况也遇到过)用来恢复数据时, AUL(MyDUL)是往往是你最后的机会. 一直坚持“拯救数据,帮助客户”的原则!在最新版本AUL 6中, 可以直接访问Oracle ASM来恢复数据,或从Oracle ASM中将数据文件拷贝出来。


  • 1. 完全丢失系统表空间
  • 2. 系统表空间有坏块
  • 3. 表空间被删除,但数据文件还存在
  • 4. 表被删除后,马上停止操作,空间未被重用
  • 5. 表被清空(Truncate)后马上停止操作,空间未被重用
  • 6. 一个表空间丢失了部份文件,或文件中有坏块,无法自我修复
  • 7. Oracle ASM存贮损坏,或Oracle ASM磁盘损坏
  • 8. 其他无法正常打开数据库或无法查询数据的情况


    AUL(MyDUL)并不提供免费服务,没有许可证的情况下最多允许同时打开10个数据文件,并且只能访问文件的前512MB内容,要支持更多的数据文件或更大的数据文件恢复,你必须获得许可证并在使用前进行注册。

    另外一个免费工具AUL for Oracle ASM (下载)可以将存放在Oracle ASM中的数据文件拷到文件系统, 在Oracle ASM损坏或磁盘不可用时,进行文件级的数据恢复,在AUL(MyDUL 6)中也集成了这个工具的所有功能,并且免费使用,最大支持2028块盘的Oracle ASM存贮。

AUL(MyDUL)功能列表


  • 支持Oracle 8/8i/9i/10g/10g/11g等不同版本
  • 直接访问Oracle ASM存贮,无需先将文件拷出来
  • 从损坏的Oracle ASM中拷出数据文件到文件系统
  • 支持普通表(Table)/聚族(Cluster)/索引组织表(IOT)
  • 数据类型支持
    1. NUMBER
    2. DATE
    3. CHAR
    4. NCHAR
    5. VARCHAR2
    6. NVARCHAR2
    7. RAW
    8. LONG
    9. LONG RAW
    10. BINARY_FLOAT
    11. BINARY_DOUBLE
    12. TIMESTAMP
    13. TIMESTAMP WITH TIME ZONE
  • 可以将数据恢复成格式化文本文件,或者Oracle 8.1.7版本的DMP格式文件
  • 在System表空间有效的情况下,可以自动生成SQL*Loader控制文件,方便数据装载
  • 使用标准C语方编写,可以运行在Windows (VC6), Linux (gcc), Solaris (gcc)等不同平台上
  • 支持跨平台交叉恢复,比如在Windows上也可以恢复AIX下的Oracle数据库
  • CLOB/BLOB支持
    1. 支持inline-lob, enable storage in row LOB和disable storage in row LOB.
    2. 支持不同CHUNK大小的CLOB/BLOB,同一个表不同的LOB CHUNK大小不支持.
    3. CLOB/BLOB数据可以导出成独立的文件,或者DMP格式文件.
    4. 集成ICONV库,支持CLOB字符集转换.
  • 无System表空间的CLOB/BLOB数据恢复.
  • 从AUl 5版本开始支持压缩(Compress)表.
  • 从AUl 5版本开始支持压缩(Compress)的索引组织表(IOT).


AUL(MyDUL)不支持的功能

  • Oracle 7版本
  • BFILE数据类型
  • Oracle对象数据类型(例如Spatial Data等)

    AUL(MyDUL)并不提供免费服务,没有许可证的情况下最多允许同时打开10个数据文件,并且只能访问文件的前512MB内容,要支持更多的数据文件或更大的数据文件恢复,你必须获得许可证并在使用前进行注册。

AUL 6中Oracle ASM恢复命令使用速查手册


 AUL 6可以直接访问Oracle ASM存贮,使用AUL 6去恢复Oracle ASM中的数据时,不再需要先将Oracle ASM中的数据文件拷贝到文件系统上(用ASMCMD或RMAN工具)。除了直接访问功能外,AUL 6还提拱了Oracle ASM文件恢复的功能,也就是从损坏的Oracle ASM中拷贝出数据文件,请继续看接下来的命令介绍。

    首先来看一下AUL 6中所有的ASM相关的命令,所有新增命令都相对比较简单,不再需要害怕Oracle ASM,在AUL 6面前,Oracle ASM不再是一个黑盒子。

AUL> ASM HELP
  SET        -- set options (BLOCK_SIZE, AU_SIZE, F1B1_DISK, F1B1_AU)
  OPEN      -- open data file
  ADD        -- add disk with customized disk num (disk, path)
  LIST      -- list opened disks information (to)
  LSAU      -- list file of given AU (disk, au, count)
  SCAN      -- scan file extent of given AU (disk, au, count)
  FILE      -- list all file entries in ASM (file, [disk, au, block]).
  ALIAS      -- list all alias entries in ASM (file, [disk, au, block]).
  EXTENT    -- list or adjust variable extent (level, au, count).
  FMAP      -- list file extent (file, [disk, au, block], to)
  DUMP      -- dump file extent (file, [disk, au, block], offset, to)
  COPY      -- copy file to os  (file, [disk, au, block], to)
AUL>

    SET命令,通常只用来设置Oracle块的大小,及ASM中一个AU单位的大小,"BLOCK_SIZE"选项和"AU_SIZE"选项。另外两个选项("F1B1_DISK"和"F1B1_AU")的人为设定需要对Oracle ASM比较懂才行。

AUL> ASM SET BLOCK_SIZE 4096
BLOCK_SIZE = 4096
AUL> ASM SET AU_SIZE 4096
AU_SIZE = 4096
AUL>

    OPEN命令用来打开Oracle ASM存贮,如果有不能访问或不存在的盘,OPEN命令会报告出来。需要给OPEN命令传入一个配置文件,配置文件为一个纯文本文件,包含所有的磁盘的访问路径,一行表示Oracle ASM存贮中的一个磁盘。由于AUL 6同时只能处理一个Oracle ASM磁盘组,请确保所有加入的磁盘是属于同一个磁盘组。

AUL> ASM OPEN DISK.TXT
2012-03-08 16:50:59
2012-03-08 16:50:59

    LIST命令用来列出打开的Oracle ASM存贮的详细信息,再次提醒一下,AUL 6同时只能处理一个Oracle ASM磁盘组,请确保所有加入的磁盘是属于同一个磁盘组。

AUL> ASM LIST
2012-03-08 16:54:50
Total Disks = 2, ausize=1048576, blksize=4096

disk    size block disk name        disk group  disk path
===== ======== ===== ================ ============ ========================
    0      200  4096 TEST_0000        TEST        e:\oracleasm\file01.asm
    1      200  4096 TEST_0001        TEST        e:\oracleasm\file02.asm

f1b1disk = 0, f1b1au = 2, score=256, compat=0x0a100000
file=(1,0,2,1), disk=(2,0,2,2), alias=(6,0,2,6)
2012-03-08 16:54:50
AUL>

    Command "LSAU" is used to scan out the file entry in case of disk header corruption. This command has three options, "DISK" to specify the disk number, "AU" for the starting AU number, "COUNT" for AU count need to be scanned.

AUL> ASM LSAU DISK 0 AU 2 COUNT 2
2012-03-08 16:59:38
fileid=1, disk=0, au=2, block=1, size=2097152, aus=2, flags=65, type=15
fileid=2, disk=0, au=2, block=2, size=1048576, aus=1, flags=65, type=15
fileid=3, disk=0, au=2, block=3, size=44040192, aus=42, flags=65, type=15
fileid=4, disk=0, au=2, block=4, size=1392640, aus=2, flags=65, type=15
fileid=5, disk=0, au=2, block=5, size=1048576, aus=1, flags=65, type=15
fileid=6, disk=0, au=2, block=6, size=1048576, aus=1, flags=65, type=15
2012-03-08 16:59:38
AUL>

    Command "SCAN" is used to scan out the file extent allocation information of whole ASM storage. This command has three options, "DISK" to specify the disk number, "AU" for the starting AU number, "COUNT" for AU count need to be scanned. For the output, the first column is file id, second column is the extent number (start with 1), third column is the disk number, the last column is the AU number in the disk (start with 0).

AUL> ASM SCAN DISK 0 AU 2 COUNT 2
2012-03-08 17:01:44
1,1,0,2
1,2,0,49
2,1,1,2
3,1,0,4
3,2,1,3
......
AUL> ASM SCAN
2012-03-08 17:02:08
1,1,0,2
1,2,0,49
2,1,1,2
3,1,0,4
3,2,1,3
3,3,0,6
3,4,1,4
.....

    Command "FILE" is used to list all the file entry.

AUL> ASM FILE
2012-03-08 17:11:21
    file  disk      au blk    size flag type alias0,alias1
======== ===== ======== === ======== ==== ==== ===========================
      1    0        2  1        2  65  15 -1,-1
      2    0        2  2        1  65  15 -1,-1
      3    0        2  3      42  65  15 -1,-1
      4    0        2  4        1  65  15 -1,-1
      5    0        2  5        1  65  15 -1,-1
      6    0        2  6        1  65  15 -1,-1
    256    0      49  0      128  17    2 159,53
2012-03-08 17:11:21
AUL>

    Command "ALIAS" is used to list all the system created alias.

AUL> ASM ALIAS
2012-03-08 17:16:18
    file          inc parent fstblk flag  refer alias
======== ============ ====== ====== ==== ====== ==========================
      -1          -1      0      0    4      2 DB10G
      -1          -1      0      2    4      3 DATAFILE
    256    748430975      2      3  18    -1 ASMDEMO
2012-03-08 17:16:18
AUL>

    Command "EXTENT" is used to set the variable extent size in Oracle ASM 11g. By default, it's 10g ASM setting. Contact me for more details of this command.

AUL> ASM EXTENT
2012-03-08 17:17:08
    au start      au end    aunum
============ ============ ========
          1  4294967295        1
2012-03-08 17:17:08

    Command "FMAP" is used to print out the extent map for given file (specify the file id with "FILE" option).

AUL> ASM FMAP FILE 2
2012-03-08 17:21:01
fid=2, disk=0, au=2, block=2
siz=1, ecnt=1, eeof=1, flags=65, type=15, alias=-1,-1
    extid  disk      auid  cnt flg chk
========== ===== ========== ==== === ===
        1    1          2    1  0  41
2012-03-08 17:21:01
AUL>

    Command "COPY" is used to copy specify file (specified by the "FILE" option) out of ASM to operation system, but you cannot copy operation system file into ASM storage.

AUL> asm copy file 256 to file_256.dbf
2012-03-08 17:24:04
2012-03-08 17:24:07
AUL>

    With good knowledge of ASM storage and AUL 6, you can perform ASM data recovery quickly, it's not a black box anymore.


---------------------------------------------结束,谢谢--------------------------------------------


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29119536/viewspace-1130923/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29119536/viewspace-1130923/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值