暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Oracle使用RMAN从Windows迁移数据到Linux.txt
110
3页
2次
2025-04-21
10墨值下载
Oracle 使用 RMAN Windows 迁移数据到 Linux
由于 Windows Linux 同属于 little endian 平台,所以 Windows 平台 RMAN 数据库备份可以在 Linux
直接使用,但是 Windows 平台下的归档日志无法在 Linux 平台直接用于 recover database,但是我们可
以使用增量备份解决增量问题,然后最后在源库停机下做最后备份,减少源库停机时间。
1. 基础数据备份恢复
1.1 源端 Windows 0 级备份
# 下面仅给出示例,实际命令与并行度需要根据实际服务器负载以及磁盘能力配置。
RMAN> backup as compressed backupset incremental level 0 database format
'd:\rmanbak\full_level0_%d_%T_%s_%p' tag 'full_level_0';
RMAN> backup current controlfile format 'd:\rmanbak\ctl_level0_%d_%T_%s_%p' tag
'ctl_bak_1';
1.2 Linux 端恢复 0 级备份
# 恢复 spfile 与修改 pfile 中参数、上传备份集到 Linux 服务器等基础步骤略过,下面仅演示恢复过程
RMAN> startup nomount;
RMAN> restore controlfile from '/u01/backup/CTL_LEVEL0_ORCL_20230830_3_1';
RMAN> alter database mount;
# 清理控制文件记录的原来备份信息记录
RMAN> crosscheck backup;
RMAN> delete noprompt expired backup;
# 重新将备份片注册到控制文件记录中
RMAN> catalog start with '/u01/backup/';
# restore 数据库 0 级备份
RMAN>run{
set newname for database to '/u01/app/oracle/oradata/%U.dbf'; # 如果需要与源文件
名保持一致,则可以为每个 datafile 单独 set newname
set newname for tempfile 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF' to
'/u01/app/oracle/oradata/temp01.dbf';
restore database;
switch datafile all;
switch tempfile all;
}
2. 增量数据恢复
2.1 源端 Windows 1 级备份
RMAN> backup as compressed backupset incremental level 1 database format
'd:\rmanbak\incr_level0_%d_%T_%s_%p' tag 'incr_level_1';
2.2 Linux 端恢复 1 级备份
# 增量恢复,只应用增量备份即可
RMAN> catalog start with '/rman/windowsLinux/';
RMAN> recover database;
2.3 停机窗口 Windows 最后一次 1 级备份
停机窗口前,可以根据需要,每天,每隔几小时定时重复执行上述 2.12.2 步骤,可以大幅度减少最后一次
增量备份以及恢复的时间,缩短停机时间。
# 由于 Linux 无法直接应用 Windows 平台下归档,所以需要在停机窗口干净关闭数据库,启动到 mount
SQL> create table test as select * from dba_users; # 创建测试表,以便最后验证数据是
否完全恢复
RMAN> shutdown immediate;
RMAN> startup mount;
RMAN> backup as compressed backupset incremental level 1 database format
'd:\rmanbak\incr_level0_%d_%T_%s_%p' tag 'incr_level_1';
# 需要在 mount 下重新备份最新的控制文件,以便最后保证最后恢复的数据文件头以及控制文件 SCN 保持一
致。
RMAN> backup current controlfile format 'd:\rmanbak\ctl_level0_%d_%T_%s_%p' tag
'ctl_bak_final';
2.4 Linux 端恢复
# 直接恢复最后一次增量
RMAN> catalog start with '/rman/windowsLinux/';
RMAN> recover database;
# datafile 应用完最后一次增量之后,重新恢复最新控制文件,保证数据文件与控制文件记录 SCN 保持一
致。
# 这步是保证数据库能一致性打开的关键,如果不回复 mount 后备份的控制文件则无法打开数据库。
RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> startup nomount;
RMAN> restore controlfile from '/rman/windowsLinux/CTL_FINAL.BAK';
RMAN> alter database mount;
# 由于新恢复的源端控制文件,清理控制文件中记录的原先备份片信息
RMAN> crosscheck backup;
RMAN> delete noprompt expired backup;
# 由于控制文件新恢复,所以原先 restore 的数据文件路径需要重新 catalog 注册到控制文件,然后
switch
RMAN> catalog start with '/oradata/orcl';
RMAN> switch database to copy;
# open read only,验证测试表
RMAN> alter database open read only;
SQL> desc test;
# 检查 redo log 位置,检查 tempfile 位置,如有需要,修正文件位置重建控制文件
alter database backup controlfile to trace as '/tmp/ctl.trc';
SQL> select member from v$logfile;
SQL> select name from v$tempfile;
# 修正 redo 举例,tempfile 可以直接添加新的 tempfile 然后 drop 旧的即可。
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/temp01.dbf'
size 10G;
SQL> alter database rename file
'/u01/app/oracle/product/11.2.0/dbhome_1/oradata/db2/group_2.log' TO
'+DATA/db2/onlinelog/group_2.275.918765543';
# 验证无误,可以 open 打开数据库
SQL> alter database open resetlogs;
2.5 恢复后收尾工作
Linux 数据库进行全量备份。
@$ORACLE_HOME/rdbms/admin/utlrp.sql
生产系统上还要进行统计信息的收集
--开启计时
of 3
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜