数据库迁移几种方式

我们常常需要对数据进行迁移,迁移到更加高级的主机上、迁移到远程的机房上、迁移到不同的平台下……

一、exp/imp:

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

操作方法为:在新库建立好owner和表空间,停老库的应用,在老库做exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,传dmp文件到新库,在新库做imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.

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

二、存储迁移:

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

操作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames.ora,listener.ora, 密码文件传到新库的对应位置。将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据 库。

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

三、利用data guard迁移:

用dg我们不仅可以用来做容灾,物理的dg我们还可以作为迁移的方式。

操作方法:可见http://www.oracleblog.cn/study-note/dg-created-by-rman/或者 http://www.oracleblog.cn/study-note/create-dg-by-rman-one-datafile-by-one-datafile/或者其他 相关网文。注意switch over之后,可以将dg拆掉,去掉log_archive_dest_2、FAL_SERVER、FAL_CLIENT 、standby_file_management参数。另外还要注意如果用rman做dg,注意手工添加tempfile。

优缺点:优点是停机时间短,停机时间为switch over的时间。缺点:主机必须双份、存储必须双份 。

四、用rman做迁移:

rman比较适合于跨文件系统的迁移,如同平台下的不同文件系统。

操作方法:

1.停第三方的归档备份,如legato或dp

2.backup数据库:

run {
allocate channel t1 type disk;
backup full format '$DIR_BAK/UNDOTBS1_2_%d_%s_%p.bak' datafile 2;
……
release channel t1;
}

3.备份控制文件alter database backup controlfile to '/tmp/mydb.ctl';并到新数据库用rman恢 复:restore controlfile from '/arch/sd168.ctl';

4.restore备份文件:

run {
allocate channel t1 type disk;
restore datafile 2;
releasechannel t1;
}

5.传归档日志,并且对归档进行做recover:recover database until sequence = 归档的序号 thread = 1;

6.对数据库open resetlogs:RMAN>sql 'alter database open resetlogs';

7.alter tablespace temp add tempfile 'XXXXXX' size XXM reuse;

优缺点:优点是可以跨文件系统,停机时间少。缺点是要时刻关注这归档日志,做recover的时候一 个都不能少!

时间: 2024-10-25 05:23:37

数据库迁移几种方式的相关文章

JDBC连接Access数据库的几种方式介绍_JSP编程

接下来总结一下常用的几种连接方式. 例如有如下的Access数据库student,表basic,以及6条记录,现在通过几种方式在Jsp中将他们的数据显示出来.如图所示: 对于几种连接Access数据库的方式,基本上都是基于JDBC-ODBC方式的,当然也有纯JDBC驱动的方式.这里我暂时就不说了.对于这几种方式,除了取得连接之处不同外,其他的代码都是一样的.所以这里先写出取得连接的几种方式,然后再用完整的代码进行显示. 方式一:通过JDBC-ODBC方式桥连直接连接: 1.对于这种方式,首先要建

实现JSP连接MySql数据库的两种方式

js|mysql|数据|数据库 当您面临JSP连接MySQL数据库问题,你首先需要在MySQL数据库里创建一username表,表里面创建两个字符型的字段,字段名分别为:uid,pwd,然后插入几条测试数据. 以下用两种方式来实现JSP连接MySql数据库 第一种方式,用JSP实现: <%@ page contentType="text/html; charset=gb2312" language="java"  import="java.sql.*

asp.net中读取数据库的两种方式

asp.net|数据|数据库 在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式,两者的差异如下: 使用Dataset对象读取数据大致需要以下5个步骤: (1)建立数据库链接,可以选用SQLConnection或者01edbConnection. (2)将查询保存在SQLDataAdapter或者oledbDataAdapter对象中. (3)使用DataAdapter对象的Fill方法将数据填充到DataSet中的DataTable中. (4)为Dat

不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群

Java 连接Access数据库的两种方式_java

java连接MS Access的两种方式: 1.JDBC-ODBC Java连接Access可以使用MS自带的管理工具-->数据源(ODBC)设置建立连接,这样就不需要导入jar.但是,如此一来程序部署的每个机器上都要进行设置不方面.所以现在不会使用啦. 2.JDBC java也可以和连接其他数据库一样连接MS Access,导入数据库相应的jar包,进行连接. 复制代码 代码如下: java Access JDBC jar包:Access_JDBC30.jar 具体连接,参考下面代码: 复制代

数据库注册两种方式的比较

在学习JDBC的时候,通常有两种方式去注册数据库驱动程序(这里采用MySQL数据库),分别为: DriverManager.registerDriver(new Driver()); Class.forName("com.mysql.jdbc.Driver"); 那么这两种方式有什么异同呢?首先我们到DriverManager中去看一下, public static synchronized void registerDriver(java.sql.Driver driver) thr

php将字符串转化成date存入数据库的两种方式_php技巧

第一种方式 复制代码 代码如下: $date= date("Y-m-d",strtotime("2011-12-12")); 第二种方式 复制代码 代码如下: $date = "2011-12-12"; $year=((int)substr($date,0,4));//取得年份 $month=((int)substr($date,5,2));//取得月份 $day=((int)substr($date,8,2));//取得几号 $_date =

SqlServer备份数据库的4种方式介绍_MsSql

1.用sqlserver的维护计划 在这里我就不给截图演示了,这个比较简单,无非就是通过sqlserver自己的维护计划拖拽出2个一个'备份数据库'任务和一个'清除维护'任务. 需要注意的点: 1)有备份任务里边选择备份的库尽量选'所有用户数据库'这项,以免选择了特定数据库备份以后某天添加了新数据库却忘了勾选导致丢备份. 2)选项验证备份集完整性和压缩备份尽量都选上. 3)备份的路径尽量别选磁盘根目录. 2.通过脚本+作业的方式备份数据库(非xp_cmdshell).如果是多个库的话自己写个游标

SqlServer备份数据库的4种方式介绍

1.用sqlserver的维护计划 在这里我就不给截图演示了,这个比较简单,无非就是通过sqlserver自己的维护计划拖拽出2个一个'备份数据库'任务和一个'清除维护'任务. 需要注意的点: 1)有备份任务里边选择备份的库尽量选'所有用户数据库'这项,以免选择了特定数据库备份以后某天添加了新数据库却忘了勾选导致丢备份. 2)选项验证备份集完整性和压缩备份尽量都选上. 3)备份的路径尽量别选磁盘根目录. 2.通过脚本+作业的方式备份数据库(非xp_cmdshell).如果是多个库的话自己写个游标