1、使用RMAN备份库
前提是,库必须是在archivelog模式下
RMAN> BACKUP FORMAT '/home/oracle/%t_%T.bkp' DATABASE;
2、设置新库SID
export ORACLE_SID=o1
3、启动新库到DUMMY的NOMOUNT状态,恢复SPFILE
RMAN> RESTORE SPFILE FROM '/home/oracle/808489927_20130227.bkp' to '/home/oracle/inito1.ora';
4、创建PFILE,修改PFILE
SQL> STARTUP NOMOUNT;
SQL> CREATE PFILE='/home/oracle/inito1.ora' FROM SPFILE;
修改PFILE中各路径
5、用修改后的PFILE启动并生成SPFILE,使用SPFILE启动
SQL> STARTUP PFILE='/home/oracle/inito1.ora';
SQL> CREATE SPFILE FROM PFILE='/home/oracle/inito1.ora';
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP NOMOUNT;
6、还原控制文件
RMAN> RESTORE CONTROLFILE TO '+DATA/o1/controfile01.ctl' FROM'/home/oracle/808489927_20130227.bkp';
7、还原数据文件
RMAN>
run {
set newname for datafile '/u01/app/oracle/oradata/orcl/system01.dbf' to '+DATA/o1/system01.dbf';
set newname for datafile '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '+DATA/o1/sysaux01.dbf';
set newname for datafile '/u01/app/oracle/oradata/orcl/undotbs01.dbf' to '+DATA/o1/undotbs01.dbf';
set newname for datafile '/u01/app/oracle/oradata/orcl/users01.dbf' to '+DATA/o1/users01.dbf';
restore database;
}
8、做不完全恢复并打开数据库
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE;
指定其一个原先的REDOLOG文件
SQL> ALTER DATABASE OPEN RESETLOGS;
9、在ASM上增加REDOLOG
SQL> ALTER DATABASE ADD LOGFILE GROUP 4 '+DATA/o1/redo01.log' SIZE 100M;
SQL>ALTER DATABASE ADD LOGFILE GROUP 5 '+DATA/o1/redo02.log' SIZE 100M;
SQL>ALTER DATABASE ADD LOGFILE GROUP 6 '+DATA/o1/redo03.log' SIZE 100M;
10、逐步DROP原来的旧日志