一、完整迁移步骤概览
-
源服务器:备份
-
确认备份目录(如
C:\oracle_backup
)存在,并且 Oracle 账号对该目录有写权限。 -
使用 RMAN 生成完整备份,包括数据库数据、所有归档日志、控制文件和 spfile。
-
将生成的备份文件传输到目标服务器(通过共享文件夹、FTP、U盘等方式)。
-
-
目标服务器:实例创建与环境准备
-
使用
oradim
命令新建 Oracle 实例(例如 ORCL),并设置启动模式为手动。oradim -NEW -SID ORCL -STARTMODE manual -
准备密码文件(可复制源服务器的 PWD 文件或在目标重建)。
-
创建或复制初始化参数文件(pfile 或 spfile),例如
initORCL.ora
,其中包含正确的控制文件路径、内存、兼容性等参数。 -
确保目标服务器上数据文件的存放路径(若与源不一致,则在恢复时需要进行路径映射)。
-
-
目标服务器:数据库还原
-
启动数据库到 NOMOUNT 状态(使用 pfile 启动)。
-
调用 RMAN 脚本还原控制文件,再挂载数据库。
-
注册备份文件目录,恢复数据库、应用归档日志、并以 RESETLOGS 模式打开数据库。
-
如数据文件路径与源不同,则在还原时添加
SET NEWNAME
命令进行映射(可根据实际情况添加)。
-
二、备份脚本文件
请将下面两个文件分别保存到源服务器上(假设 Oracle 实例名为 ORCL,备份目录为 C:\oracle_backup
)。
1. RMAN 备份命令文件(文件名:rman_backup.rman)
RUN { CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘C:\\oracle\_backup\\autobackup\_%F.bkp’; BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT ‘C:\\oracle\_backup\\db\_%U.bkp’ TAG ‘FULL\_DB\_BACKUP’; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG ALL FORMAT ‘C:\\oracle\_backup\\arch\_%U.bkp’ TAG ‘ARCHIVE\_LOG\_BACKUP’ DELETE INPUT; BACKUP CURRENT CONTROLFILE FORMAT ‘C:\\oracle\_backup\\controlfile\_%U.bkp’; BACKUP SPFILE FORMAT ‘C:\\oracle\_backup\\spfile\_%U.bkp’; }
复制
2. Windows 批处理备份脚本(文件名:rman_backup.bat)
@echo off REM 设置实例和备份目录(根据实际情况修改) set ORACLE\_SID=ORCL set BACKUP\_DIR=C:\\oracle\_backup REM 调用 RMAN 执行备份,注意 cmdfile 参数为刚刚创建的 rman\_backup.rman 文件的完整路径 rman target / cmdfile=“C:\\oracle\_backup\\rman\_backup.rman” log="%BACKUP\_DIR%\\rman\_backup.log" echo 完整备份已完成,备份日志存放在 %BACKUP\_DIR%\\rman\_backup.log pause
复制
使用说明:
-
在源服务器上,先将
rman_backup.rman
和rman_backup.bat
文件放入相应目录。 -
确保
%BACKUP_DIR%
目录存在。 -
双击或在命令行中执行
rman_backup.bat
,RMAN 会读取rman_backup.rman
文件中的命令并生成备份。 -
备份完成后,将
C:\oracle_backup
目录下的所有.bkp
文件复制到目标服务器。
三、恢复脚本文件
请在目标服务器上准备好下面两个文件,并确保已创建新的 Oracle 实例、密码文件和初始化参数文件(例如 initORCL.ora)。如果数据文件路径与源不同,还需要在 RMAN 命令中添加 SET NEWNAME
语句。
1. RMAN 还原命令文件(文件名:rman_restore.rman)
STARTUP NOMOUNT PFILE=‘C:\\oracle\\product\\11.2.0\\dbhome\_1\\database\\initORCL.ora’; REM 请将下面的控制文件备份文件名替换为实际文件名 RESTORE CONTROLFILE FROM ‘C:\\oracle\_backup\\controlfile\_ABC123.bkp’; ALTER DATABASE MOUNT; CATALOG START WITH ‘C:\\oracle\_backup’; REM 如目标服务器数据文件存放路径与源服务器相同,可直接还原数据库 REM 若不同,请在此处添加 SET NEWNAME 命令进行映射 RESTORE DATABASE; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS;
复制
注意:
请务必将
RESTORE CONTROLFILE FROM 'C:\oracle_backup\controlfile_ABC123.bkp';
中的文件名修改为你实际生成的控制文件备份名。如果数据文件路径不一致,可以在
RESTORE DATABASE;
前加入类似如下语句:rman
复制
RUN { SET NEWNAME FOR DATAFILE 1 TO 'D:\oradata\ORCL\system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO 'D:\oradata\ORCL\sysaux01.dbf'; ... RESTORE DATABASE; SWITCH DATAFILE ALL; RECOVER DATABASE; }
2. Windows 批处理恢复脚本(文件名:rman_restore.bat)
@echo off REM 设置实例和备份目录(根据实际情况修改) set ORACLE\_SID=ORCL set BACKUP\_DIR=C:\\oracle\_backup REM 调用 RMAN 执行还原,cmdfile 参数为刚创建的 rman\_restore.rman 文件的完整路径 rman target / cmdfile=“C:\\oracle\_backup\\rman\_restore.rman” log="%BACKUP\_DIR%\\rman\_restore.log" echo 数据库还原已完成,恢复日志存放在 %BACKUP\_DIR%\\rman\_restore.log pause
复制
使用说明:
-
在目标服务器上,将
rman_restore.rman
和rman_restore.bat
文件放入合适的目录(这里假设与备份目录一致,也可根据实际情况调整)。 -
确保初始化参数文件(initORCL.ora)和密码文件已就绪。
-
双击或在命令行中执行
rman_restore.bat
,RMAN 将读取rman_restore.rman
文件中的命令,完成数据库还原。 -
还原完成后,查看
%BACKUP_DIR%\rman_restore.log
日志确认操作成功。
四、总结
-
备份阶段(源服务器):
使用rman_backup.rman
记录完整备份命令,调用rman_backup.bat
执行备份,生成数据、归档日志、控制文件、spfile 的备份文件。 -
传输阶段:
将备份目录下的所有.bkp
文件复制到目标服务器(保持目录一致或记录好备份路径)。 -
恢复阶段(目标服务器):
在目标服务器上先用oradim
创建新实例、准备好密码文件与初始化参数文件;然后利用rman_restore.rman
文件的还原命令,调用rman_restore.bat
完成数据库还原。