章
目
录
最近在做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自带的expdp
和impdp
指令进行数据导入导出操作好像oracle10g以后才有的,具体如下:
1)前提
expdp
和impdp
指令只能在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步:导出用户对象
首先根据导出用户对象,这里包括表、序列和视图,触发器等等,我们选中用户,就会出现该用户下的所有表、序列等,然后设置保存路径即可(如果你想部分导出,自行选中即可)
1)最好去掉包括所有者前面的钩,不然导出的sql代码前面都会有所有者名称
2)这里的表导出是不包含数据的,只有对应的表结构及索引等
然后,点击导出即可。这个过程因为不会导出具体表记录,所以很快。
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数据库导入导出的几种方式,导入导出期间就是要细心和耐心,不能着急。