日期:2014-05-17  浏览次数:21080 次

数据库转移——导入导出、备份还原
本帖最后由 abc6339015 于 2013-08-21 09:57:21 编辑
1.前文


所谓数据库的转移,说白了就是把开发使用的数据库服务器上做好的表、数据、存储过程等复制出来,再导入到另一个服务器中。

一般来说方法有三种:

一是利用数据库自己的带参命令exp和imp进行,这种方式古老又低效,但因为其传统又官方,是老DBA彰显水平的必备手段;

二是利用第三方工具借助于数据库本身提供的功能(如Oracle的exp.exe以及imp.exe;SQL Server的Integration Service和“备份/还原”功能)进行图形化界面操作,本质上与第一种方法是一样的,但因为其操作简单方便,莫名其妙的常常被老DBA鄙视;

三是利用第三方工具为用户独创的“脚本输出/脚本执行”功能,也就是将数据库对象的CREATE文输出成SQL文件,然后利用这个SQL文件就可以随时再次创建数据库。这在PL/SQL和Object Browser中都有提供。

本文将以Object Browser为图例对后两种方法进行讲解,因为其中文界面较为简单易懂。最后再简单的交流一下关于DataPump的问题。 

那么首先,我们来介绍一下Oracle的导入导出功能。说白了就是数据库对象以二进制文件(.DMP)的形式输出,之后再解析并输入到另一个数据库环境中。


2.Oracle导出


1.从菜单进入导出界面 



 2.在[选择]页中,可以指定导出的对象范围。 


全数据库: 数据库上所有用户的所有对象全部导出 
用户指定: 指定用户下的所有对象 
表指定: 只导出指定的表,可指定多张表 
表空间指定: 指定表空间下的所有对象全部导出  

在文件名那一栏里输入要保存的DMP文件的全路径。也可通过浏览选择。目标对象里显示要导出的对象,可选对象里是通过你指定的导出方法列出所有可选的对象。

3.在[选项]里可以设置更多高级选项,这与oracle自身的exp所需要的参数几乎是一样的。 



[连接用户ID]可以指定导出时使用的用户。可以指定为当前连接的用户,也可以指定其他用户。指定其他用户的话需要输入那个用户的用户ID和密码。

[Buffer长度]和[记录长度]可设置buffer字节数和record的字节数。

一般可以使用默认的,但如果有些表里有非常多的字段,或者存储了非常大的数据(比如LOB型等),为了避免出错,需要把它调大一些。

[同时导出的数据库对象]可以指定是否同时导出权限,索引,数据,制约。数据库的转移如果只转移表结构而不包含其中数据的话,就将[数据]取消选中。

[增量导出的种类]如下:

        无:导出所有对象
        完全:导出所有对象
        增量:只导出上一次执行导出以来发生变化的对象
        累计:只导出上一次执行导出以来发生变化的对象,但是在DMP中包含了压缩过的上一次导出的DMP。


[对象的分析]可以设置在导入时生成的统计信息

        无:不统计
        估计:只统计一部分的样例。
        完全:统计


[NLS_LANG]里可以设置导出DMP要使用的字符集编码,不添即为数据库默认。

[扩展空间压缩]选中时,在扩展空间里存储的数据被整合在导出的DMP中

[表的制约]选中时,将会在导出过程中检查数据的一致性

[后台运行]选中时,导出过程将不在界面中体现。

[输出记录]可以指定导出结果的日志保存路径

[使用工具]就是Oracle客户端自带的exp.exe
4,点击[执行]按钮。就执行导出,在[结果日志]里会显示执行的结果。 



3.Oracle导入


导出成功之后,就会在指定目录下生成一个二进制的.DMP文件,数据库转移就是利用此文件导入到新的数据库中。首先,要连接到新的数据库中。
1.从菜单进入导入界面 



 2.在[选择]页中设置[导入方法] 


全数据库: 将DMP以整个数据库的形式导入 
用户指定: 将DMP文件中指定用户导入到当前连接数据库的指定用户中(此时点击右侧的[一览]按钮,将列出DMP中所有的用户) 
表指定: 只导入DMP文件中的指定的表(此时点击右侧的[一览]按钮,将列出DMP中所有的表)