关于exp/imp的总结学习(r4笔记第26天)
关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本。在后续章节再做一个总结。 exp/imp的使用相对比较简单,通常用做在不同的数据库或者环境之间转移数据,即使数据库位于不同的平台,也可以通过统一的接口来做数据的导入导出工作。 使用方法可以通过exp -help,imp -help来得到一个简单的帮助说明。
USERID must be the first parameter on the command line.Keyword Description (Default) Keyword Description (Default)--------------------------------------------------------------------------USERID username/password FULL export entire file (N)BUFFER size of data buffer OWNER list of owner usernamesFILE output files (EXPDAT.DMP) TABLES list of table namesCOMPRESS import into one extent (Y) RECORDLENGTH length of IO recordGRANTS export grants (Y) INCTYPE incremental export typeINDEXES export indexes (Y) RECORD track incr. export (Y)DIRECT direct path (N) TRIGGERS export triggers (Y)LOG log file of screen output STATISTICS analyze objects (ESTIMATE)ROWS export data rows (Y) PARFILE parameter filenameCONSISTENT cross-table consistency(N) CONSTRAINTS export constraints (Y)OBJECT_CONSISTENT transaction set to read only during object export (N)FEEDBACK display progress every x rows (0)FILESIZE maximum size of each dump fileFLASHBACK_SCN SCN used to set session snapshot back toFLASHBACK_TIME time used to get the SCN closest to the specified timeQUERY select clause used to export a subset of a tableRESUMABLE suspend when a space related error is encountered(N)RESUMABLE_NAME text string used to identify resumable statementRESUMABLE_TIMEOUT wait time for RESUMABLE TTS_FULL_CHECK perform full or partial dependency check for TTSVOLSIZE number of bytes to write to each tape volumeTABLESPACES list of tablespaces to exportTRANSPORT_TABLESPACE export transportable tablespace metadata (N)TEMPLATE template name which invokes iAS mode export |
USERID must be the first parameter on the command line.Keyword Description (Default) Keyword Description (Default)--------------------------------------------------------------------------USERID username/password FULL import entire file (N)BUFFER size of data buffer FROMUSER list of owner usernamesFILE input files (EXPDAT.DMP) TOUSER list of usernamesSHOW just list file contents (N) TABLES list of table namesIGNORE ignore create errors (N) RECORDLENGTH length of IO recordGRANTS import grants (Y) INCTYPE incremental import typeINDEXES import indexes (Y) COMMIT commit array insert (N)ROWS import data rows (Y) PARFILE parameter filenameLOG log file of screen output CONSTRAINTS import constraints (Y)DESTROY overwrite tablespace data file (N)INDEXFILE write table/index info to specified fileSKIP_UNUSABLE_INDEXES skip maintenance of unusable indexes (N)FEEDBACK display progress every x rows(0)TOID_NOVALIDATE skip validation of specified type ids FILESIZE maximum size of each dump fileSTATISTICS import precomputed statistics (always)RESUMABLE suspend when a space related error is encountered(N)RESUMABLE_NAME text string used to identify resumable statementRESUMABLE_TIMEOUT wait time for RESUMABLE COMPILE compile procedures, packages, and functions (Y)STREAMS_CONFIGURATION import streams general metadata (Y)STREAMS_INSTANTIATION import streams instantiation metadata (N)DATA_ONLY import only data (N)VOLSIZE number of bytes in file on each volume of a file on tapeThe following keywords only apply to transportable tablespacesTRANSPORT_TABLESPACE import transportable tablespace metadata (N)TABLESPACES tablespaces to be transported into databaseDATAFILES datafiles to be transported into databaseTTS_OWNERS users that own data in the transportable tablespace set |
---|
导出模式有四种,数据库,表空间,用户,表级四个级别。 对于数据库级的导入导出,需要拥有exp_full_database权限,一般这个操作也是通过dba来执行,但是使用的场景相对比较少。 一个简单例子如下: exp n1/n1 file=db_backup.dmp buffer=9102000 log=db_backup.log full=Y 至于导入,就不能直接使用全库导入了,一般都按照要去来看哪些数据缺失了,针对性的补充导入。 对于表空间的导入导出,这个功能和表空间传输的特性是相关联的,如果要使用表空间传输,需要用到,transport_tablespaces,tablespace这两个参数而且需要使用sys来做这个操作。 一个简单的例子如下 导出
exp 'sys/oracle@PROD as sysdba' file=hr_PROD.dmp transport_tablespace=y tablespaces=tbs4
导入:
imp 'sys/oracle123@repos as sysdba' file=hr_PROD.dmp transport_tablespace=y tablespaces=tbs4 datafiles=/u01/app/db/oradata/repos/tbs04.dbf
对于用户级的导入导出,可能使用要频繁一些。
导出的简单示例,导出appc下的所有信息,导出dump为a.dmp
exp n1/n1 file=a.dmp owner=appc
导入的时候,导入到work账户中
imp n1/n1 file=a.dmp fromuser=appc touser=work
最后就是表级的导入导出,使用频率最为频繁。
最简单的一个例子就是
exp n1/n1 file=a.dmp tables=TEST
imp appc/appc file=a.dmp tables=TEST
其实我们来做些更多的使用补充。
-->使用parfile来完成复杂的导入导出
这个功能可能在做一些动态的数据导入导出的时候尤为有用,可以只关注于parfile的部分,比如我们导出appc下的表test1,test2,test3
就可以定义parfile appc.parfile,内容为
tables=test1,test2,test3
导入导出命令类似
exp appc/appc file=a.dmp parfile=appc.parfile logfile=appc_exp.log
导入命令类似
imp appc/appc file=a.dmp parfile=appc.parfile logfile=appc_exp.log
如果要指定导出几十个,上百个表,使用parfile就能避免命令的繁琐。
-->使用query来做细粒度的导入导出
SQL> select object_id from test;
OBJECT_ID
----------
20
46
如果我只想导出object_id为20的数据,就可以使用query来进行逻辑层面的导出。
[ora11g@rac1 ora11g]$ exp n1/n1 file=a.dmp tables=test query='where object_id=20'
About to export specified tables via Conventional Path ...
. . exporting table TEST 1 rows exported
Export terminated successfully without warnings.
如果要实现复杂的逻辑导出,也未尝不可。
-->生成数据脚本
可能对于生成ddl脚本的功能大家并不在意。但是在特定的场景中也是很实用的。
比如我们导出表test,t的创建脚本。
[ora11g@rac1 ora11g]$ exp n1/n1 file=a.dmp tables=test,t rows=n
Export: Release 11.2.0.3.0 - Production on Sun Jan 25 06:44:11 2015
Note: table data (rows) will not be exported
About to export specified tables via Conventional Path ...
. . exporting table TEST
. . exporting table T
Export terminated successfully without warnings.
然后使用imp来生成ddl脚本,这个过程不是在做实际的导入,只是在生成脚本。
[ora11g@rac1 ora11g]$ imp n1/n1 file=a.dmp indexfile=a.log tables=test,t
Import: Release 11.2.0.3.0 - Production on Sun Jan 25 06:45:04 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Export file created by EXPORT:V11.02.00 via conventional path
import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
Import terminated successfully without warnings.
[ora11g@rac1 ora11g]$ ls -lrt
total 28
-rw-r--r-- 1 ora11g dba 24576 Jan 25 06:44 a.dmp
-rw-r--r-- 1 ora11g dba 1610 Jan 25 06:45 a.log
生成的脚本如下,可能还需要进一步处理,但是相对来说也算比较清晰了。
[ora11g@rac1 ora11g]$ less a.log
REM CREATE TABLE "N1"."TEST" ("OWNER" VARCHAR2(30) NOT NULL ENABLE,
REM "OBJECT_NAME" VARCHAR2(30) NOT NULL ENABLE, "SUBOBJECT_NAME"
REM VARCHAR2(30), "OBJECT_ID" NUMBER NOT NULL ENABLE, "DATA_OBJECT_ID"
REM NUMBER, "OBJECT_TYPE" VARCHAR2(19), "CREATED" DATE NOT NULL ENABLE,
REM "LAST_DDL_TIME" DATE NOT NULL ENABLE, "TIMESTAMP" VARCHAR2(19),
REM "STATUS" VARCHAR2(7), "TEMPORARY" VARCHAR2(1), "GENERATED"
REM VARCHAR2(1), "SECONDARY" VARCHAR2(1), "NAMESPACE" NUMBER NOT NULL
REM ENABLE, "EDITION_NAME" VARCHAR2(30)) PCTFREE 10 PCTUSED 40 INITRANS 1
REM MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1
REM FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE
REM "POOL_DATA" LOGGING NOCOMPRESS ;
REM CREATE TABLE "N1"."T" ("OWNER" VARCHAR2(30), "OBJECT_NAME"
REM VARCHAR2(128), "SUBOBJECT_NAME" VARCHAR2(30), "OBJECT_ID" NUMBER,
REM "DATA_OBJECT_ID" NUMBER, "OBJECT_TYPE" VARCHAR2(19), "CREATED" DATE,
REM "LAST_DDL_TIME" DATE, "TIMESTAMP" VARCHAR2(19), "STATUS" VARCHAR2(7),
REM "TEMPORARY" VARCHAR2(1), "GENERATED" VARCHAR2(1), "SECONDARY"
REM VARCHAR2(1), "NAMESPACE" NUMBER, "EDITION_NAME" VARCHAR2(30)) PCTFREE
REM 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 2097152 NEXT
REM 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
REM DEFAULT) TABLESPACE "POOL_DATA" LOGGING NOCOMPRESS ;
CONNECT N1;
CREATE UNIQUE INDEX "N1"."IND_T" ON "T" ("OBJECT_ID" ) PCTFREE 10 INITRANS
2 MAXTRANS 255 STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 FREELISTS
1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "POOL_DATA" LOGGING ;
-->能够提升性能的参数 在导入导出的过程中,为了提高性能不妨考虑以下几个参数 grants=n --一般来说数据的导入导出,是不需要这些权限信息的,我们需要的只是数据。 statistics=none --统计信息很可能不需要,多个环境之间的数据量不同,尤其是大的分区表,如果导入统计信息还是很耗时的。可以酌情使用 constraints=n --在数据导入的过程中,很可能不需要这个选项,大多数情况下,不需要我们来改变目标环境的结构 indexes=n --这个选项一般也是不需要的,很可能目标环境已经有对应的索引了。 buffer=9102000 这个参数很重要,对于exp/imp来说,根据自己的条件来设定,我一般设置为9M,基本都够用了。
- 垂直属性
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(二)RESTful API实战笔记(接口设计及Java后端实现)
- 13(02)总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- Mybatis-Generator生成Mapper文件中<if test="criteria.valid">的问题解答
- Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程
- 负margin的原理以及应用
- 关于exp/imp的总结学习(r4笔记第26天)
- 除了写烂的手写数据分类,你会不会做自定义图像数据集的识别?!
- shell脚本中字符串的常见操作及"command not found"报错处理(附源码)
- 绝对定位下的盒模型
- 运行shell脚本时报错"[[ : not found"解决方法
- 关于表联结方法(二) (r4笔记第23天)
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(一)设计一套好的RESTful API
- XSS分析及预防
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决laravel 表单提交-POST 异常的问题
- laravel5.0在linux下解决.htaccess无效和去除index.php的问题
- laravel返回统一格式错误码问题
- 使用 PHP Masked Package 屏蔽敏感数据的实现方法
- PHP简单实现图片格式转换(jpg转png,gif转png等)
- 在thinkphp5.0路径中实现去除index.php的方式
- Laravel5.5 手动分页和自定义分页样式的简单实现
- laravel自定义分页的实现案例offset()和limit()
- Laravel6.0.4中将添加计划任务事件的方法步骤
- Laravel 不同生产环境服务器的判断实践
- 解决thinkPHP 5 nginx 部署时,只跳转首页的问题
- Laravel 类和接口注入相关的代码
- laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
- laravel 如何实现引入自己的函数或类库
- PHP实现15位身份证号转18位的方法分析