如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
适用于:
Oracle Database – Standard Edition
Oracle Database – Personal Edition
Oracle Database – Enterprise Edition – Version 9.0.1.0 and later
Enterprise Manager for Oracle Database
本文信息适用于任何平台。
目的
此公告描述了使用克隆技术从意外丢失NOARCHIVEMODE数据库配置下的数据文件中恢复的建议。
范围
本功能针对掌握备份和恢复过程的DBA和Support Analyst。
详细信息
从noarchive模式意外丢失数据文件中恢复的提示:
======================================================================
当数据文件由于媒体故障被意外删除或丢失,
文件引用仍然存在于数据库控制文件中。尝试打开数据库失败,显示以下错误:
ORA-01157: cannot identify/lock data file 5 – see DBWR trace file
ORA-01110: data file 5: ‘/u01/oradata/V815/data/users01.dbf’
数据库保持在mounted状态(唯一打开的文件是控制文件。)
You need to restore the database from the latest good cold backup including
all the database physical structural files: controlfile(s), redolog files,
and datafiles. However, you can choose another method to quickly open a
database by dropping the missing datafile and the affected tablespace from
the database. This approach is recommended when the effected tablespace
contains: 你需要从最新的好的冷备份中还原数据库,包括所有数据库的物理结构文件:控制文件,重做日志文件,和数据文件。但是,你可以选择其他方法来快速打开数据库,通过从数据库中drop丢失的数据文件和受影响的表空间。当受影响的表空间包括以下内容,建议使用这个方法:
o 不重要的数据。
o 可以被手动重建的索引。
o 此时不重要的历史数据,且有必要尽快打开数据库以最小化宕机时间down time。之后可以通过使用克隆数据库技术来恢复丢失的数据。
注:以下是丢失的数据文件与回滚段或系统表空间无关的情况。
以下必须在数据库处于mount状态下完成:
SQL> alter database datafile ‘/u01/oradata/V815/data/users01.dbf’ offline drop;
Statement processed.
SQL> alter database open;
Statement processed.
SQL> drop tablespace users including contents;
Statement processed.
以下是关于如何使用克隆技术从被drop表空间中恢复数据的提示。
注:一些步骤涉及UNIX操作系统环境,但可适用于NT 操作系统。
使用克隆技术恢复数据的提示:
—————————————————-
1. 你需要还原与以下表空间相关的必要数据文件:system, rollback, temporary, 以及你想恢复到新目录的表空间(即,/u01/oradata/CLONE)。
如果你为冷备份使用RMAN ,使用”set newname” 命令将数据文件还原到新的位置。例如:
RMAN> run {
set newname for datafile 1 to ‘/u01/oradata/CLONE/system01.dbf’;
set newname for datafile 2 to ‘/u01/oradata/CLONE/rbs01.dbf’;
set newname for datafile 3.to ‘/u01/oradata/CLONE/temp01.dbf’;
set newname for datafile 6 to ‘/u01/oradata/CLONE/users01.dbf’;
allocate channel t1 type ‘SBT_TAPE’;
restore datafile 1,2,3,6;
}
要获取数据文件号,查询V$DATAFILE视图。
注:RMAN 将被还原的文件视为用于未来还原操作的有效副本。因此,当你不使用克隆的数据库时,使用”change” 命令的RMAN 适当语法来删除对被还原文件的引用。例如:
RMAN> change datafilecopy ‘/u01/oradata/CLONE/system01.dbf’ uncatalog;
这从目标数据库控制文件和RMAN catalog(如果存在)中删除引用reference。
2. 使用新名称,如initCLONE.ora和configCLONE.ora将你的生产init 和 config文件复制到与被还原数据文件相同的目录。
3. 将initCLONE.ora 的软链接创建到$ORACLE_HOME/dbs中。
4. 修改这两个文件的内容,以引用新的db_name=CLONE,配置文件(”ifile”参数)的新位置,和”control_files”的新位置。
5. 将ORACLE_SID 环境变量设为新实例名”CLONE”。
6. 使用create controlfile sql语句准备一个sql脚本文件。如果你在生产数据库上备份要跟踪的控制文件you backup your controlfile to trace on the production database (“alter
database backup controlfile to trace”),你可以通过一些修改来重新使用该跟踪文件。该语句 应该类似:
STARTUP NOMOUNT
CREATE CONTROLFILE SET DATABASE “CLONE” RESETLOGS NOARCHIVELOG
MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 8
MAXLOGHISTORY 843
LOGFILE
GROUP 1 ‘/u01/oradata/CLONE/redoCLONE01.log’ SIZE 500K,
GROUP 2 ‘/u01/oradata/CLONE/redoCLONE02.log’ SIZE 500K,
GROUP 3 ‘/u01/oradata/CLONE/redoCLONE03.log’ SIZE 500K
DATAFILE
‘/u01/oradata/CLONE/system01.dbf’,
‘/u01/oradata/CLONE/rbs01.dbf’,
‘/u01/oradata/CLONE/temp01.dbf’,
‘/u01/oradata/CLONE/users01.dbf’
CHARACTER SET WE8ISO8859P1
确保LOGFILE 指向新的重做文件位置。同样适用于数据文件。此外,该语句的数据文件部分必须仅包括必要的数据文件,如此公告之前所述。
7. 启动SQL*Plus 并作为SYSDBA连接,并启动该脚本。
8. 使用以下语句打开数据库:
SQL> alter database open resetlogs;
9.当克隆数据库成功打开,你可以执行丢失对象/数据的导出并将它们导入到生产数据库。
注:Oracle 8i用户也可以使用RMAN “duplicate”命令。 这个方法在Oracle8i恢复管理器用户指南和参考版本2(8.1.6)的“使用Recovery Manager创建duplicate数据库”一章或Oracle8i的备份和恢复
指南版本8.1.5中详细介绍。然而,“duplicate”命令强制你还原所有数据库数据文件,当有人只想从一个表空间中检索数据时是不可行的。
同时参见 Note: 223543.1 How to Recover From a DROP / TRUNCATE / DELETE TABLE with RMAN
参考:
===========
Oracle8i Recovery Manager User’s Guide and Reference Release 2 (8.1.6),
chapter on “Creating a Duplicate Database with Recovery Manager.”
Oracle8i Backup and Recovery Guide Release 8.1.5.
Leave a Reply