在很多时候用着oracle数据库的用户为了增加业务功能模块不能在生产环境上直接进行,需要搭建测试环境,这就会涉及到oracle数据库的异机迁移,对于迁移来说可以采用逻辑迁移和物理迁移两种方式,为了测试的准确性一般测试环境和生产环境都是相同的操作系统与配置,此篇文章描述的是利用rman进行异机oracle数据库迁移。

1、业务环境

操作系统:Redhat Linux 7.3

数据库版本:Oracle 19C

2、查看源端备份

2.1、通过root用户登录到系统,然后su – oracle切换到oralce用户,oracle单机基本上用oracle用户操作,查看crontab任务

su – oracle

crontab -l

Linux环境下Oracle单机Rman异机恢复_数据迁移

2.2、然后在oracle用户模式下通过rman target / 连接到rman操作界面

rman target /

Linux环境下Oracle单机Rman异机恢复_数据库_02

2.3、查看数据库的备份详细信息

RMAN> list backup of database;

Linux环境下Oracle单机Rman异机恢复_数据库_03

2.4、查看数据库备份汇总

RMAN> list backup of database summary;

Linux环境下Oracle单机Rman异机恢复_rman异机恢复_04

2.5、查看控制文件备份

RMAN> list backup of controlfile;

Linux环境下Oracle单机Rman异机恢复_数据库_05

2.6、查看归档日志备份

RMAN> list backup of archivelog all;

Linux环境下Oracle单机Rman异机恢复_数据库_06

3、拷贝备份文件到异机

3.1、进入到备份路径,查看备份文件

[oracle@db ~]$ cd /backup/xiaozc/

[oracle@db xiaozc]$ ll -rtlh

Linux环境下Oracle单机Rman异机恢复_项目_07

3.2、备份文件拷贝(根据实际路径操作直至拷贝完成)

[oracle@db xiaozc]$ scp arch* oracle@xiaozc02:/bak/data --拷贝归档

[oracle@db xiaozc]$ scp ctl* oracle@xiaozc02:/bak/data --拷贝控制文件

[oracle@db xiaozc]$ scp full* oracle@xiaozc02:/bak/data --拷贝数据文件

4、数据rman恢复

4.1、生成pfile文件,登录源库创建参数文件

[oracle@db ~]$ sqlplus / as sysdba

SQL> create pfile='/home/oracle/p1.pfile' from spfile;

File created.

Linux环境下Oracle单机Rman异机恢复_数据库_08

4.2、将参数文件拷贝至异机

[oracle@db ~]$ scp p1.pfile oracle@xiaozc02:/home/oracle

Linux环境下Oracle单机Rman异机恢复_数据库_09

4.3、启动异机数据库

由于源端和异机的配置一样,直接使用pfile文件将数据库启动到nomount状态,若配置不一样,需要对参数文件进行修改。

[oracle@xiaozc02 ~]$ sqlplus / as sysdba

SQL> shutdown abort;  

ORACLE instance shut down.

SQL> startup nomount pfile='/home/oracle/p1.pfile';

Linux环境下Oracle单机Rman异机恢复_项目_10

4.4、通过pfile生成spfile参数文件

SQL> create spfile from pfile='/home/oracle/p1.pfile';

Linux环境下Oracle单机Rman异机恢复_项目_11

4.5、通过更改的spfile文件启动数据库到nomount状态

Linux环境下Oracle单机Rman异机恢复_rman异机恢复_12

4.6、恢复控制文件

[oracle@xiaozc02 data]$ rman target /

connected to target database: xiaozc (not mounted)

RMAN> restore controlfile from '/bak/data/ctl_XIAOZC_240_1.ctl';**此处为控制文件的最新备份

Linux环境下Oracle单机Rman异机恢复_rman异机恢复_13

4.7、将数据库启动到mount状态

Linux环境下Oracle单机Rman异机恢复_项目_14

4.8、注册备份文件到rman catalog库

RMAN > catalog start with ‘/bak/data’;

Linux环境下Oracle单机Rman异机恢复_数据库_15

4.9、重建数据文件

RMAN > restore database;

Linux环境下Oracle单机Rman异机恢复_项目_16

4.10、恢复数据文件

RMAN > recover database;

4.11、开启测试库

RMAN> alter database open resetlogs;

Statement processed

5、测试库的状态查看

5.1、查看数据库的打开状态

SQl  > select name,open_mode from v$database;

5.2、查看数据库实例的状态

SQl  > select instance_name,status from v$instance;

5.3、查看数据库归档状态

SQl  > archive log list;

5.4、查看数据库连接会话数

SQl  > select count(*) from v$session;