RMAN 跨平台备份、恢复
自Oracle 12c 开始rman 支持跨平台备份恢复数据库、表空间,其本质还是传输数据库、传输表空间技术(也必须满足传输数据库、传输表空间的要求),只不过rman 进行了封装,使用起来更方便、简洁了,准对12c以及以上数据库跨平台之间的数据迁移,之前复杂的xtts数据迁移技术成为了历史。
这里演示LInux 到 Windows 平台之间的表空间 、数据库备份恢复:
1、跨平台备份、恢复表空间(源平台、目标平台数据库必须有相同的数据库字符集、国家字符集,12.2开始支持增量备份以减少迁移期间的服务中断时间)
a、将要迁移的表空间TPCCTAB 设置为只读
alter tablespace TPCCTAB read only;
b、在源平台linux服务器使用rman 备份TPCCTAB 表空间,产生表空间备份文件以及包含表空间元数据的dump 文件:
BACKUP
TO PLATFORM 'Microsoft Windows x86 64-bit'
FORMAT '/backup/TPCCTAB.bak'
DATAPUMP FORMAT '/backup/trans_TPCCTAB_dmp.dmp'
TABLESPACE TPCCTAB;
c、将TPCCTAB表空间备份文件、元数据文件传输至目标平台windows 服务器对应目录:
d、在目标平台windows 服务器使用RMAN 还原TPCCTAB表空间,导入表空间元数据,表空间涉及的schema用户需提前建立:
RESTORE
FOREIGN TABLESPACE TPCCTAB TO NEW
FROM BACKUPSET 'D:\backup\TPCCTAB.bak'
DUMP FILE FROM BACKUPSET 'D:\backup\trans_TPCCTAB_dmp.dmp';
e、将表空间TPCCTAB 恢复为读写模式:
alter tablespace TPCCTAB read write;
2、跨平台备份、恢复数据库(源平台、目标平台必须是相同的字节序,12.2开始支持增量备份以减少迁移期间的服务中断时间)
a、将要迁移的数据库设置为只读:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
b、在源平台linux服务器使用rman 备份SITDB 数据库,产生数据库备份文件:
BACKUP
FOR TRANSPORT
FORMAT '/backup/sitdb_full.bak'
DATABASE;
c、将SITDB数据库备份文件传输至目标平台windows 服务器对应目录:
d、在目标平台windows 服务器上建立初始化参数,创建数据库实例,将实例启动至nomount 状态:
db_name=sitdb
sga_target=4G
pga_aggregate_target=500M
processes = 150
audit_file_dest='D:\oracle\app\oracle\admin\sitdb\adump'
audit_trail ='db'
db_block_size=8192
db_create_file_dest='+DATA'
db_recovery_file_dest='+DATA'
db_recovery_file_dest_size=40G
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files = ('+DATA/sitdb/controlfile/control01.ctl','+DATA/sitdb/controlfile/control02.ctl')
oradim -NEW -SID sitdb -PFILE 'D:\oracle\app\oracle\product\19.3.0\db_1\database\initsitdb.ora' -SRVC OracleServicesitdb -STARTMODE manual
e、在目标平台windows服务器使用RMAN还原数据库:
RESTORE
FROM PLATFORM 'Linux x86 64-bit'
FOREIGN DATABASE TO NEW
FROM BACKUPSET 'D:\backup\sitdb_full.bak';
f、在源平台linux 服务器数据库生成control file 创建脚本,在目标平台windows 服务器重建数据库control file
alter database backup controlfile to trace resetlogs;
control file 重建脚本如下:(数据文件路径名称由于采用了OMF特性,需提前根据目标平台windows 服务器数据库中实际生成的数据文件名进行调整)
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "SITDB" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'+DATA/SITDB/ONLINELOG/redo01a.log',
'+DATA/SITDB/ONLINELOG/redo01b.log'
) SIZE 200M BLOCKSIZE 512,
GROUP 2 (
'+DATA/SITDB/ONLINELOG/redo02a.log',
'+DATA/SITDB/ONLINELOG/redo02b.log’
) SIZE 200M BLOCKSIZE 512,
GROUP 3 (
'+DATA/SITDB/ONLINELOG/redo03a.log',
'+DATA/SITDB/ONLINELOG/redo03b.log'
) SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'+DATA/SITDB/DATAFILE/system.265.1090940195',
'+DATA/SITDB/DATAFILE/sysaux.256.1090940239',
'+DATA/SITDB/DATAFILE/undotbs1.263.1090940265',
'+DATA/SITDB/DATAFILE/tpcctab.266.1091357069',
'+DATA/SITDB/DATAFILE/users.259.1090940267'
CHARACTER SET AL32UTF8
;
保存控制文件创建脚本,上传至windows 服务器执行:
打开数据库,添加TEMPFILE 文件:
ALTER DATABASE OPEN MOUNT;
ALTER DATABASE OPEN RESETLOGS;
ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/SITDB/TEMPFILE/temp.261.1090940323'
SIZE 51380224 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
本文来自博客园,作者:踏雪无痕2017,转载请注明原文链接:https://www.cnblogs.com/oradba/p/15730966.html