恢复数据库需要准备的文件:rman完整备份(包括数据文件、日志文件、控制文件、参数文件),记录源数据库的DBID
一、安装数据库ORACLE数据库软件并创建跟源数据库同名和数据库SID并修改数据库DBID跟源数据库DBID一样,创建跟源数据库服务器相同的数据文件目录、日志文件目录、控制文件目录。
二、修改DBID:
SQL>CONN / AS SYSDBA;
SQL> select dbid from v$database;
DBID
1465764760
SQL> show parameter db_name
NAME TYPE VALUE
db_name string eygle
SQL> exec dbms_backup_restore.nidbegin('eygle','EYGLE','3935589514','1465764760',0,0,10)
PL/SQL 过程已成功完成。
SQL> select dbid from v$database;
DBID
1465764760
SQL> variable a number;
SQL> variable b number
SQL> variable c number;
SQL> exec dbms_backup_restore.nidprocessdf(0,0,:a,:b,:c);
PL/SQL 过程已成功完成。
SQL> print :a
A
0
SQL> print :b
B
1
SQL> print :c
C
1
SQL> exec dbms_backup_restore.nidprocesscf(:a,:b);
PL/SQL 过程已成功完成。
SQL> print :a
A
1
SQL> print :b
B
1
SQL> exec dbms_backup_restore.nidend;
PL/SQL 过程已成功完成。
SQL> select dbid from v$database;
DBID
3935589514
三、DBID修改成功后,依次恢复参数文件、控制文件、数据文件、日志文件:
SQL>startup nomount force
SQL>host;
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期三 9月 1 23:19:41 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: study (未装载)
----恢复参数文件
RMAN> restore spfile to pfile 'D:\ORACLE\DATABASE\INITSTORDA.ORA' from 'D:\ORACLE\backup\C-3350757905-20090826-03';
--恢复控制文件
RMAN> restore controlfile from 'F:\FULL-x\CONTROL7286087020.CTL';
启动 restore 于 01-9月 -10
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:06
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL01.CTL
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL02.CTL
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\CONTROL03.CTL
完成 restore 于 01-9月 -10
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
RMAN>
----恢复所有可用的数据文件
SQL> select file#,name from v$datafile;
FILE# NAME
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\UNDOTBS01.DBF
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSAUX01.DBF
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\USERS01.DBF
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\STREAMS_TBS01.DBF
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
7 D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE02.DBF
已选择7行。
RMAN> restore datafile 1,2,3,4,5,6;
启动 restore 于 01-9月 -10
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSTEM01.DBF
正将数据文件00002恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\USERS01.DBF
正将数据文件00005恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\STREAMS_TBS01.DBF
正将数据文件00006恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\STUDY\PHONE01.DBF
通道 ORA_DISK_1: 正在读取备份段 F:\FULL-X\0CLMRBQU_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = F:\FULL-X\0CLMRBQU_1_1 标记 = TAG20100901T231645
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:15
完成 restore 于 01-9月 -10
----恢复归档日志文件
RMAN> run{
2> set archivelog destination to '/racbackup';
3> restore archivelog all;
4> }
----恢复数据库
SQL> conn /as sysdba
SQL> recover database using backup controlfile until cancel;
----指定 resetlogs关键字,启动数据库到open状态
SQL> alter database open resetlogs;
至此,数据库恢复正常
SQL>CONN / AS SYSDBA;
----修改用户密码
SQL>alter user SYS identified by SYS;
----修改密码文件方法
C:\Documents and Settings\Administrator>orapwd file=C:\Oracle\product\11.2.0\dbhome_1\database\PWDdmsasc.ora password=SYS force=y