多语言展示
当前在线:1489今日阅读:27今日分享:41

Oracle数据库在无备份情况下的使用DUL数据恢复

在企业日益增长的IT系统中,数据容量正以几何级数扩展。 Oracle DBA在保证数据完整性的课题上正面临着现有磁盘存储系统容量不足以存放全量备份,基于磁带的数据备份在恢复数据时往往要求远远超过预期的平均修复时间等实际问题。 “对于数据库而言,备份重于一切”是所有DBA心中谨记的格言,但现实环境千差万别,企业的数据库环境中数据备份空间不足,采购的存储设备短期内无法到货,甚至于虽然进行了备份但是却在数据恢复过程中发现备份实际不可用等问题均属常见的场景。为了应对这些真实世界中常见的数据恢复困局,需要特殊的恢复手段才能恢复其ORACLE DB中的数据。可以应对在完全没有备份情况下的SYSTEM表空间丢失、误操作ORACLE数据字典表、由于断电引起的数据字典不一致等数据库无法顺利打开的场景,也可以挽回误截断(Truncate)/删除(Delete)/业务数据表等人为的误操作,并从容恢复数据。甚至于仅仅接触过ORACLE数据库几天的非DBA 人员也可以轻松地使用PRM,这得益于PRM简单的安装、和全程图形化的人机交互界面;实施恢复的人员不需要专业的数据库知识,不需要学习任何命令,更无需了解数据库底层的存储结构。仅仅需要轻轻点击几下鼠标就能从容恢复数据。 对比传统恢复工具DUL,DUL是ORACLE原厂内部恢复工具,其使用需要通过ORACLE内部流程,一般仅有购买了ORACLE原厂的现场服务的用户能够在原厂工程师的协助下使用该工具。PRM打破了只有少数专业人士才能实施数据库恢复任务的限制,极大地缩短了从数据库故障到完整恢复数据的失败时间,降低了企业恢复数据的总成本。
工具/原料
1

PRM FOR ORACLE DATABASE

2

Xmanager

3

JDK 1.6以上版本

方法/步骤
1

假设本场景中 D 公司的DBA由于误操作删除了TS$数据字典基表导致数据库无法启动Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, Automatic Storage Management, OLAP, Data Miningand Real Application Testing options  INSTANCE_NAME----------------ASMME SQL>SQL>SQL> select count(*) from sys.ts$;   COUNT(*)----------         5 SQL> delete ts$; 5 rows deleted. SQL> commit; Commit complete. SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down. Database mounted.ORA-01092: ORACLE instance terminated. Disconnection forcedORA-01405: fetched column value is NULLProcess ID: 5270Session ID: 10 Serial number: 3 Undo initialization errored: err:1405 serial:0 start:3126020954 end:3126020954 diff:0 (0 seconds)Errors in file /s01/diag/rdbms/asmme/ASMME/trace/ASMME_ora_5270.trc:ORA-01405: fetched column value is NULLErrors in file /s01/diag/rdbms/asmme/ASMME/trace/ASMME_ora_5270.trc:ORA-01405: fetched column value is NULLError 1405 happened during db open, shutting down databaseUSER (ospid: 5270): terminating the instance due to error 1405Instance terminated by USER, pid = 5270ORA-1092 signalled during: ALTER DATABASE OPEN...opiodr aborting process unknown ospid (5270) as a result of ORA-1092

2

此场景中由于数据字典已经损坏,所以想要正常打开数据库是十分困难的。 此时则可以使用PRM来抽取数据库中的数据。具体步骤与场景1中的相似,用户仅仅需要输入该数据库的所有数据文件即可 启动PRM 在Windows下仅仅需要点击prm.bat , 在unix/linux下为SHELL运行prm.sh出现PRM  DUL FOR ORACLE DATABASE后, 点击  工具 =》恢复向导

3

进入恢复向导界面后 ,点击下一步 =》字典模式 下一步 =》下一步骤 我们要选择几个参数 : 包括Endian 字节序和DB NAME 由于ORACLE数据文件在不同的操作系统平台上采用了不同的Endian字节序格式,字节序和平台对应列表如下: Solaris[tm] OE (32-bit)BigSolaris[tm] OE (64-bit)BigMicrosoft Windows IA (32-bit)LittleLinux IA (32-bit)LittleAIX-Based Systems (64-bit)BigHP-UX (64-bit)BigHP Tru64 UNIXLittleHP-UX IA (64-bit)BigLinux IA (64-bit)LittleHP Open VMSLittleMicrosoft Windows IA (64-bit)LittleIBM zSeries Based LinuxBigLinux x86 64-bitLittleApple Mac OSBigMicrosoft Windows x86 64-bitLittleSolaris Operating System (x86)LittleIBM Power Based LinuxBigHP IA Open VMSLittleSolaris Operating System (x86-64)LittleApple Mac OS (x86-64)Little  例如在传统Unix  AIX-Based Systems (64-bit) 、HP-UX (64-bit) 上使用的是Big Endian大端字节序,则这里要选为Big Endian: 注意事项: 如果你的数据文件是在AIX(即Big Endian的)上生成的,你为了方便而将这些数据文件拷贝到Windows服务器上并使用PRM来恢复数据,那么你仍应当选择其原生的Big Endian格式。 之后需要为指定的数据文件指定其Block Size即ORACLE数据块的大小,这里根据实际情况修改即可, 例如你的DB_BLOCK_SIZE是8K,但是部分表空间指定16K作为数据块大小的,仅仅需要为那些不是8k的数据文件修改BLOCK_SIZE即可。  这里的OFFSET 参数主要是为了那些采用裸设备存放数据文件的场景,例如在AIX上基于普通VG的LV作为数据文件,则存在4k的OFFSET,需要在此处指定。 如果你恰巧正在使用裸设备数据文件,而又不知道OFFSET到底是多少? 则可以使用$ORACLE_HOME/bin下自带的dbfsize工具查看,如下面的例子高亮部分显示该裸设备具有4K的OFFSET选好后点击 下一步

4

点击 选择文件,加入要修复的数据库的数据文件,之后点击加载

5

PRM会加载数据字典,之后主界面左侧会出现对象树形图,点击你需要的对象表并选择unload 或者dataBridge即可

注意事项
1

如果你的数据文件是在AIX(即Big Endian的)上生成的,你为了方便而将这些数据文件拷贝到Windows服务器上并使用PRM来恢复数据,那么你仍应当选择其原生的Big Endian格式。

2

这里的OFFSET 参数主要是为了那些采用裸设备存放数据文件的场景,例如在AIX上基于普通VG的LV作为数据文件,则存在4k的OFFSET,需要在此处指定。

推荐信息