数据库转移——导入导出、备份还原
本帖最后由 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中所有的表)