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

第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文件格式导出,现在下面针对某个表空间进行全库导出的操作,里面涉及到表、序列、视图、存储过程、触发器、自定义方法等等,我们来看下操作步骤。主操操作都在工具–>导出用户对象/导出表/导入表中,

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

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

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

2、第2步:导出表数据

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

我们点击工具–>导出表,这里面只会显示表,选择plsq方式,设置导出文件路径及名称,具体如下:

然后点击导出,如果表数据较多,导出会非常慢,需要耐心等待。

第3步:导入表

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

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

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

总结

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