oracle数据库导入导出的几种方式(exp/expdp/plsql)

Java技术 潘老师 2年前 (2022-06-07) 2302 ℃ (0) 扫码查看

最近在做oracle数据的备份操作,需要将oracle库的数据进行全量备份,一般有以下几种方式,下面我们来一起看一下

注意事项:
对于导入,要先准备好用有权限的账户往哪个表空间中去导入,而且两个表空间名称最好保持一致,否则可能出现表空间不一致情况(plsql方式出现过该情况,其他未知),另外编码尽量保持一致,否则中文可能出现乱码。

第1种:exp/imp 传统方式

1)前提

需要本地有oracle client具备exp/imp工具才行

2)使用方式

使用EXP工具可以使用第三方工具PL/SQL DEVELOPER进行导出,也可以直接通过DOS命令行窗口直接进行导出。这里我们使用命令方式。

3)exp支持4种导出模式

exp支持4种导出模式:
1.Full: 只有拥有EXP_FULL_DATABASE角色的用户才可以导出整个数据库,使用FULL参数指定此模式。
2.Tablespace: 导出表空间集,使用TRANSPORT_TABLESPACE参数指定此模式。
3.User:导出属于用户的对象,使用OWNER参数指定此模式
4.Table: 导出指定的表和分区表。使用TABLES参数指定此模式
exp导出时不会导出有延迟段创建特性且没有段创建的对象。除了tablespace mode,可用使用conventional path Export 或者direct path Export 以任何模式导出

4)导出操作命令

如果你是全库导出,直接看方式5即可。

a)方式1:使用如下指令,按照提示步骤操作导出

#指令格式
exp username/password
#举例
exp student/123456

使用用户名和密码登录,然后按照工具提示,导出对应的表结构数据。

b)方式2:EXP导出表数据

#格式
exp username/password@SERVICE_NAME file=导出文件保存路径及名称 tables= 导出表名 buffer=缓存 log=日志路径
#举例
exp student/123456@orcl file=d:\student.dmp tables= stuinfo buffer=4096 log=d:\student.log

如果带筛选参数条件:

exp student/123456@orcl file=d:\student.dmp tables= stuinfo buffer=4096 log=d:\student.log query="'where sex=1'"
命令解析:
  • 1、file指定数据备份文件的保存地址。
  • 2、tables指定要备份的表结构,可以导出多个表,通过(table1,table2…,tablen)进行选择。
  • 3、buffer指定数据缓存区的大小。
  • 4、log指定进行导出的日志文件的保存地址。
  • 5、query指定要添加的条件,把表中的数据进行过滤导出。

c)方式3:EXP导出用户命令结构

exp student/123456@orcl file=d:\student.dmp owner=(student) buffer=4096 log=d:\student.log

owner 指定要导出的用户的用户名,但是前提条件是登录的用户得具有访问其它用户对象的权限。一般是使用DBA用户进行登录。可以支持多用户导出,使用逗号“,”进行隔开。

d)方式4:EXP导出表空间命令结构

exp student/123456@orcl file=d:\student.dmp tablespaces=(student) buffer=4096 log=d:\student.log

tablespaces指定要导出的表空间,但是前提条件是登录的用户得是DBA用户。可以支持多表空间一起导出,使用逗号“,”进行隔开。

e)方式5:EXP导出数据库命令结构

exp student/123456@orcl file=d:\student.dmp full=y buffer=4096 log=d:\student.log

full=y指的是要导出的是整个数据库,但是前提条件是登录的用户得是DBA用户。

imp导入

#可以查看相关帮助
imp help=y
#这里只介绍导入一个完整数据库,类似如下,其他的自行百度
imp student/123456@orcl file=d:\student.dmp  full=y ignore=y  log=d:\student.log

第2种:expdp/impdp 数据泵方式

通过oracle自带的expdpimpdp指令进行数据导入导出操作好像oracle10g以后才有的,具体如下:

1)前提

expdpimpdp指令只能在oracle数据库服务端进行操作,不能在客户端操作,所以必须要连接在服务端,一般该指令在oracle的安装目录得bin目录下,通常安装oracle时会配置了ORACL_HOME环境变量,那么可以直接使用该指令,如果没有配置,可能需要配置在,如果不配置,即使进入到bin目录下调用也会报错。

2)expdp导出dmp文件步骤

a)新建逻辑目录
最好以system等管理员创建逻辑目录,Oracle不会自动创建实际的物理目录,比如“D:\oracleData”(务必手动创建此目录),仅仅是进行定义逻辑路径dump_dir;建议使用plsql、navicat等oracle操作工具来操作,指令如下:

#格式
create directory mydata as '逻辑目录路径'; 
#例如: 
create directory mydata as 'D:\oracleData';

b)查看逻辑目录是否创建成功

select * from dba_directories

c)用expdp导出数据,这里只演示全库导出
格式:expdp 用户名/密码@ip地址/实例 [属性]
ip地址不写默认就是本地
举例:

#包含所有用户的表、视图、索引等
expdp student/123456@127.0.0.1/orcl directory=mydata dumpfile=student.dmp full=y  logfile=student.log;
#指定用户的表、视图、索引等
expdp student/123456@127.0.0.1/orcl directory=mydata schemas=student dumpfile=student.dmp logfile=student.log;

导出完成后,逻辑目录会生成了一个 dmp文件;

impdp 数据导入

这里也只演示全库导入的举例指令

impdb student/123456@orcl directory=mydata dumpfile=student.dmp full=y logfile=student.log;

第3种:plsql工具

使用plsq工具,支持使用exp的方式导出dmp文件,也支持sql插入方式导出sql文件,还有一种就是支持plsq自己的pde文件格式导出,现在下面针对某个表空间进行全库导出的操作,里面涉及到表、序列、视图、存储过程、触发器、自定义方法等等,我们来看下操作步骤。主操操作都在工具–>导出用户对象/导出表/导入表中,如下图:
plsql导出导入oracle工具

1、第1步:导出用户对象

首先根据导出用户对象,这里包括表、序列和视图,触发器等等,我们选中用户,就会出现该用户下的所有表、序列等,然后设置保存路径即可(如果你想部分导出,自行选中即可)

注意:
1)最好去掉包括所有者前面的钩,不然导出的sql代码前面都会有所有者名称
2)这里的表导出是不包含数据的,只有对应的表结构及索引等

然后,点击导出即可。这个过程因为不会导出具体表记录,所以很快。
plsql导出用户对象

2、第2步:导出表数据

接下来我们导出表数据,这里有3种方式,一种是oracle导出,一种sql插入,一种是plsql自己的pde文件导出,oracle导出依赖本地的coracle client中的exp方式,需要指定exp文件,这里就不介绍了,我们这里只演示第3中,plsql自带的方式。

我们点击工具–>导出表,这里面只会显示表,选择plsq方式,设置导出文件路径及名称,具体如下:
plsql导出pde
然后点击导出,如果表数据较多,导出会非常慢,需要耐心等待。

提示:如果存在个别表数据量比较大,可最后导数据量较大的几张表,比如盘潘老师在导出时,就碰到一个非常大的表,有700万数据,导了一夜也没完成,也可能是我挂VPN的原因,但速度肯定不快,这里有个小技巧,就是先把数据量小的表整合到一起导出,然后大表单独导出,要知道,导出表时可以开多个窗口并发导出的,这样可以将先导出的数据进行导入。

第3步:导入表

最后我们需要导入表,主要操作分两步:

1)导入我们第一步导出的用户对象
打开工具–>导入表选择sql插入,选中第一步导出的用户对sql文件,进行导入,这个过程也很快,主要就是实现表结构、序列、视图等等的创建。

2)导入pde数据
接下来,我们要导入打开工具–>导入表选择plsql/Developer,不要选中创建表,因为我们导入用户对象已经创建了,删除记录勾选上是针对如果表中有数据会清空后再插入,下面的几个禁用根据自己的需求是否勾选吧,最后选择第2步导出的pde文件,进行导入操作。
plsql导入pde文件

总结

oracle数据库导入导出的几种方式,导入导出期间就是要细心和耐心,不能着急。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/5112.html
喜欢 (1)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】