oracle的emp导入imp导出命令

oracle导入导出命令详解(附数据库每天定时备份脚本)

一. 导出工具 exp

1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin

exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移

它有三种模式:

a.  用户模式: 导出用户所有对象以及对象中的数据;

b.  表模式: 导出用户所有表或者指定的表;

c.  整个数据库: 导出数据库中所有对象。

2. 导出工具exp交互式命令行方式的使用的例子

$exp test/[email protected]

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 username/[email protected]_string

说明: 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)

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 userid=user/[email protected] FILE=$files filesize=1024M grants=N 2>>exp_rpt.log

gzip /data/expfiles/${outfile}*1、Oracle数据库导出的命令,参考下面的

exp system/[email protected] file=d:\mb.dmp owner=(scott)

-------------------------------------------

数据导出:

1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中

exp system/[email protected] file=d:\daochu.dmp full=y

2 将数据库中system用户与sys用户的表导出

exp system/[email protected] file=d:\daochu.dmp owner=(system,sys)

3 将数据库中的表table1 、table2导出

exp system/[email protected] file=d:\daochu.dmp tables=(table1,table2)

4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

exp system/[email protected] file=d:\daochu.dmp tables=(table1) query=\" where filed1 like ‘00%‘\"

上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

不过在上面命令后面 加上 compress=y  就可以了

数据的导入

1 将D:\daochu.dmp 中的数据导入 TEST数据库中。

imp system/[email protected]  file=d:\daochu.dmp  ignore=y

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上 ignore=y 就可以了。

imp aichannel/[email protected] full=y file=d:\datanewsmgnt.dmp ignore=y

imp aichannel/[email protected] full=y file=e:\20150714-1.dmp ignore=y

2 将d:\daochu.dmp中的表table1 导入

imp aichannel/[email protected]  file=d:\daochu.dmp  tables=(table1)

imp aichannel/[email protected]  file=d:\daochu.dmp  tables=(table1)

基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。

---------tfx

案例一:在9.3上的9I数据库aichannel进行导入导出操作

1、运行>>cmd

2、d:

3、cd D:\oracle\ora92\bin

4、exp aichannel/[email protected] file=e:\20150714-1.dmp full=y

5、imp aichannel/[email protected] full=y file=e:\20150714-1.dmp ignore=y

--单表导入

imp system/[email protected] file=e:\0825.dmp tables=(acd_code,acd_codetype) ignore=y buffer=(5400000)

---------tfx

注意:

操作者要有足够的权限,权限不够它会提示。

数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

可以通过输入 IMP 命令和您的用户名/口令

后接用户名/口令的命令:

例程: IMP SCOTT/TIGER

或者, 可以通过输入 IMP 命令和各种参数来控制“导入”

按照不同参数。要指定参数,您可以使用关键字:

格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表

附录一:

给用户增加导入数据权限的操作

第一,启动sql*puls

第二,以system/manager登陆

第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)

第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,

DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字

第五, 运行-cmd-进入dmp文件所在的目录,

imp userid=system/manager full=y file=*.dmp

或者 imp userid=system/manager full=y file=filename.dmp

执行示例:

F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp

屏幕显示

Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006

(c) Copyright 2000 Oracle Corporation. All rights reserved.

连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

With the Partitioning option

JServer Release 8.1.7.0.0 - Production

经由常规路径导出由EXPORT:V08.01.07创建的文件

已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入

导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)

. 正在将AICHANNEL的对象导入到 AICHANNEL

. . 正在导入表                  "INNER_NOTIFY"          4行被导入

准备启用约束条件...

成功终止导入,但出现警告。

附录二:

Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.

先建立import9.par,

然后,使用时命令如下:imp parfile=/filepath/import9.par

例 import9.par 内容如下:

FROMUSER=TGPMS

TOUSER=TGPMS2     (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)

ROWS=Y

INDEXES=Y

GRANTS=Y

CONSTRAINTS=Y

BUFFER=409600

file==/backup/ctgpc_20030623.dmp

log==/backup/import_20030623.log

时间: 2024-09-30 05:16:33

oracle的emp导入imp导出命令的相关文章

Oracle 数据的导入和导出(SID service.msc)

一:版本说明: (1)(Oracle11  32位系统)Oracle - OraDb11g_home1: (2)安装成功后显示如下:第一个图是管理工具,创建连接,创建表:第二个是数据库创建工具: (3)Oracle 的数据库创建可不像MySQL先建立连接(localhost 3306),再在连接界面右键点击即可创建数据库,之后在创建表,一个连接对应多个数据库:Oracle恰恰相反:先创建数据库(按第二个图是数据库创建工具):再建立连接(按第一个图是管理工具,创建连接,创建表),在连接的基础上创建

oracle创建用户、授权、导入、导出命令总结

1.创建用户 需要先用system用户登录数据库,因为system用户具有创建其他用户的权限. 语法[创建用户]: create user 用户名 identified by 口令[即密码]: 例子: create user dhjw identified by 123456; 语法[更改用户]: alter user 用户名 identified by 口令[改变的口令]; 例子: alter user dhjw identified by dhjw ; 2.删除用户 语法:drop user

MYSQL导入,导出命令。

命令速度远远快于客户端工具导库 导入SQL文件命令,D:\mysqlserver\bin>mysql -uroot -p e6wifi_content <C:/Users/PC/Desktop/e6wifi.sql 导出SQL文件命令,D:\mysqlserver\bin>mysqldump -uroot -p e6wifi_content t_video > t_video.sql

oracle数据库的导入和导出

1 导入数据库: 2 imp demo/123456@orcl file=d:/bak_1023.dmp full=y 3 导出数据库: 4 exp demo/123456@orcl file=d:/bak_1023.dmp

mysql导入和导出命令

1 导出所有库 系统命令行 mysqldump -uusername -ppassword --all-databases > all.sql  2 导入所有库 mysql命令行 mysql>source all.sql;  3 导出某些库 系统命令行 mysqldump -uusername -ppassword --databases db1 db2 > db1db2.sql  4 导入某些库 mysql命令行 mysql>source db1db2.sql;

Oracle DMP备份文件导入(impdp)导出(expdp)方法

一  impdp 导入 --删除用户若用户已经存在(可以使用Oracle自带的sqlplus进行连接) SQL> drop user USER_NAME cascade SQL> / SQL> drop tablespace USER_TABLESPACE including contents and datafiles SQL> / --创建表空间 下载SQL> CREATE TABLESPACE USER_TABLESPACE DATAFILE 'USER_tablesp

oracle数据的导入与导出

1.mkdir /tdms1/oracle/dump 2.sqlplus / as sysdba 3.create directory udir as '/tdms1/oracle/dump'; 4.grant write ,read on directory udir to scott; 5.导出表: Expdp scott/tiger DIRECTORY=dump_dir TABLES=scott.dept DUMPFILE=dept.dmp logfile=dept.log 6.导入表 i

impdp导入expdp导出数据库实例

impdp命令在cmd下直接用,不必登录oracle.只能导入expdp导出的dmp文件. expdp导出的时候,需要创建 DIRECTORY 导出什么表空间,导入也要什么表空间. 导出什么用户,导入也要什么用户. 如果没有要新建. 从远程服务器expdp导出了TOOLBOX用户的数据库dmp文件,要导本地开发环境中. 本地oracle环境是全新的(windows环境). 创建表空间 create tablespace TOOLBOXloggingdatafile 'C:\oraclexe\ap

ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对比

ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间移动对象 3.可以在数据库之间移动对象 4.可以实现表空间转移 二.EXPDP的命令详解 C:\Users\Administrator>20:42:32.90>expdp help=y Export: Release 11.2.0.1.0 - Production on 星期六 10月 10 09