如何从备份还原Oracle 10G数据库

时间:2010-02-05 06:51:32

标签: oracle oracle10g recovery

我有一个Oracle 10G数据库。 我运行了以下脚本来备份数据库。

alter tablespace EMP2010 begin backup;
host copy G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EMP2010.DBF G:\orabackup\database\
alter tablespace EMP2010 end backup;

alter tablespace PAYROLL2010 begin backup;
host copy G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\PAYROLL2010.DBF G:\orabackup\database\
alter tablespace PAYROLL2010 end backup;

host copy G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO2010_1.LOG G:\orabackup\database\
host copy G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO2010_2.LOG G:\orabackup\database\
host copy G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO2010_2.LOG G:\orabackup\database\

alter system switch logfile;
host sleep 60
host copy G:/oracle/product/10.2.0/oradata/orcl/arch* G:\orabackup\database\/
alter database backup controlfile to 'G:\orabackup\database\/controlbackup.bac';

备份生成.dbf,.log和.bac文件。 现在我想从上面的备份文件中恢复数据库。 我不想使用RMAN。

我已经知道使用以下命令我可以将.dbf文件恢复到表空间:

imp transport_tablespace=Y tablespace=(Ts Name) 
    file='location of dump file C:\user.dmp'
    datafiles=('location of dbf file')

在上面的imp命令中,我不明白哪个文件要提供“.dmp文件的位置”,因为我的备份没有生成任何.dmp文件。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

IMP是导入先前使用EXP导出的数据库对象的机制。这不适用于您的情况。

您需要做的是手动恢复数据库。为此,请使用RECOVER DATABASE。有很多与此主题相关的内容,远不止这里介绍,所以最好的办法是read the online documentation

答案 1 :(得分:0)

您可以将IMP与可传输表空间一起使用来移动数据文件,但您也需要一个EXP。

您的EMP2010.DBF包含一组表/索引内容的数据。 但是,您的SYSTEM.DBF包含元数据(例如,表中有哪些列,哪些表位于哪个表空间中)。没有元数据,EMP2010.DBF的内容难以理解。

EXP可以将元数据(使用ROWS = N)导出到DMP文件中。

您无需担心为可传输的表空间副本移动重做日志,归档重做日志或控制文件。