zoukankan      html  css  js  c++  java
  • Oracle的Export用法

    Oracle 的 Export 命令用于导出数据库信息,既可以导出表结构,也可以导出数据,表空间,或者按用户导出等等。按照通常的说法,该命令主要是用于数据库的迁移或者备份的。下面就介绍一下该命令的部分参数。 

    1. exp命令介绍 
    export操作需要执行的命令是exp。exp导出数据的一个优点就是快,但导出的结果文件均为二进制文件,而且要求不能手动修改。 
    exp在设定执行参数的值的时候,支持的格式为 EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN), 
    例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR) 

    2. 参数说明 
    USERID: 用户名/密码@连接的数据库。该参数必须为 exp 命令的第一个参数。 (如果是本地数据库的话,此处只需指定“用户名/密码”)

    BUFFER: 数据缓冲区大小。该参数指定查询数据库记录时的缓冲区大小,单位为 byte,如果该参数设为0,那么获取数据库记录时每次读取一行。该参数需要配合参数direct=N 来使用。 

    FILE: 输出文件。导出的目标文件名,如果不设定该参数的话,命令会采用默认文件名——EXPDAT.DMP 

    TABLES: 表名列表。需要导出的表名,可以是一个,也可以是多个。单个表名格式为:tables=test_tab, 多个表名格式:tables=(test_tab_1,test_tab_2) 。提示:在linux 、unix 环境下多个表名时用到的括号需要转义,如下tables=(test_tab_1,test_tab_2) 。 

    COMPRESS:  导入到一个区。这个参数是最容易让人误解的了,很容易理解简单压缩的意思。接下来我需要引用一段别人文章中的描述来解释了。 事实上,COMPRESS 是改变STORAGE 参数INITIAL 的值。比如:CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..) 现在数据已经扩展到100 个EXTENT, 如果采用COMPRESS=Y 来EXPORT 数据,则产生的语句时 STORAGE( INITIAL 1000K NEXT 10K) ; 我们可以看到NEXT 值并没有改变,而INITIAL 是所有EXTENT 的总和。所以会出现如下情况,表A 有4 个100M 的EXTENT, 执行DELETE FROM A ,然后再用COMPRESS=Y 导出数据,产生的CREATE TABLE 语句将有400M 的INITIAL EXTENT 。即使这是TABLE 中已经没有数据!!这是的DUMP 文件即使很小,但是在IMPORT 时就会产生一个巨大的TABLE. 另外,也可能会超过DATAFILE 的大小。比如,有4 个50M 的数据文件,其中表A 有15 个10M 的EXTENT, 如果采用COMPRESS=Y 的方式导出数据,将会有INITIAL=150M 那么在重新导入时,不能分配一个150M 的EXTENT ,因为单个EXTENT 不能跨多个文件。 

    RECORDLENGTH: IO记录的长度。和DIRECT=Y配合使用的是RECORDLENGTH参数,它定义了Export I/O缓冲的大小,作用类似于常规路径导出使用的BUFFER 参数。建议设置RECORDLENGTH 参数为最大I/O 缓冲,即65535(64kb) 。 

    INDEXES: 导出索引。导入过程中建立用户定义的索引,特别是表上有多个索引或者数据表特别庞大时,需要耗费大量时间。某些情况下,需要以最快的时间导入数据,而索引允许后建,我们就可以使用 INDEXES=N 只导入数据不创建索引,从而加快导入速度。 

    DIRECT: 直接路径。该参数设定为Y时,oracle 将采用直接读取数据库存储文件的方式获取数据,而不再通过查询数据库的方式,省去了执行 sql 的时间,提高了导出速度。 

    LOG: 屏幕输出的日志文件。 

    ROWS: 导出数据行。默认为Y,导出表中数据。设定N,则只会导出表结构。 

    CONSISTENT: 交叉表的一致性。这个参数是指定在数据导出过程中,是否维持数据库表一致性。默认为N ,如果设定为Y 的话,在导出过程中外部系统同样可以查询数据库相关表,并且获取到一致性的数据,在导出之前更新或者修改的数据不会被外部系统感知。这样也就需要占用数据库的回滚段。如果主机资源紧张,可以将参数设定为N ,这样既可以少占用回滚段资源,更主要的是这样导出速度也会提升。 

    FILESIZE: 每个转储文件的最大大小。单位为bytes, 设定了该参数后,当导出的数据文件超过最大值时,会重新写入到新文件中,以此类推。但是每次写入新文件的时候,命令会转为交互状态,需要用户数据新的文件名。 

    QUERY: 用户导出表的子集的select 子句。在只希望导出某表的一部分符合条件的数据时,这个参数就能派上用场了。整个参数需要用 ” ” 括起来。这个参数通过输入where 条件可以只导出预期的数据。如果是导出针对的是多个表,那么在输入where 条件时需要保证该子句对导出的任何一张表都是有效的。 提示:此处需注意query关键字在windows和linux平台下的处理不一样,下面例子中会提到。

    CONSTRAINTS:  导出约束条件。是否导出表中已有的constraint。 

    GRANTS: 是否导出授权信息。 

    STATISTICS: 分析对象 。指定导出过程中是否统计导出信息。选项包括: NONE , 

    COMPUTE,ESTIMATE。习惯上把它设定为 NONE, 这样可以提高导出速度。 


    3. 举例 
    1) 准备用于测试的表emp_exp_imp_1,emp_exp_imp_2

    SQL> create table emp_exp_imp_1 as select * from emp;

    Table created.

    SQL> create table emp_exp_imp_2 as select * from emp;

    Table created.

    2) exp测试

    把scott用户下emp_exp_imp_1表,emp_exp_imp_2表中empno>7600的记录导出。
    [oracle@toughhou work]$
    exp scott/scott file=/home/oracle/work/emp_exp_imp.dmp buffer=100000 tables=(emp_exp_imp_1,emp_exp_imp_2) compress=N indexes=N direct=N rows=Y grants=Y consistent=N constraints=Y log=/home/oracle/work/emp_exp_imp.log  query="where EMPNO>7600"

    LRM-00112: multiple values not allowed for parameter 'query'

    EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
    EXP-00000: Export terminated unsuccessfully

    导出错误,原因是:query关键字赋值时,Windows平台和Unix/Linux平台处理有差异。此处http://www.anysql.net/oracle/exp_param_query.html有详细说明。

    在Windows下, 如何指定query参数:
    exp ... query='where deptno=10'
    exp ... query='where deptno=''10'''
    exp ... query='where deptno"<"10'

    在Solaris(C shell)下, 如何指定query参数:
    exp ..... query="where col1 < 1000"
    exp ..... query="where col1 < '1000'"

    注意标红地方:Windows平台和Unix/Linux平台处理情况不一样。
    [oracle@toughhou work]$ exp scott/scott file=/home/oracle/work/emp_exp_imp.dmp buffer=100000 tables=(emp_exp_imp_1,emp_exp_imp_2) compress=N indexes=N direct=N rows=Y grants=Y consistent=N constraints=Y log=/home/oracle/work/emp_exp_imp.log  query="where EMPNO > 7600"

    Export: Release 10.2.0.1.0 - Production on Wed Oct 9 00:29:57 2013

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.


    Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Export done in US7ASCII character set and AL16UTF16 NCHAR character set
    server uses WE8ISO8859P1 character set (possible charset conversion)
    Note: indexes on tables will not be exported

    About to export specified tables via Conventional Path ...
    . . exporting table                  EMP_EXP_IMP_1         10 rows exported
    . . exporting table                  EMP_EXP_IMP_2         10 rows exported
    Export terminated successfully without warnings.

    此时可以看到成功导出。

     

  • 相关阅读:
    希望走过的路成为未来的基石
    第三次个人作业--用例图设计
    第二次结对作业
    第一次结对作业
    第二次个人编程作业
    第一次个人编程作业(更新至2020.02.07)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    spring cloud springboot 框架源码 activiti工作流 前后分离 集成代码生成器
    java代码生成器 快速开发平台 二次开发 外包项目利器 springmvc SSM后台框架源码
  • 原文地址:https://www.cnblogs.com/toughhou/p/3778769.html
Copyright © 2011-2022 走看看