Redhat 5.8+Oracle11.2.0.1
一、源端
创建NFS
/etc/exports中添加如下内容
/bakup *(rw,async,nohide,no_subtree_check)
开启nfs服务,并使用其开机自启
service nfs start
chkconfig nfs on
showmount -e
Export list for racdb1:
/bakup *
备份源库
RMAN> run{
backup as compressed backupset database format '/bakup/%d_%T_%s.dbf' ;
sql 'alter system switch logfile';
backup as compressed backupset format='/bakup/arch_%d_%T_%s.bak' archivelog all delete input;
backup current controlfile reuse format='/bakup/CTL_%T.bak';
}创建pfile
SQL> create pfile='/bakup/initora11g.ora' from spfile;
二、目标端
mount备份的目录
mount 192.168.1.3:/bakup /bakup
ll /bakup/
total 465040
-rw-r----- 1 oracle oinstall 12606976 Dec 1 13:36 arch_ORA11G_20141201_3.bak
-rw-r----- 1 oracle oinstall 9797632 Dec 1 13:36 CTL_20141201.bak
-rw-r--r-- 1 oracle oinstall 878 Dec 1 15:53 initora11g.ora
-rw-r----- 1 oracle oinstall 452108288 Dec 1 13:36 ORA11G_20141201_1.dbf
-rw-r----- 1 oracle oinstall 1097728 Dec 1 13:36 ORA11G_20141201_2.dbf
目标端实例名,可自定义
[oracle@db1 ~]$ echo $ORACLE_SID
db11g64
创建相应的目录
[oracle@db1 oracle]$ mkdir -p /u01/app/oracle/admin/ora11g/adump
[oracle@db1 oracle]$ mkdir -p /u01/oradata/ora11g
[oracle@db1 oracle]$ mkdir -p /u01/archivelog
进入SQL提示符
[oracle@db1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 1 15:54:04 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
使用pfile启动到nomount状态,创建spfile再次启动到nomount状态
SQL> startup nomount pfile='/bakup/initora11g.ora';
ORACLE instance started.
Total System Global Area 421724160 bytes
Fixed Size 2213976 bytes
Variable Size 289408936 bytes
Database Buffers 121634816 bytes
Redo Buffers 8466432 bytes
SQL> create spfile from pfile='/bakup/initora11g.ora';
File created.
SQL> startup force nomount;
ORACLE instance started.
Total System Global Area 421724160 bytes
Fixed Size 2213976 bytes
Variable Size 289408936 bytes
Database Buffers 121634816 bytes
Redo Buffers 8466432 bytes
恢复控制文件,mount数据库
RMAN> restore controlfile from '/bakup/CTL_20141201.bak';
RMAN> mount database;
database mounted
released channel: ORA_DISK_1
还原、恢复数据文件(可以源端查看日志或RMAN提示符下list backup确定recover到哪个日志序列)
数据文件目录不一致,要执行红色操作
RMAN> run{
#set newname for datafile 1 to '/newpath/system01.dfb'
set until sequence 47;
restore database;
recover database;
}
日志文件目录不一致,要执行以下操作
SQL> alterdatabase rename file '/oldpath/redo01.log' to'/newpath/redo01.log'
以迁移方式resetlogs数据库
SQL> alter database open resetlogs migrate;
SQL> select * from v$version; #查看版本
执行转换脚本,并重新启动
SQL> spool /u01/logs/utlirp.log
SQL> @?/rdbms/admin/utlirp.sql
SQL> select * from v$version;#验证版本
SQL> shutdwon immediate
SQL> startup
编绎无效对象
SQL> select count(*) from dba_invalid_objects;
COUNT(*)
----------
9160
SQL> spool /u01/logs/utlrp.log
SQL> @?/rdbms/admin/utlrp.sql
结论:32到64位的转换,主要是最后两个脚本,一个转换成64位,一个编绎无效对象。其它备份恢复的操作大同小异。