【Oracle系列】- Oracle数据迁移

【Oracle系列】- Oracle数据迁移

一、概述

最近在做公司软件系统盘点时,发现公司MES数据库服务器磁盘已满,剩余空间非常小,为了减少公司EMS停机时长,执行Oracle数据迁移工作,记录一下执行的过程。

数据迁移的一般步骤 对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

二、数据迁移方案

设计数据迁移方案 设计数据迁移方案主要包括以下几个方面工作:

  1. 研究与数据迁移相关的资料
  2. 评估和选择数据迁移的软硬件平台
  3. 选择数据迁移方法
  4. 选择数据备份和恢复策略
  5. 设计数据迁移和测试方案

三、模拟迁移方案

根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。模拟迁移方案能最小程度减少迁移过程中的损失。

四、迁移步骤

  • 测试数据模拟迁移:根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。
  • 准备实施数据迁移:数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。
  • 正式实施数据迁移:按照确定的数据迁移方案,正式实施数据迁移。
  • 测试数据迁移效果:按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。
  • 移植系统应用软件:将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。
  • 正式运行应用系统:在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。

五、迁移方案及其实施细则

5.1 exp/imp逻辑备份与恢复

是最常用最简单的方法,一般是基于应用的owner级做导出导入。

操作方法

  1. 在新库建立好owner和表空间,停老数据库的应用

  2. 老库执行

    exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000
    
  3. 导入dmp文件到新库,在新库执行如下命令

    imp user/pwdfromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.
    

优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

5.2 Storage存储迁移

Storage存储迁移这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。

操作方法

  1. 找到原库pfile、tnsnames.ora,listener.ora,密码文件,并拷贝到新的环境中上;
  2. 将存储切至新机,或者用文件拷贝或dd的方式复制数据文件;
  3. 启动数据库

Storage存储迁移优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba只需配合即可,停机时间为停库、切存储、起库的时间;缺点是要求新老库都是同一平台,是相同的数据库版本。

5.3 利用data guard迁移

DataGuard是Oracle的一种高可用性数据库方案,主要用于数据容灾和读写分离。

Data Guard常用数据库语句

--启停数据库
shutdown immediate;
startup mount;
alter database open;
 
--查询数据库角色和保护模式
select database_role,switchover_status from v$database;
--切换备库为主库(切换后,主库为mount状态)
--TO PRIMARY
alter database commit to switchover to primary; 
--SESSIONS ACTIVE
alter database commit to switchover to primary with session shutdown; 
--切换主库为备库(切换后,备库为shutdown状态)
--TO STANDBY
alter database commit to switchover to physical standby;
--SESSIONS ACTIVE
alter database commit to switchover to physical standby with session shutdown;
 
--查询数据库打开模式
select open_mode from v$database;
--开启数据同步(mount模式执行READ ONLY,open模式执行READ ONLY WITH APPLY)
alter database recover managed standby database using current logfile disconnect from session;
--关闭数据同步(必须先关闭,才可以执行alter database open打开数据库)
alter database recover managed standby database cancel;
--主库异常无法恢复时,异常切换时备库需执行下列命令
alter database recover managed standby database finish;
alter database recover managed standby database finish force;
 
--查询数据库保护模式
select protection_mode from v$database;
--更改数据库保护模式
alter database set standby database to maximize protection; --最大保护
alter database set standby database to maximize performance; --最高性能
alter database set standby database to maximize availability; --最高可用

主库切换为备库sql语句

--1.查询主库状态为TO STANDBY或SESSIONS ACTIVE
select database_role,switchover_status from v$database;
--2.切换主库角色为备库
alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby with session shutdown;
--3.重启数据库到open模式
startup
--4.开启redo同步
alter database recover managed standby database using current logfile disconnect from session;
--5.查询数据库状态已经是TO PRIMARY(主库成功切换为备库)
select database_role,switchover_status from v$database;
--6.查询数据库打开模式为READ ONLY WITH APPLY(读写分离,redo实时同步)
select open_mode from v$database;

备库切换为主库sql语句

--1.查询备库状态为TO PRIMARY或SESSIONS ACTIVE
select database_role,switchover_status from v$database;
--2.切换备库角色为主库
alter database commit to switchover to primary;
alter database commit to switchover to primary with session shutdown;
--3.打开数据库(切换完后为mount状态)
alter database open;
--4.查询数据库状态为TO STANDBY(表示切换完成)
select database_role,switchover_status from v$database;
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goyeer(工蚁)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值