九牧王ONE-ERP项目
ORACLE 还原到异机不同文件夹
Author: wuzhiqiang
Creation Date: 2013-08-20
Last Updated:
Control Number:
Version: v1.0
变更记录
Date |
Author |
Version |
Change Reference |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
审阅
Name |
Position |
|
|
|
|
|
|
|
|
|
|
分发
Copy No |
Name |
Location |
|
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
|
22 |
|
|
文档控制....................................................................................................................................... ii
1 ORACLE catalog还原到异机不同文件夹.......................................................................... 4
2 参数文件的恢复..................................................................................................................... 4
2.1 从指定位置恢复参数文件,这时只要先启动数据库到nomount状态,可以用其他实例的参数文件; 4
2.2 从还原的SPFILE文件启动数据库到nomount状态,然后从SPFILE文件创建PFILE.......... 4
2.3 修改参数文件、创建相应的系统目录;.............................................................................. 4
3 控制文件的还原..................................................................................................................... 4
4 数据文件的restore............................................................................................................ 5
5 进行数据文件的recover.................................................................................................... 6
6 以resetlogs的方式启动数据库....................................................................................... 6
1 ORACLE catalog还原到异机不同文件夹
本文档介绍如何使用catalog数据库还原数据库到不同的机器上面,且目标数据库的文件结构跟源数据库的文件结构不一致,但是数据库版本是一致的;
整个还原的思路如下:
a) 先还原参数文件SPFILE;
b) 然后通过SPFILE参数文件生成PFILE;
c) 对PFILE文件进行修改,创建符合本机的目录结构;
d) 启动到nomount状态;
e) 还原控制文件;
f) 通过指定恢复位置进行数据文件的restore;
g) 修改控制文件中的数据文件的路径,然后进行recover;
h) 修改redo log的位置,通过resetlogs方式启动数据库;
2 参数文件的恢复
2.1 指定位置还原参数文件
指定位置恢复参数文件,这时只要先启动数据库到nomount状态,可以用其他实例的参数文件;
脚本:restore spfile to 'c:\testspfile.ora' from 'd:\SPFILE_20130820';
2.2 从spfile创建pfile
从还原的SPFILE文件启动数据库到nomount状态,然后从SPFILE文件创建PFILE
脚本:create pfile='D:\PFILETEST.ORA' FROM SPFILE;
2.3 修改参数文件、创建相应的系统目录;
需要创建控制文件的路径、报警日志的路径、快速闪回区的路径、修改内存的大小;
3 控制文件的还原
在rman恢复控制文件的时候需要先设置恢复数据库的DBID,控制文件恢复完启动数据库到mount状态;
脚本:set DBID=1542976835
脚本:
run {
ALLOCATE CHANNEL CH1 TYPE 'SBT_TAPE';
SEND DEVICE TYPE 'SBT_TAPE' 'NSR_ENV=(NSR_SERVER=bkserver01,NSR_CLIENT=ekpdb01)';
restore controlfile from 'EKPJ_CONTROL_312_1_20130820';
RELEASE CHANNEL CH1;
}
4 数据文件的restore
因为恢复的目录不一样,所以需要通过set newname进行数据文件的重定向;
脚本:
run {
ALLOCATE CHANNEL C1 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL C2 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL C3 TYPE 'SBT_TAPE';
ALLOCATE CHANNEL C4 TYPE 'SBT_TAPE';
SEND DEVICE TYPE 'SBT_TAPE' 'NSR_ENV=(NSR_SERVER=bkserver01,NSR_CLIENT=ekpdb01)';
set newname for datafile 1 to '/oracle/oradata/ekpj/system01.dbf';
set newname for datafile 2 to '/oracle/oradata/ekpj/sysaux01.dbf';
set newname for datafile 3 to '/oracle/oradata/ekpj/undotbs01.dbf';
set newname for datafile 4 to '/oracle/oradata/ekpj/users01.dbf';
set newname for datafile 5 to '/oracle/oradata/ekpj/EKP01';
set newname for datafile 6 to '/oracle/oradata/ekpj/EKP02';
set newname for datafile 7 to '/oracle/oradata/ekpj/EKP03';
set newname for datafile 8 to '/oracle/oradata/ekpj/EKP04';
set newname for datafile 9 to '/oracle/oradata/ekpj/EKP05';
set newname for datafile 11 to '/oracle/oradata/ekpj/EKP06';
set newname for datafile 12 to '/oracle/oradata/ekpj/EKP07';
set newname for datafile 13 to '/oracle/oradata/ekpj/EKP08';
set newname for datafile 14 to '/oracle/oradata/ekpj/EKP09';
set newname for datafile 15 to '/oracle/oradata/ekpj/EKP10';
set newname for datafile 10 to '/oracle/oradata/ekpj/INDEX01';
restore database;
RELEASE CHANNEL C1;
RELEASE CHANNEL C2;
RELEASE CHANNEL C3;
RELEASE CHANNEL C4;
}
5 进行数据文件的recover
因为这个时候控制文件里面的文件信息还是指向原来的文件路径,这个时候需要查看控制文件中的原文件路径脚本,然后修改对应的文件路径成正确的文件路径;
查看控制文件中的文件路径:select name from v$datafile;
修改脚本:
alter database rename file '/data/ekpj/system01.dbf' to '/oracle/oradata/ekpj/system01.dbf';
alter database rename file '/data/ekpj/sysaux01.dbf' to '/oracle/oradata/ekpj/sysaux01.dbf';
alter database rename file '/data/ekpj/undotbs01.dbf' to '/oracle/oradata/ekpj/undotbs01.dbf';
6 以resetlogs的方式启动数据库
跟其他文件系统一样,也需要重新修改redolog的路径,才能进行resetlogs;
查看日志文件组:select * from v$logfile;
修改日志文件路径:alter database rename file '/data/redo03.log' to '/oracle/oradata/redo03.log';
启动数据库:alter database open resetlogs;
7 添加临时表空间
脚本:SQL> create temporary tablespacetemp01 tempfile '/oracle/oradata/ekpj/temps01.dbf' size 200M;
脚本:SQL> alter database default temporary tablespace temp01;