`
lzkyo
  • 浏览: 468416 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle导入导出命令详解

阅读更多

ORACLE EXP/IMP 参数详解
2008-01-09 18:16
ORACLE EXP/IMP 参数详解
===========================================================
作者: magic21(http://magic21.itpub.net)
发表于: 2007.09.27 10:46
分类: 日积月累
出处: http://magic21.itpub.net/post/5324/400048
---------------------------------------------------------------
EXP导出选项
关键字
内容

USERID
运行导出命令的帐号的用户名/口令

BUFFEER
用来取数据行的缓冲区的大小

FILE
导出转储文件的名字

EXP导出选项
关键字
内容

USERID
运行导出命令的帐号的用户名/口令

BUFFEER
用来取数据行的缓冲区的大小

FILE
导出转储文件的名字

COMPRESS
导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句

GRANTS
导出时否要导出数据库对象上的授权

INDEXES
是否要导出表上的索引

ROWS
是否应导出行。如它为‘N’,那么在导出文件中仅生成数据库对象的DDL

CONSSTRAINTS
是否导出表旧的约定条件

FULL
如设为‘Y’,那么将执行一个整个数据库导出操作

OWNER
要导出的一系列数据库帐号,然后执行这些帐号的USER导出操作

TABLES
要导出的一系列表;执行这些表的TABLE导出操作

RECORDLENGTH
转储导出文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导出文件

INCTYPE
正在执行的导出操作的类型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)

RECORD
在增量导出类型中的一个标记,标明是否将日志存储到数据字典中日志导出的表中

PARFILE
要传递给导出的参数文件的名字。这个文件将包含所有参数的入口项

ANALYZE
标明是否将移对象的统计信息写入导出转储文件中

CONSISTENT
标明是否保留所有导出对象的读取一致复制

LOG
导出日志将要写入的文件的名字

MLS
标明是否要导出MLS 标号

MLS_LABEL
规定了MLS标号的格式

 


IMP导入选项
关键字
内容

USERID
运行导入命令的帐号的用户名/口令

BUFFEER
用来取数据行的缓冲区的大小

FILE
导入转储文件的名字

SHOW
规定文件内容是否被显示,而不是被执行

EGNORE
标明在执行‘CREATE’命令时,是否忽略遇到的错误。如果正在导入的对象已经存在时,应使用这个参数

FULL
如设为‘Y’,那么将执行一个整个数据库导入操作

FROMUSER
在FULL=N的情况下,才有参数。它是一系列的数据库帐号,其对象应从导出转储文件中读取

TOUSER
一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号

GRANTS
导入时否要导入数据库对象上的授权

INDEXES
是否要导入表上的索引

ROWS
是否应导入行。如它为‘N’,那么在导入文件中执行数据库对象的DDL

TABLES
要导入的一系列表

RECORDLENGTH
转储导入文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导入文件

INCTYPE
正在执行的导入操作的类型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)

PARFILE
要传递给导入的参数文件的名字。这个文件将包含所有参数的入口项

ANALYZE
标明是否将移对象的统计信息写入导入转储文件中

LOG
导入日志将要写入的文件的名字

MLS
标明是否要导入MLS 标号

INDEXFILE
不执行导入动作,只生成建索引的文本
贰:
一. 导出工具 exp
1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin
   exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
  
   它有三种模式:
       a.  用户模式: 导出用户所有对象以及对象中的数据;
       b.  表模式: 导出用户所有表或者指定的表;
       c.  整个数据库: 导出数据库中所有对象。
2. 导出工具exp交互式命令行方式的使用的例子
$exp [email=test/test123@appdb]test/test123@appdb[/email]
Enter array fetch buffer size: 4096 > 回车
Export file: expdat.dmp > m.dmp  生成导出的文件名
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3
Export table data (yes/no): yes > 回车
Compress extents (yes/no): yes > 回车
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified tables via Conventional Path ...
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > cmamenu  要导出的表名
. . exporting table                        CMAMENU       4336 rows exported
Table(T) or Partition(T:P) to be exported: (RETURN to quit) >要导出的表名n
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > 回车
Export terminated successfully without warnings.
3. 导出工具exp非交互式命令行方式的例子
$exp scott/tiger tables=emp,dept file=/directory/scott.dmp grants=y
说明:把scott用户里两个表emp,dept导出到文件/directory/scott.dmp
$exp scott/tiger tables=emp query=\"where job=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp
说明:在exp里面加上导出emp的查询条件job='salesman' and sal<1600
   
(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)
$exp parfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmp filesize=2000M log=/directory2/username_exp.log
参数文件username.par内容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改
     filesize指定生成的二进制备份文件的最大字节数
    
     (可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)
4. 命令参数说明
关键字 说明(默认)
---------------------------------------------------
USERID 用户名/口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句 
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表
二.导入工具 imp
1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin
imp导入工具将EXP形成的二进制系统文件导入到数据库中.
   它有三种模式:
       a.  用户模式: 导出用户所有对象以及对象中的数据;
       b.  表模式: 导出用户所有表或者指定的表;
       c.  整个数据库: 导出数据库中所有对象。
      
   只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入
  
   imp步骤:
   (1) create table  (2) insert data  (3) create index (4) create triggers,constraints
2.导入工具imp交互式命令行方式的例子
$ imp
Import: Release 8.1.6.0.0 - Production on 星期五 12月 7 17:01:08 2001
(c) Copyright 1999 Oracle Corporation.  All rights reserved.
用户名:  test
口令:****
连接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
导入文件: expdat.dmp> /tmp/m.dmp
输入插入缓冲区大小(最小为 8192 ) 30720>
经由常规路径导出由EXPORT:V08.01.06创建的文件
警告: 此对象由 TEST 导出, 而不是当前用户
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
只列出导入文件的内容(yes/no):no>
由于对象已存在, 忽略创建错误(yes/no):no> yes
导入权限(yes/no):yes>
导入表数据(yes/no):yes>
导入整个导出文件(yes/no):no> yes
. 正在将TEST的对象导入到 SCOTT
. . 正在导入表                       "CMAMENU"       4336行被导入
成功终止导入,但出现警告。

3.导入工具imp非交互式命令行方式的例子
$ imp system/manager fromuser=jones tables=(accts)
$ imp system/manager fromuser=scott tables=(emp,dept)
$ imp system/manager fromuser=scott touser=joe tables=emp
$ imp scott/tiger file = expdat.dmp full=y
$ imp scott/tiger file = /mnt1/t1.dmp show=n buffer=2048000 ignore=n commit=y grants=y full=y log=/oracle_backup/log/imp_scott.log
$ imp system/manager parfile=params.dat
params.dat 内容
file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)

4.导入工具imp可能出现的问题
(1) 数据库对象已经存在
一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等; 
数据库对象已经存在, 按缺省的imp参数, 则会导入失败
如果用了参数ignore=y, 会把exp文件内的数据内容导入
如果表有唯一关键字的约束条件, 不合条件将不被导入
如果表没有唯一关键字的约束条件, 将引起记录重复
(2) 数据库对象有主外键约束
      不符合主外键约束时, 数据会导入失败
      解决办法: 先导入主表, 再导入依存表
disable目标导入对象的主外键约束, 导入数据后, 再enable它们
(3)  权限不够
如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限
(4)  导入大表( 大于80M ) 时, 存储分配失败
      默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.
      导入时, 如果不存在连续一个大数据块, 则会导入失败.
      导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.
(5) imp和exp使用的字符集不同
      如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
      导入完成后再改回来.
(6) imp和exp版本不能往上兼容
imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
根据情况我们可以用
$ imp [email=username/password@connect_string]username/password@connect_string[/email]
说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
   定义的本地或者远端数据库的名称
5.命令参数说明
关键字 说明(默认)  
----------------------------------------------
USERID 用户名/口令
FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 (N)
TABLES 表名列表
IGNORE 忽略创建错误 (N)
RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y)
INCTYPE 增量导入类型
INDEXES 导入索引 (Y)
COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y)
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
r />FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户
三. unix下oracle数据库定时备份脚本(按用户备份)
以下命令可以用crontab方式每天夜里2点定时执行,脚本最多分30个文件,每个文件大小最大1G的形式将数据库导出,
如果数据库数据量很大,多于30G,则会导出不成功,此时只需根据数据量大小调整变量num的值即可。该脚本将数据库
导出后用gzip进行压缩,然后保存到系统/data/expfiles,导出之前,会将前一天的备份移到/data/expfiles_bak,
此种备份方式可以保存最近两天的数据备份。
outfile=`date +%Y%m%d_%H%M`
num=30
i=1
files=
if [ !  -d /data/expfiles ]; then
mkdir /data/expfiles
fi
if [ !  -d /data/expfiles_bak ]; then
mkdir /data/expfiles_bak
fi
dfile=`ls -1 /data/expfiles_bak/|awk '{if ( NR < 2 ) {print $1}}'`
prefix=`echo | awk '{print substr("'"${dfile}"'",1,13)}'`
rm -f /data/expfiles_bak/${prefix}*

dfile=`ls -1 /data/expfiles/|awk '{if ( NR < 2 ) {print $1}}'`
prefix=`echo | awk '{print substr("'"${dfile}"'",1,13)}'`
mv /data/expfiles/${prefix}* /data/expfiles_bak

while [ $i  -lt  $num ]
do
files=$files/data/expfiles/${outfile}_$i.dmp,
i=` expr $i + 1 `
done
files=$files/data/expfiles/${outfile}_$i.dmp
#echo $files
exp [email=userid=user/passwd@acct]userid=user/passwd@acct[/email] FILE=$files filesize=1024M grants=N 2>>exp_rpt.log
gzip /data/expfiles/${outfile}*

分享到:
评论

相关推荐

    oracle 导入导出命令详解

    oracle数据库导入导出命令imp exp impdp expdp的使用详解,很有用!

    oracle导入导出命令

    ### Oracle导入导出命令详解 Oracle数据库作为一款广泛使用的数据库管理系统,在数据迁移、备份与恢复等方面具有非常重要的作用。在日常运维工作中,我们经常会用到Oracle的导入(Import)和导出(Export)命令来...

    Oracle导入导出命令

    ### Oracle导入导出命令详解 #### 一、导出工具EXP **1. 概述** EXP 是 Oracle 提供的一个强大的数据导出工具,它主要用于将数据库中的数据备份成一个二进制文件,便于数据的迁移与恢复。此工具位于 `/ORACLE_...

    Oracle 导入和导出命令详解

    ### Oracle 导入(IMP)与导出(EXP)命令详解 #### 一、概述 在Oracle数据库管理中,导入(Import,IMP)与导出(Export,EXP)是两个非常重要的工具,用于数据迁移、备份恢复等场景。本文将详细介绍这两个命令的...

    oracle 导入导出命令.txt

    ### Oracle 导入导出命令详解 #### 一、概述 在Oracle数据库管理与维护过程中,数据的导入导出是一项非常重要的操作。Oracle提供了多种工具和技术来实现这一目标,其中最为常用的便是`exp`(Export)和`imp`...

    oracle数据库导入导出命令

    ### Oracle数据库导入导出命令详解 #### 一、Oracle 导入导出命令概述 Oracle 数据库提供了强大的数据导入导出功能,通过 `exp` 和 `imp` 命令来实现数据的备份与恢复。这些命令对于日常的数据库管理来说至关重要...

    Oracle 数据库导出导入命令及详解

    **一、Oracle数据库导出命令(EXP)** 1. **USERID参数** `USERID=demo/demopwd@orcl`:这部分指定了连接到Oracle数据库的凭证。`demo`是用户名,`demopwd`是密码,`orcl`是Oracle服务名或连接字符串,代表你想要...

    Oracle数据库导入导出命令[参考].pdf

    Oracle数据库导入导出命令详解 Oracle数据库导入导出命令是数据库管理员和开发人员必备的技能之一。今天,我们将详细介绍如何使用命令行来操作Oracle数据库的导入和导出。 备份数据 备份数据是数据库管理员的重要...

    Linux下Oracle如何导入导出dmp文件详解

    远程工具连接到 Linux 进行操作,进行 Linux 上 dmp 文件的导入导出。 正文 a. 将用户 system 用户表导出到指定路径 D 盘 exp system/password@SID file=d:/daochu.dmp full=y b. 将用户 system 与 sys 用户的表...

    Oracle数据导入导出命令.pdf

    ### Oracle 数据导入导出命令详解 #### 一、概述 Oracle 数据库系统是业界领先的数据库管理系统之一,提供了强大的数据管理功能。在Oracle中,数据的导入导出是一项非常重要的任务,尤其是在需要迁移数据、备份数据...

    oracle数据库的导入导出详解

    ### Oracle数据库的导入导出详解 Oracle数据库作为企业级应用中的关键组件之一,在数据迁移、备份与恢复等场景中扮演着重要角色。本文将详细介绍Oracle数据库的导入导出操作,并通过具体的命令行示例帮助读者更好地...

    oracle导入导出

    #### 二、Oracle 导入导出命令详解 ##### 1. 导出命令(Export) Oracle 的导出命令主要通过 `exp` 命令来实现,其基本格式为: ```bash exp 用户名/密码 @数据库名 [参数] ``` 其中,“用户名/密码”表示登录 ...

    oracle导入导出命令(imp、exp)

    ### Oracle 导入导出命令(imp、exp)详解 #### 概述 在Oracle数据库管理过程中,数据的导入导出是一项重要的维护工作。Oracle提供了多种工具和技术来完成这项任务,其中最为人所熟知的就是传统的`exp`和`imp`命令...

    oracle数据库导入导出

    #### 二、Oracle导入导出命令详解 Oracle提供了两种主要的工具来完成导入导出任务:`exp` 和 `imp` 命令(早期版本)以及 `expdp` 和 `impdp`(现代版本)。这里主要讲解使用较广泛的`exp`和`imp`命令。 ##### ...

    expdp impdp 数据库导入导出命令详解

    ### Oracle 11g expdp impdp 数据库导入导出命令详解 #### 一、创建逻辑目录 在进行数据的导入导出之前,首先需要创建一个逻辑目录。这个逻辑目录实际上是在Oracle数据库内部的一个概念,并不会在操作系统层面创建...

Global site tag (gtag.js) - Google Analytics