说明:
1、 rman异机恢复的时候,db_name必须相同。如果说要想改成其他的实例名,可以在恢复成功后,用nid命令修改。实例名的信息会记录到控制文件里,所以如果在恢复的时候,实例名不一致会报错。
2、如果恢复的路径与源库不一致,就需要在restore时用set命令指定新的
在做duplicate的时候,rman会自动根据pfile中的log_file_name_convert和db_file_name_convert来进行set的转换。手工restore时,只能使用set命令。
3、用nid修改bdid和dbname
使用RMAN对已损坏数据库进行异机还原的前提条件:
1、 old_host上的数据库已使用RMAN进行了备份
2、 old_host上的数据库的PFILE或SPFILE已做了备份
3、 catalog上的恢复目录完好,并且可用,如果不可用,先恢复恢复目录数据库
4、 备份服务器上的备份数据完好,并且可用
5、 确保new_host机器上装有的Oracle版本与old_host机器上的一致
6、 在new_host上创建dba组和与old_host相同的Oracle用户。将\data的可写权限给Oracle用户。确定new_host上有足够的硬盘空间存放新的datafile及archive log file(如UNIX平台)
7、 修改.profile文件中相关的Oracle环境变量,ORACLE_SID保持与old_host中一致(如UNIX平台)
8、还原前需收集的信息
Oracle数据库SID , DBID.
Oracle数据库在线日志文件全路径
Oraexp 路径
rman用户 和rman 用户的表空间 (以导入方式恢复恢复目录时要用)
源数据库的参数文件pfile文件
恢复步骤:
1、在辅助机要有oracle软件,并且正确配置连接catalog数据库。
2、将从old_host备份到服务器上的数据库备份,手工还原到new_host上(要求目录必须一致,catalog库会记载在old_host上备份集在啥位置上。)
3、 创建相关的目录(11g不用)。通常所需建立的目录为background_dump_dest、core_dump_dest、user_dump_dest、log_archive_dest
4、、 创建参数文件pfile,要和源数据库一致(如果old_host的ORACLE_HOME与new_host不一致可以放在相应目录下,并修改pfile中相关内容与实际相符,例如目录、控制文件位置等)
将old_host中$ORACLE_HOME\dbs下的initSID.ora文件拷至new_host的$ORACLE_HOME\dbs下。如果initSID.ora中有ifile='xxx.ora',则将xxx.ora也进行拷贝。Oracle9也可能用spinitSID.ora。
5、创建密码文件
orapwd file=E:\app\Administrator\product\11.2.0\dbhome_1\dbs\PWDvcenter password=oracle
6、创建服务(如果win):
C:\Users\Administrator>oradim -new -sid vcenter -startmode m -pfile E:\app\Administrator\product\11.2.0\dbhome_1\da
tabase\INITvcenter.ora
7、从前面创建的pfile里创建spfile.
SQL> create spfile from pfile='E:\app\Administrator\product\11.2.0\dbhome_1\database\INITvcenter.ora'
2 ;
8、运行恢复脚本, 恢复控制文件和数据文件:
startup nomount (spfile起作用)
rman target / catalog rman/rman@rman
restore controlfile (按pfile中设置的位置恢复)
list backup 可以看见所以得备份集,备份集在原机啥位置 ,辅助机仍然要在啥位置,否则无法找到备份集。
run{
set newname for datafile 1 to 'E:\app\Administrator\oradata\vcenter\system01.dbf';
set newname for datafile 2 to 'E:\app\Administrator\oradata\vcenter\sysaux01.dbf';
set newname for datafile 3 to 'E:\app\Administrator\oradata\vcenter\undotbs01.dbf';
set newname for datafile 4 to 'E:\app\Administrator\oradata\vcenter\users01.dbf';
set newname for datafile 5 to 'E:\app\Administrator\oradata\vcenter\vpx01.dbf';
startup mount;
restore database;
switch datafile all;} (更新控制文件)
9、重置在线日志
11g R2平台 在open resetlogs之后,自动在原来默认的路径创建temp表空间和redo,但是如果路径与原库不一致,由于没有响应目录无法创建。
需要先更改控制文件中日志文件的存在位置。
SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\VCENTER\REDO01.LOG' to 'E:\app\Administrator\oradata\
vcenter\redo01.log';
数据库已更改。
SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\VCENTER\REDO02.LOG' to 'E:\app\Administrator\oradata\
vcenter\redo02.log';
数据库已更改。
SQL> alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\VCENTER\REDO03.LOG' to 'E:\app\Administrator\oradata\
vcenter\redo03.log';
数据库已更改。
SQL> alter database open resetlogs;
数据库已更改。
数据库已经打开,并按照控制文件中日志文件、临时文件存在的位置创建临时文件与日志文件,但是必须要有相符的路径。
10、修改临时文件
需要创建一个新的临时表空间再设置为默认,将原临时表空间删除,实际是删除控制文件中临时文件原存放位置信息。
SQL> create temporary tablespace temp01 tempfile 'E:\app\Administrator\oradata\vcenter\temp01.dbf' size 100m
2 autoextend on;
Tablespace created.
SQL> alter database default temporary tablespace temp01;
Database altered.
SQL> drop tablespace temp including contents and datafiles;
Tablespace dropped.
SQL> select * from dba_temp_files;
FILE_NAME
--------------------------------------------------------------------------------
FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS
---------- ------------------------------ ---------- ---------- -------
RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
------------ --- ---------- ---------- ------------ ---------- -----------
E:\APP\ADMINISTRATOR\ORADATA\VCENTER\TEMP01.DBF
2 TEMP01 104857600 12800 ONLINE
1 YES 3.4360E+10 4194302 1 103809024 12672
11、重新设置新的备份环境,进行全备
注意:
一、ORA-01861: literal does not match format string
RMAN中使用recover database until time '2009-06-09 14:00:00'
命令进行基于时间点的恢复时报的一个错误。
这个错误是由于时间日期格式设置的问题,设置正确的时间格式:
$ export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
二、ORA-06553: PLS-801: internal error [56319]错误
目标数据库恢复成功,登陆进去,一切正常。结果在执行最简单的sql查询的时候报这个错,执行多个不同的sql反复报这个错误,但sql语句可以正常执行。rapidsql等工具无法连接。
原因:源库是64位的OS,目标库是32位(9.36安装64位10g,5.186安装32位10g)
解决方法:
1、Shutdown immediate
2、startup migrate
注:startup migrate表示降级,在9i,无论升级/降级 数据库都是startup migrate;10g后增加了upgrade参数,升级可直接用startup upgrade,降级仍是startup migrate.
3、@$ORACLE_HOME/rdbms/admin/utlirp.sql;
4、Shutdown immediate
5、Startup
6、@$ORACLE_HOME/rdbms/admin/utlrp.sql;
7、Shutdown immediate
8、Startup
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/196700/viewspace-739916/,如需转载,请注明出处,否则将追究法律责任。