Oracle在Linux环境下全盘备份与恢复

一、基本环境
(一)正式数据库环境
操作系统:LINUX rhel-server-6.5-x86_64
服务器 :H3C R6800 2台
数据库实例:CT 、PF 、LA 、PL
硬盘使用:CT/PF 3.1TB
LA/PL 1.6TB
备份文件大小:3.8TB
数据库路径:CT:/oracle1/app/oracle/oradata/CT
PF:/oracle1/app/oracle/oradata/PF
LA:/oracle2/app/oracle/oradata/LA
PL:/oracle2/app/oracle/oradata/PL
(二)恢复数据库环境
操作系统:LINUX rhel-server-6.5-x86_64
服务器 :DELL R910 1台
数据库实例:CT、PF 、LA、 PL
硬盘需要空间:CT/PF/LA/PL 4.5TB
数据库路径:CT:/oracle1/app/oracle/oradata/CT
PF:/oracle1/app/oracle/oradata/PF
LA:/oracle1/app/oracle/oradata/LA
PL:/oracle1/app/oracle/oradata/PL
按照以上环境可看出,数据库为相同操作系统,两个实例相同目录,另两个实例不同目录文件恢复操作。
二、备份数据
将正式库使用的四个数据库中的数据进行RMAN备份。备份语句如下:
--------备份 CT------------
run{
allocate channel ch1 device type disk rate 20M maxpiecesize 30G format=’/oracle1/app/oracle_backup/CT/%d_%T_%U.rmn’;
allocate channel ch2 device type disk rate 20M maxpiecesize 30G format=’/oracle1/app/oracle_backup/CT/%d_%T_%U.rmn’;
backup full database plus archivelog delete input;
backup spfile format ‘/oracle1/app/oracle_backup/CT/%d_%s_%p_%t.spf’;
backup current controlfile format ‘/oracle1/app/oracle_backup/CT/%d_%s_%p_%t.ctf’;
release channel ch1;
release channel ch2;
}
--------备份 PF------------
run{
allocate channel ch1 device type disk rate 20M maxpiecesize 30G format=’/oracle1/app/oracle_backup/PF/%d_%T_%U.rmn’;
allocate channel ch2 device type disk rate 20M maxpiecesize 30G format=’/oracle1/app/oracle_backup/PF/%d_%T_%U.rmn’;
backup full database plus archivelog delete input;
backup spfile format ‘/oracle1/app/oracle_backup/PF/%d_%s_%p_%t.spf’;
backup current controlfile format ‘/oracle1/app/oracle_backup/PF/%d_%s_%p_%t.ctf’;
release channel ch1;
release channel ch2;
}
--------备份 LA------------
run{
allocate channel ch1 device type disk rate 20M maxpiecesize 30G format=’/oracle2/app/oracle_backup/LA/%d_%T_%U.rmn’;
allocate channel ch2 device type disk rate 20M maxpiecesize 30G format=’/oracle2/app/oracle_backup/LA/%d_%T_%U.rmn’;
backup full database plus archivelog delete input;
backup spfile format ‘/oracle2/app/oracle_backup/LA/%d_%s_%p_%t.spf’;
backup current controlfile format ‘/oracle2/app/oracle_backup/LA/%d_%s_%p_%t.ctf’;
release channel ch1;
release channel ch2;
}
--------备份 PL------------
run{
allocate channel ch1 device type disk rate 20M maxpiecesize 30G format=’/oracle2/app/oracle_backup/PL/%d_%T_%U.rmn’;
allocate channel ch2 device type disk rate 20M maxpiecesize 30G format=’/oracle2/app/oracle_backup/PL/%d_%T_%U.rmn’;
backup full database plus archivelog delete input;
backup spfile format ‘/oracle2/app/oracle_backup/PL/%d_%s_%p_%t.spf’;
backup current controlfile format ‘/oracle2/app/oracle_backup/PL/%d_%s_%p_%t.ctf’;
release channel ch1;
release channel ch2;
}
三、搭建恢复环境
(一)操作系统及空间准备
DELL R910安装Linux 6.5 X64系统,挂载阵列(阵列磁盘空间为8.6TB)。
(二)安装oracle软件
安装所需Oracle11 X64数据库软件,建立监听,并创建原数据库所需CT/PF/LA/PL空实例。
(三)拷贝备份文件
将前期使用RMAN备份的正式数据拷贝至到测试环境相同目录下,准备做数据恢复。
四、数据库恢复
因实例文件恢复路径改变,CT/PF和LA/PL恢复方式不同,恢复方式如下:
(一)CT恢复
挂载数据库备份硬盘
su - root
fdisk -l
mount -t ntfs-3g /dev/sdc1 /oracle1/app/oracle_backup
连接实例
export ORACLE_SID=CT
启动到SQL模式
sqlplus / as sysdba
关闭数据库
shutdown immediate;
启动实例到nomount模式下
startup nomount;
退出连接
exit
重新连接数据库到rman
export ORACLE_SID=CT
rman target/
设置DBID号,已前库为准
set DBID=3812883168

恢复控制文件
restore controlfile from ‘/oracle1/app/oracle_backup/CT/CT_1570_1_1017966942.ctf’;(注意查看备份文件中的控制文件名,每次都不同)
在这里插入图片描述
启动数据库为mount模式
startup mount;

修改备份配置和路径
configure default device type to disk;
configure device type disk parallelism 1;
configure archivelog deletion policy to backed up 1 times to device type disk;
configure channel device type disk format ‘/oracle1/app/oracle_backup/CT/%d_%T_%U’ maxpiecesize 30G;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘/oracle1/app/oracle_backup/CT/%d_%F’;

重新注册备份集
catalog start with ‘/oracle1/app/oracle_backup/CT’;

显示备份文件
list backup;

恢复数据文件
restore database;

恢复介质
recover database;
在这里插入图片描述
若运行时报以上错误,重新打开窗口(新建文件传输窗口)删除以下目录中的redo01.log,redo02.log,redo03.log 这3个文件。
rm -f /oracle1/app/oracle/oradata/CT/redo01.log
rm -f /oracle1/app/oracle/oradata/CT/redo02.log
rm -f /oracle1/app/oracle/oradata/CT/redo03.log
重新运行
recover database;

以上语句可能报错后可看到最大sequence值,用以下语句进行再次介质恢复成功:
在这里插入图片描述
run {
set until sequence 126049;
recover database;
}

启动数据库为日志模式
alter database open resetlogs;

退出RMAN模式
Exit
使用toad连接时报错
在这里插入图片描述
解决办法:在toad中执行以下语句即可,结果如图所示
//先执行以下语句,把报错的表空间停用
alter database tempfile ‘/oracle1/app/oracle/oradata/CT/temp01.dbf’ drop;
//再启用新的表空间
alter tablespace temp add tempfile ‘/oracle1/app/oracle/oradata/CT/temp01.dbf’ size 1024m reuse;

检查表空间是否正常,到此完成CT相同目录数据库文件恢复。
在这里插入图片描述
(二)PF恢复(同CT恢复一样)
连接实例
export ORACLE_SID=PF
启动到SQL模式
sqlplus / as sysdba
关闭数据库
shutdown immediate;
启动实例到nomount模式下
startup nomount;
退出连接
exit
重新连接数据库到rman
export ORACLE_SID=PF
rman target/
设置DBID号,已前库为准
set DBID=2858509157

恢复控制文件
restore controlfile from ‘/oracle1/app/oracle_backup/PF/PF_3327_1_1018047975.ctf’;(注意查看备份文件中的控制文件名)

启动数据库为mount模式
startup mount;

修改备份配置和路径
configure default device type to disk;
configure device type disk parallelism 1;
configure archivelog deletion policy to backed up 1 times to device type disk;
configure channel device type disk format ‘/oracle1/app/oracle_backup/PF/%d_%T_%U’ maxpiecesize 30G;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘/oracle1/app/oracle_backup/PF/%d_%F’;

重新注册备份集
catalog start with ‘/oracle1/app/oracle_backup/PF’;

显示备份文件
list backup;

恢复数据文件
restore database;

恢复介质
recover database;
出现错误,删除以下目录中的redo01.log,redo02.log,redo03.log 这3个文件。(或者手动删除)
rm -f /oracle1/app/oracle/oradata/PF/redo01.log
rm -f /oracle1/app/oracle/oradata/PF/redo02.log
rm -f /oracle1/app/oracle/oradata/PF/redo03.log
重新运行
recover database;
以上语句可能报错后可看到最大sequence值,用以下语句进行再次介质恢复成功:
run {
set until sequence 319245;
recover database;
}

启动数据库为日志模式
alter database open resetlogs;

退出RMAN模式
Exit
toad连接时保存
解决办法:在toad中执行以下语句即可,结果如图所示
//先执行以下语句,把报错的表空间停用
alter database tempfile ‘/oracle1/app/oracle/oradata/PF/temp01.dbf’ drop;
//再启用新的表空间
alter tablespace temp add tempfile ‘/oracle1/app/oracle/oradata/PF/temp01.dbf’ size 1024m reuse;
检查表空间 是否正常,一般运行以上命令后表空间正常显示
(三)LA恢复
注:由于LA存放备份文件的路径与前两个实例不一样,故有点区别,需要修改恢复设置,具体如下:
挂载数据库备份硬盘
su - root
fdisk -l
mount -t ntfs-3g /dev/sdc1 /oracle1/app/oracle_backup
连接实例
su - oracle
export ORACLE_SID=LA
启动到SQL模式
sqlplus / as sysdba
关闭数据库
shutdown immediate;
启动实例到nomount模式下
startup nomount;
退出连接
exit
重新连接数据库到rman
export ORACLE_SID=LA
rman target/
设置DBID号,已前库为准
set DBID=1921671467

恢复控制文件
restore controlfile from ‘/oracle1/app/oracle_backup/LA/LA_670_1_1017954618.ctf’;(注意查看备份文件中的控制文件名)

启动数据库为mount模式
startup mount;

修改备份配置和路径
configure default device type to disk;
configure device type disk parallelism 1;
configure archivelog deletion policy to backed up 1 times to device type disk;
configure channel device type disk format ‘/oracle1/app/oracle_backup/LA/%d_%T_%U’ maxpiecesize 30G;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘/oracle1/app/oracle_backup/LA/%d_%F’;

重新注册备份集
catalog start with ‘/oracle1/app/oracle_backup/LA’;

显示备份文件
list backup;

检查表空间序列顺序
report schema;
在这里插入图片描述
LA根据以上所得到序列顺序修改恢复测试目标路径语句如下:
run {
set newname for datafile 1 to ‘/oracle1/app/oracle/oradata/LA/SYSTEM01.DBF’;
set newname for datafile 2 to ‘/oracle1/app/oracle/oradata/LA/SYSAUX01.DBF’;
set newname for datafile 3 to ‘/oracle1/app/oracle/oradata/LA/UNDOTBS01.DBF’;
set newname for datafile 4 to ‘/oracle1/app/oracle/oradata/LA/USERS01.DBF’;
set newname for datafile 5 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_CPR’;
set newname for datafile 6 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG’;
set newname for datafile 7 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_MNT’;
set newname for datafile 8 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_IDX’;
set newname for datafile 9 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_SYS’;
set newname for datafile 10 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_OTHER’;
set newname for datafile 11 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG01’;
set newname for datafile 12 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG02’;
set newname for datafile 13 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG03’;
set newname for datafile 14 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG04’;
set newname for datafile 15 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG05’;
set newname for datafile 16 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG06’;
set newname for datafile 17 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG07’;
set newname for datafile 18 to ‘/oracle1/app/oracle/oradata/LA/TBS_LA_ORG08’;
restore database;
switch datafile all;
}

恢复介质
recover database;
以上语句可能报错后可看到最大sequence值,用以下语句进行再次介质恢复成功:

run {
set until sequence 26824;
recover database;
}

退出rman
Exit
因目标路径发生改变,特做以下操作,切换到SQL下,启动数据为mount模式
export ORACLE_SID=LA
sqlplus / as sysdba
shutdown immediate;
startup mount;
修改log文件存放路径
alter database rename file ‘/oracle2/app/oracle/oradata/LA/redo01.log’ to ‘/oracle1/app/oracle/oradata/LA/redo01.log’;
alter database rename file ‘/oracle2/app/oracle/oradata/LA/redo02.log’ to ‘/oracle1/app/oracle/oradata/LA/redo02.log’;
alter database rename file ‘/oracle2/app/oracle/oradata/LA/redo03.log’ to ‘/oracle1/app/oracle/oradata/LA/redo03.log’;
alter database rename file ‘/oracle2/app/oracle/oradata/LA/temp01.dbf’ to '/oracle1/app/oracle/oradata/LA/temp01.dbf ';

打开数据库设置log模式
alter database open resetlogs;

检查表空间大小

到此LA数据库恢复工作
(四)PL恢复(和LA恢复一样)
挂载数据库备份硬盘
su – root
fdisk –l
mount –t ntfs-3g /dev/sdd1 /oracle1/app/oracle_backup
连接实例
export ORACLE_SID=PL
启动到SQL模式
sqlplus / as sysdba
关闭数据库
shutdown immediate;
启动实例到nomount模式下
startup nomount;
退出连接
exit
重新连接数据库到rman
export ORACLE_SID=PL
rman target/
设置DBID号,已前库为准
set DBID=1862315518
恢复控制文件

restore controlfile from ‘/oracle1/app/oracle_backup/PL/PL_4464_1_1017999180.ctf’;(注意查看备份文件中的控制文件名)
启动数据库为mount模式
startup mount;
修改备份配置和路径
configure default device type to disk;
configure device type disk parallelism 1;
configure archivelog deletion policy to backed up 1 times to device type disk;
configure channel device type disk format ‘/oracle1/app/oracle_backup/PL/%d_%T_%U’ maxpiecesize 30G;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘/oracle1/app/oracle_backup/PL/%d_%F’;
重新注册备份集
catalog start with ‘/oracle1/app/oracle_backup/PL’;
显示备份文件
list backup;
检查表空间序列顺序
report schema;
在这里插入图片描述
根据以上所得到序列顺序修改恢复测试目标路径语句如下:
run {
set newname for datafile 1 to ‘/oracle1/app/oracle/oradata/PL/system01.dbf’;
set newname for datafile 2 to ‘/oracle1/app/oracle/oradata/PL/sysaux01.dbf’;
set newname for datafile 3 to ‘/oracle1/app/oracle/oradata/PL/undotbs01.dbf’;
set newname for datafile 4 to ‘/oracle1/app/oracle/oradata/PL/users01.dbf’;
set newname for datafile 5 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR’;
set newname for datafile 6 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG’;
set newname for datafile 7 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_MNT’;
set newname for datafile 8 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_IDX’;
set newname for datafile 9 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_SYS’;
set newname for datafile 10 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_OTHER’;
set newname for datafile 11 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR01’;
set newname for datafile 12 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR02’;
set newname for datafile 13 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR03’;
set newname for datafile 14 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR04’;
set newname for datafile 15 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR05’;
set newname for datafile 16 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR06’;
set newname for datafile 17 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR07’;
set newname for datafile 18 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR08’;
set newname for datafile 19 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR09’;
set newname for datafile 20 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR10’;
set newname for datafile 21 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR11’;
set newname for datafile 22 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR12’;
set newname for datafile 23 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR13’;
set newname for datafile 24 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR14’;
set newname for datafile 25 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR15’;
set newname for datafile 26 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR16’;
set newname for datafile 27 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR17’;
set newname for datafile 28 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR18’;
set newname for datafile 29 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR19’;
set newname for datafile 30 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR20’;
set newname for datafile 31 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR21’;
set newname for datafile 32 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR22’;
set newname for datafile 33 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR23’;
set newname for datafile 34 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR24’;
set newname for datafile 35 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR25’;
set newname for datafile 36 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR26’;
set newname for datafile 37 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR27’;
set newname for datafile 38 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_MNT01’;
set newname for datafile 39 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG01’;
set newname for datafile 40 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG02’;
set newname for datafile 41 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG03’;
set newname for datafile 42 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG04’;
set newname for datafile 43 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG05’;
set newname for datafile 44 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG06’;
set newname for datafile 45 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG07’;
set newname for datafile 46 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG08’;
set newname for datafile 47 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG09’;
set newname for datafile 48 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG10’;
set newname for datafile 49 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG11’;
set newname for datafile 50 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG12’;
set newname for datafile 51 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG13’;
set newname for datafile 52 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG14’;
set newname for datafile 53 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG15’;
set newname for datafile 54 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG16’;
set newname for datafile 55 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG17’;
set newname for datafile 56 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG18’;
set newname for datafile 57 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG19’;
set newname for datafile 58 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG20’;
set newname for datafile 59 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR28’;
set newname for datafile 60 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR29’;
set newname for datafile 61 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR30’;
set newname for datafile 62 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG21’;
set newname for datafile 63 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG22’;
set newname for datafile 64 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG23’;
set newname for datafile 65 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG24’;
set newname for datafile 66 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG25’;
set newname for datafile 67 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG26’;
set newname for datafile 68 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG27’;
set newname for datafile 69 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG28’;
set newname for datafile 70 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG29’;
set newname for datafile 71 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG30’;
set newname for datafile 72 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG31’;
set newname for datafile 73 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG32’;
set newname for datafile 74 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG33’;
set newname for datafile 75 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG34’;
set newname for datafile 76 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG35’;
set newname for datafile 77 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG36’;
set newname for datafile 78 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG37’;
set newname for datafile 79 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG38’;
set newname for datafile 80 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG39’;
set newname for datafile 81 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG40’;
set newname for datafile 82 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG41’;
set newname for datafile 83 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG42’;
set newname for datafile 84 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG43’;
set newname for datafile 85 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG44’;
set newname for datafile 86 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG45’;
set newname for datafile 87 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_ORG46’;
set newname for datafile 88 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR31’;
set newname for datafile 89 to ‘/oracle1/app/oracle/oradata/PL/TBS_PL_CPR32’;
restore database;
switch datafile all;
}

恢复介质
recover database;
以上语句可能报错后可看到最大sequence值,用以下语句进行再次介质恢复成功:

run {
set until sequence 433548; recover database;
}
(每次这个值都不一样,以实际报错的值为准)

退出rman
Exit
因目标路径发生改变,特做以下操作,切换到SQL下,启动数据为mount模式
export ORACLE_SID=PL
sqlplus / as sysdba
shutdown immediate;
startup mount;
修改log文件存放路径
alter database rename file ‘/oracle2/app/oracle/oradata/PL/redo01.log’ to ‘/oracle1/app/oracle/oradata/PL/redo01.log’;
alter database rename file ‘/oracle2/app/oracle/oradata/PL/redo02.log’ to ‘/oracle1/app/oracle/oradata/PL/redo02.log’;
alter database rename file ‘/oracle2/app/oracle/oradata/PL/redo03.log’ to ‘/oracle1/app/oracle/oradata/PL/redo03.log’;
alter database rename file ‘/oracle2/app/oracle/oradata/PL/temp01.dbf’ to '/oracle1/app/oracle/oradata/PL /temp01.dbf ';

(最后一步出错是语句中多了一个空格,删掉即可)
打开数据库设置log模式
alter database open resetlogs;

检查表空间(正常)

到此完成四个数据库恢复工作。使用数据库软件检查各表均能正常访问,并能做数据增删改操作。恢复的数据完整。

注意:若使用toad连接时,出现以下问题

解决办法:在toad中执行以下语句即可,结果如图所示
CT库
//先执行以下语句,把报错的表空间删除
alter database tempfile ‘/oracle1/app/oracle/oradata/CT/temp01.dbf’ drop;
//再创建新的表空间
alter tablespace temp add tempfile ‘/oracle1/app/oracle/oradata/CT/temp01.dbf’ size 1024m reuse;
PF库
//先执行以下语句,把报错的表空间删除
alter database tempfile ‘/oracle1/app/oracle/oradata/PF/temp01.dbf’ drop;
//再创建新的表空间
alter tablespace temp add tempfile ‘/oracle1/app/oracle/oradata/PF/temp01.dbf’ size 1024m reuse;

重做操作系统后oracle数据库恢复 文件夹中文件说明: ora.reg oracle主要注册项的恢复参考文件 oraodbc.reg odbc驱动项的恢复参考文件 oraole1~4.reg ole 驱动项的恢复参考文件 恢复中重要操作说明: 1、恢复前提,数据库系统文件(初始化配置文件、数据文件、重作日志文件、控制文件)没有遭到破坏。 2、注册表的恢复 3、监听程序重新恢复,注意监听配置、tns配置中机器名的核对 4、oracle实例服务的恢复 5、注册表中本地默认实例的恢复 6、计算机管理-用户组中ORA_DBA角色的恢复 操作步骤: 1、系统环境变量的恢复 在系统环境变量path项之前增加oracle系统可执行程序及动态链接库资源如"D:\oracle\ora90\bin;" 2、注册表的恢复 a、oracle数据库系统变量的恢复,ora.reg中饱含了oracle的主要系统参数,其中home项包含了不同的版本信息,导入注册表后可以根据情况修改、增加或者删除对应的home信息。 b、oracle odbc驱动参数的恢复,需要导入oraodbc.reg,此处以oracle90为例,针对不同的oracle版本需要修改相应的参数。导入后,除了检查版本及修改上述参数外还需要手工在注册表(regedit.exe)hkey_local_machine->software->odbc->odbcinst.ini->odbc drivers一项中参考其它字符串,增加一个oracle驱动程序名称(如Oracle in OraHome90)。恢复后可以通过系统odbc管理工具进行配置、测试。最后,如果不需要使用ODBC连接数据库,就不需要进行此处的恢复。 c、oracle oledb驱动参数的恢复,需要导入oraole1~4.reg,实际只需要导入1~2两个文件即可,其它两个属于注册表的副件。同样需要针对不同版本修改相应的参数。恢复后,可以通过配置一个 oledb测试,最快捷的方法为,新建一个文本文件,然后将后缀改为".udl"然后就可以继续操作了。最后,同ODBC一样,如果确定不需要使用ole驱动访问数据库,也可以不进行这部分的恢复操作。 ******此处的操作需要对windows操作系统注册表非常熟悉,对于linux平台,恢复操作类似,只不过需要对环境变量的操作熟悉。 3、监听程序的恢复 a、配置参数的恢复oracle_home\network\admin\listener.ora,检查本地机器名是否有变化,以确定监听参数中监听地址项是否需要修伽。 b、本地访问服务名tnsnames.ora的配置,同样需要检查机器名或ip地址是否有变化。此步骤可以省略 c、监听服务的恢复,运行 lsnrctl,执行start,会自动向系统服务中增加并启动监听服务。可以通过启动时的提示确定服务是否启动成功。确认服务启动成功后,在系统服务管理台里将服务启动属性从“手动”改为“自动”。 ******此处操作需要对lsnrctl工具熟悉。 4、本地默认实例的恢复 在注册表hkey_local_machine->software->oracle->home0->oracle_sid项,确认内容和你要恢复的实例名一致。进行这个操作,主要方便在本地sqlplus或其它客户端登录时不用指定数据库本地网络服务名。 5、系统ORA_DBA组的恢复 在"计算机管理"控制台中->系统工具->本地用户和组->组中,增加名称为"ORA_DBA",描述为"Members can connect to the Oracle database as a DBA without a password"的组,并将系统管理员用户如"Administrator"添加到组中。执行这样的操作,是为了能够在本机上不输入数据库用户名/密码,直接以dba角色登录数据库进行管理。 6、实例的恢复 a、确认数据库的初始化配置文件、数据文件、重作日志文件、控制文件等没有被损坏或缺失。 b、使用oradim工具重建实例服务。如oradim -new -sid test -startmode m -pfile d:\oracle\admin\test\pfile\init.ora oradim是oracle实例管理工具,具体参数说明,可以在命令行中直接输入oradim查看帮助提示。使用它能够创建、修改、删除,启动、停止本机上的oracle实例服务,有兴趣的,可以使用它实现一个单数据库多实例的案例。 c、使用sqlplus以dba身份登录确认数据库是否正常启动。 ******此处操作需要对oradim工具、oracle实例的概念熟悉。 7、恢复完成。可以打开其它应用程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值