oracle中exp与imp命令详解
EXP和IMP用法详解
/lschou520/archive/2008/08/31/2854244.aspxOracle 数据库备份与恢复总结-exp/imp (导出与导入装库与卸库) 收藏1.1 基本命令1. 获取帮助$ exp help=y$ imp help=y2. 三种工作方式(1)交互式方式$ exp // 然后按提示输入所需要的参数(2)命令行方式$ exp user/pwd@dbname file=/oracle/test.dmp full=y // 命令行中输入所需的参数(3)参数文件方式$ exp parfile=username.par // 在参数文件中输入所需的参数参数文件username.par 内容userid=username/userpassword buffer=8192000compress=n grants=yfile=/oracle/test.dmp full=y3. 三种模式(1)表方式,将指定表的数据导出/导入。
导出:导出一张或几张表:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2导出某张表的部分数据$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\”where col1=\’…\’and col2 \<…\”导入:导入一张或几张表$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y(2)用户方式,将指定用户的所有对象及数据导出/导入。
导出:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx, yy)只导出数据对象,不导出数据(rows=n )$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2commit=y ignore=y(3)全库方式,将数据库中的所有对象导出/导入导出:$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=ycommit=y ignore=y导入:$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser21.2 高级选项1. 分割成多个文件以多个固定大小文件方式导出:这种做法通常用在表数据量较大,单个dump文件可能会超出文件系统的限制的情况$ exp user/pwd file=1.dmp,2.dmp,3.dmp,…filesize=1000m log=xxx.log full=y以多个固定大小文件方式导入$ imp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=xxx fromuser=dbuser touser=dbuser2 commit=y ignore=y2. 增量导出/导入// oracle 9i 以后exp 不再支持inctype必须为SYS 或SYSTEM 才可执行增量导出导入增量导出: 包括三个类型:(1)“完全”增量导出(Complete)// 备份整个数据库$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete(2)“增量型”增量导出导出上一次备份后改变的数据。
expdp和impdp语句
expdp和impdp语句expdp和impdp是Oracle数据库中用于数据泵的导出和导入工具。
它们允许用户将数据和元数据从一个Oracle数据库导出到一个dump文件,然后将该文件导入到另一个Oracle数据库中。
expdp的常用语法如下:复制代码expdp userid=用户名/密码@数据库连接标识文件=数据泵导出文件的路径和名称 logfile=日志文件的路径和名称 dumpfile=dump文件的路径和名称full=yes/no schemas=schema_name[,schema_name]tables=table_name[,table_name] ...其中,userid是用户名和密码,用于连接到数据库;文件路径和名称指定了数据泵导出文件、日志文件和dump文件的路径和名称;full参数用于指定是否导出整个数据库;schemas参数用于指定要导出的模式;tables参数用于指定要导出的表。
impdp的常用语法如下:复制代码impdp userid=用户名/密码@数据库连接标识文件=数据泵导出文件的路径和名称 logfile=日志文件的路径和名称 dumpfile=dump文件的路径和名称full=yes/no schemas=schema_name[,schema_name]tables=table_name[,table_name] ...其中,userid是用户名和密码,用于连接到数据库;文件路径和名称指定了数据泵导出文件、日志文件和dump文件的路径和名称;full参数用于指定是否导入整个数据库;schemas参数用于指定要导入的模式;tables参数用于指定要导入的表。
需要注意的是,在使用expdp和impdp时,必须确保目标数据库已经创建了相应的表、视图、序列等对象,否则导入操作将会失败。
同时,在使用expdp和impdp 时,需要确保具有足够的权限,并且要遵守Oracle数据库的数据泵规范和最佳实践。
exp&imp导入导出
一、导出(exp)和导入(imp)实用程序---------------------------------------------------------------------------- 1二、导出模式 ----------------------------------------------------------------------------------------------------------- 22.1表模式--------------------------------------------------------------------------------------------------------- 22.2用户模式------------------------------------------------------------------------------------------------------ 22.3表空间模式 -------------------------------------------------------------------------------------------------- 22.4完全数据库模式 -------------------------------------------------------------------------------------------- 22.5 导出导入参数 ---------------------------------------------------------------------------------------------- 3三、exp的用法:------------------------------------------------------------------------------------------------------ 33.1导出工具exp交互式命令方式 ------------------------------------------------------------------------- 43.2导出工具exp非交互式命令行方式 ------------------------------------------------------------------- 63.2.1 FULL ------------------------------------------------------------------------------------------------ 63.2.2 OWNER和TABLE ---------------------------------------------------------------------------------- 73.2.3BUFFER和FEEDBACK ----------------------------------------------------------------------------- 83.2.4 FILE和LOG参数-------------------------------------------------------------------------------- 93.2.5 QUERY参数 -------------------------------------------------------------------------------------- 103.2.6 FILESIZE设置导出的数据文件的大小 -------------------------------------------------- 11四、imp用法----------------------------------------------------------------------------------------------------------- 114.1 FROMUSER和TOUSER-------------------------------------------------------------------------------------- 114.2 导入一个完整数据库 ------------------------------------------------------------------------------------ 124.3导入一个或一组指定用户所属的对象 --------------------------------------------------------------- 124.4 导入一个表------------------------------------------------------------------------------------------------- 12一、导出(exp)和导入(imp)实用程序导出实用程序提供了一种简单方法,在Oracle 数据库之间传送数据对象,即使这些数据库位于具有不同硬件和软件配置的平台上。
Oracle数据库逻辑增量备份恢复之expimp参数inctype转载
Oracle数据库逻辑增量备份恢复之expimp参数inctype转载大家看看这个参数inctype你是否使用过?我做了以下测试,欢迎拍砖!Oracle数据库逻辑增量备份之exp/imp一、实现需求由于一个库在云平台上,虽然做了RMAN备份,但是RMAN备份在云本地磁盘上,同时库备份数据量比较大,无法转移到其他的空间上。
由于该库应用的性质比较特殊,大数据量部分要求保存180天后即可删除,因此除了做RMAN之外,我希望将核心数据做下额外的备份,expdp可以满足,目前是这么做的,但是expdp做不了增量备份。
听说exp/imp有参数能做增量备份,但是又听说exp增量备份的最小单位是表,只要表一条数据发生变化,就会对全表进行备份。
之前没有用过exp增量备份这个功能,于是决定先做下测试,看到底备份恢复效率和真实机制如何。
二、逻辑备份恢复工具exp/imp1、逻辑备份原理Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP、EXPDP/IMPDP)、热备份和冷备份。
导出备件是一种逻辑备份,冷备份和热备份是物理备份。
逻辑导出备份:创建数据库对象的逻辑拷贝并存入一个二进制转储文件。
这种逻辑备份需要在数据库启动的情况下使用, 其导出实质就是读取一个数据库记录集(甚至可以包括数据字典)并将这个记录集写入一个文件,这些记录的导出与其物理位置无关,导入实质就是读取转储文件并执行其中的命令。
此备份方式是通过Oracle的实用工具export和import来实施的,export是把数据库中的数据导出,import是把export卸出的数据导入数据库中。
通过此工具可以衍生出多种功能, 比如整个数据库的备份、表结构重建、数据的传输、用户的改变等等。
重新温习下exp/imp的语法和参数,着重看看增量备份参数相关说明。
2、exp语法和参数C:\Documents and Settings\A4586>exp help=yExport: Release 10.2.0.1.0 - Production on 星期三 11月 7 13:41:282012Copyright (c) 1982, 2005, Oracle. All rights reserved.通过输入 EXP 命令和您的用户名/口令, 导出操作将提示您输入参数:例如: EXPSCOTT/TIGER或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出的运行方式。
exp imp命令详解
oracle中exp,imp的使用详解基本语法和实例:1、EXP:有三种主要的方式(完全、用户、表)1、完全:EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y如果要执行完全导出,必须具有特殊的权限2、用户模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC这样用户SONIC的所有对象被输出到文件中。
3、表模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)这样用户SONIC的表SONIC就被导出2、IMP:具有三种模式(完全、用户、表)1、完全:IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y2、用户模式:IMP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC这样用户SONIC的所有对象被导入到文件中。
必须指定FROMUSER、TOUSER 参数,这样才能导入数据。
3、表模式:EXP SONIC/SONIC BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)这样用户SONIC的表SONIC就被导入。
ORACLE数据库有两类备份方法。
第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。
数据库逻辑备份方法ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。
oracle中expimp备份还原工具的使用详解
oracle中expimp备份还原工具的使用详解Oracle数据库的exp和imp命令是数据库备份和恢复的常用工具。
本文将详细介绍exp和imp命令的用法和具体步骤。
一、exp命令exp命令用于将Oracle数据库中的数据和对象导出到一个二进制文件中,以进行备份或迁移。
以下是exp命令的详细步骤:1. 登录到Oracle数据库的命令行界面。
2. 输入以下命令启动exp工具:其中,username是要导出数据的用户名,password是对应的密码,connection_string是连接数据库的字符串,包括主机名、端口号和服务名等信息。
3. exp工具启动后,会提示输入导出内容的方式。
可以选择导出全库、特定表或特定用户的数据。
输入相应的选项并按Enter键确定。
4. 接下来,exp工具会要求输入导出的目标文件名。
输入文件名并按Enter键确定。
5. 导出过程将开始执行。
exp工具会逐一导出数据库的数据和对象,并将其存储在目标文件中。
此过程可能需要一些时间,取决于数据库的大小和复杂性。
6. 导出完成后,在命令行中会显示相应的导出信息。
可以根据需要选择是否结束exp工具。
二、imp命令imp命令用于将exp命令导出的二进制文件恢复到Oracle数据库中。
以下是imp命令的详细步骤:1. 登录到Oracle数据库的命令行界面。
2. 输入以下命令启动imp工具:其中,username是要导入数据的用户名,password是对应的密码,connection_string是连接数据库的字符串,包括主机名、端口号和服务名等信息。
3. imp工具启动后,会提示输入导入内容的方式。
可以选择导入全库、特定表或特定用户的数据。
输入相应的选项并按Enter键确定。
4. 接下来,imp工具会要求输入导入的源文件名。
输入文件名并按Enter键确定。
5. 导入过程将开始执行。
imp工具会读取源文件中的数据和对象,并将其恢复到目标数据库中。
ORACLE导出导入(exp和imp)总结
1.1 EXP AND IMP导入导出的模式a表模式的导入导出b用户模式的导入导出c全库模式的导入导出导出表模式exp system/jaguar@cfp00_cpzb2003 tables=(cp.misywt14,cp.misywt18) file=d:\t8.dmplog=d:\t14t18_exp.log feedback=10000 compress=n用户模式exp system/jaguar@cfp00_cpzb2003 owner=cp file=e:\cp.dmp log=e:\cp_exp.logfeedback=10000 compress=n全库模式exp system/jaguar@bkup full=y filesize=2000M file=(cpzb01.dmp,cpzb02.dmp)log=cpzb_exp.log feedback=10000 compress=n使用参数文件导出(需要在当前路径下执行)exp system/manager@bgd-11_yang1 parfile=t09_exp.part09_exp.par文件内容tables = (test1.misywt09) file=e:\yang\t09.dmp log=e:\yang\t09_exp.log feedback=10000 compress=n快速导出使用参数direct=y recordlength=65535exp system/jaguar@cfp00_cpzb2003 owner=cp file=e:\cp.dmp log=e:\cp_exp.log direct=y recordlength=65535 feedback=10000 compress=n有条件的导出,windowsexp system/ckdb5@ckdb5 tables = (cp962008.misywt40_1) file=t40_96.dmp log=t40_96_exp.log feedback=10000 QUERY='where substr(ckhwh,1,1)="5"'导入表模式imp system/jaguar@cfp99_cpzb fromuser=cp touser=cp tables= (misywt14,misywt18)file=e:\t14t18.dmp log=e:\t14t18_imp.log ignore=y buffer=5120000 commit=yfeedback=10000用户模式imp system/jaguar@cfp99_cpzb fromuser=cp touser=cp file=d:\cp.dmp log=d:\cp_imp.log ignore=y buffer=5120000 commit=y feedback=10000全库模式imp system/jaguar@cfp99_cpzb full=y file=d:\cp.dmp log=d:\cp_imp.log ignore=ybuffer=5120000 commit=y feedback=10000导入大于2G的文件imp system/jaguar@cfp10_cpzbbak filesize=2000M buffer=81920 commyit=y ignore=yfile=(cpzb01.dmp,cpzb02.dmp,cpzb03.dmp,cpzb04.dmp) log=cpzb_imp.log feedback=10000使用参数文件导入(需要在当前路径下执行)imp system/manager@bgd-11_yang1 parfile=t09_imp.part09_imp.par 文件的内容fromuser=test1 touser=test1 tables=(misywt09) file=e:\yang\t09.dmp log=e:\yang\t09_imp.log ignore=y buffer=5120000 commit=y feedback=10000imp步骤说明(1) create table (2) insert data (3) create index (4) create triggers,constraints导出导入常见问题及解决方法1) unix上导出导入,使用多个用户或多个文件时不使用()2) ORACLE不同版本之间的导出导入oracle8.0.4 netwareoracle8.1.5 win2000oracle8.1.7 unix ware 7.1.18.0.4――>8.1.7使用8.0.4从自己导出,使用8.1.5导入8.1.78.1.7――>8.0.4使用8.1.5从8.1.7 导出,使用8.1.5导入8.0.48.1.5――>8.1.7使用8.1.5从自己导出,使用8.1.5导入8.1.78.1.7――>8.1.5使用8.1.7从自己导出,使用8.1.7导入8.1.5oracle8-oracle10之间导入导出的关系1个表的测试oracle8->oracle10test 源数据库目的数据库导出的oracle版本导入的oracle版本文件大小时间结果备注test18 10 8 8 成功有垃圾表BIN$bEheaq87S/q9CiHem/Ty6Q==$0test28 10 8 10 成功test38 10 10 8 失败10无法连接8test48 10 10 10 失败10无法连接8 结论:oracle8->oracle10 导出使用8,导入使用10oracle10->oracle8test 源数据库目的数据库导出的oracle版本导入的oracle版本文件大小时间结果备注test510 8 8 8 成功test610 8 8 10 失败10无法连接8test710 8 10 8 失败8不能读取10得导出文件test810 8 10 10 失败10无法连接8 结论:oracle10->oracle8 导出使用8,导入使用8使用oracle8导出oracle10时,出现错误EXP-00003: 未找到段(10,585868) 的存储定义原因:不能用oracle8导出oracle10。
oracle的导出命令
oracle的导出命令资料来⾃百度搜索,测试全库备份正常导出。
常⽤的oracle数据库备份(导⼊/导出)有两种,分别是exp/imp和expd/impd,前者是Orace早期版本带有的导⼊导出⼯具,后者是Oracle10g后出现的,下⾯进⾏分别介绍!1.exp/imp三种导⼊导出类型Oracle⽀持三种导⼊导出类型分别是表⽅式(T⽅式),⽤户⽅式(U⽅式),全库⽅式(Full⽅式)A: 表⽅式(T⽅式)备份(exp)某个⽤户模式下指定的对象(表),exp guwei/ai123456@10.21.19.63/orcl rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmplog=exp_table.log tables=USER_INFO,POLICY_INFO恢复(imp)备份数据中的指定表,imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=nfile=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFOB:⽤户⽅式(U⽅式)备份(exp)某个⽤户模式下的所有对象,exp jnth/thpassword@oracle owner=guwei rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log恢复(imp)备份数据的全部内容,imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=nfile=exp_table.dmp log=exp_table.log恢复(imp)备份数据中的指定表,imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=nfile=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFOC:全库⽅式(Full⽅式)备份(exp)完整的数据库,exp system/systempassword@oracle rows=y indexes=n compress=n buffer=50000000 full=y file=exp_table.dmp log=exp_table.log导⼊(imp)完整数据库,imp system/systempassword@oracle rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=exp_table.dmp log=exp_table.log 导出导⼊的优缺点优点:简单易⾏;可靠性⾼;不影响数据库的正常运⾏。
oracle使用expdp、impdp和exp、imp导入导出表及表结构
oracle使⽤expdp、impdp和exp、imp导⼊导出表及表结构使⽤expdp、impdp和exp、imp时应该注重的事项:1、exp和imp是客户端⼯具程序,它们既可以在客户端使⽤,也可以在服务端使⽤。
2、expdp和impdp是服务端的⼯具程序,他们只能在oracle服务端使⽤,不能在客户端使⽤。
3、imp只适⽤于exp导出的⽂件,不适⽤于expdp导出⽂件;impdp只适⽤于expdp导出的⽂件,⽽不适⽤于exp导出⽂件。
4、对于10g以上的服务器,使⽤exp通常不能导出0⾏数据的空表,⽽此时必须使⽤expdp导出。
exp、imp导⼊导出sqlplus 进⼊数据库中导出直接在命令⾏下写命令1.导出⾃⼰的表exp userid=scott/tiger@myoral tables=(emp,dept) file=/opt/e1.dmp2.导出其它⽅案的表如果⽤户要导出其它⽅案的表,则需要dba的权限或是exp_full_database的权限,⽐如system就可以导出scott的表exp userid=system/manager@myoral tables=(scott.emp) file=d:\e2.emp3. 导出表的结构exp userid=scott/tiger@accp tables=(emp) file=/opt/e3.dmp rows=n4. 使⽤直接导出⽅式exp userid=scott/tiger@accp tables=(emp) file=/opt/e4.dmp direct=y这种⽅式⽐默认的常规⽅式速度要快,当数据量⼤时,可以考虑使⽤这样的⽅法。
这时需要数据库的字符集要与客户端字符集完全⼀致,否则会报错导出⽅案导出⽅案是指使⽤export⼯具导出⼀个⽅案或是多个⽅案中的所有对象(表,索引,约束...)和数据。
并存放到⽂件中1. 导出⾃⼰的⽅案exp userid=scott/tiger@myorcl owner=scott file=/opt/scott.dmp2. 导出其它⽅案如果⽤户要导出其它⽅案,则需要dba的权限或是exp_full_database的权限,⽐如system⽤户可以导出任何⽅案exp userid=system/manager@myorcl owner=(system,scott) file=/opt/system.dmp导出数据库导出数据库是指利⽤export导出所有数据库中的对象及数据,要求该⽤户具有dba的权限或者是exp_full_database权限增量备份(好处是第⼀次备份后,第⼆次备份就快很多了)exp userid=system/manager@myorcl full=y inctype=complete file=/opt/all.dmp导⼊1. 导⼊⾃⼰的表imp userid=scott/tiger@myorcl tables=(emp) file=/opt/xx.dmp2. 导⼊表到其它⽤户要求该⽤户具有dba的权限imp_full_database imp userid=system/tiger@myorcl tables=(emp) file=/opt/xx.dmp touser=scott3. 导⼊表的结构,只导⼊表的结构⽽不导⼊数据imp userid=scott/tiger@myorcl tables=(emp) file=/opt/xx.dmp rows=n4. 导⼊数据如果对象(如⽐表)已经存在可以只导⼊表的数据imp userid=scott/tiger@myorcl tables=(emp) file=/opt/xx.dmp ignore=y导⼊⽅案导⼊⽅案是指使⽤import⼯具将⽂件中的对象和数据导⼊到⼀个或是多个⽅案中。
expdb和impdb命令详解
6)其他参数
remap_schema和remap_tablespace
version=''
几个重要参数的说明一下:
remap_user 重新映射用户,格式:
remap_tablespace 重新映射表空间
table_exists_action 表已经存在的动作 有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE
4)按查询条件导
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
exclude 跳过对象授权
expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
grant read,write on directory dpdata1 to hip_empi;
四、导出数据
1)按用户导
11.2.0.1.0
expdp hip_ds/hip000@HIPDB DIRECTORY=dpdata1 schemas=hip_ds dumpfile=hip_ds.dmp ;
imp(exp)详细用法
Utilities--exp/imp1.exp/imp简介exp/imp是oracle提供的一个对数据库进行逻辑备份的客户端工具。
利用这个工具可以将数据库按表空间、用户或某些表保存到操作系统下的一个二进制格式的文件里。
这个二进制文件是平台无关的,也就是说可以将windows下的exp文件imp到linux/unix系统中,利用这个特性可以完成某些数据迁移工作。
Exp/imp在操作上可以看成是一个select--create--insert的过程。
exp时select出要导出的数据和保存相关的ddl,imp时执行这个“脚本”(strings dmp文件可以看出其内部包含的就是一些ddl和insert语句)。
要使用Exp/Imp必须运行一次$oracle_home/rdbms/admin 下的catexp.sql 或 catalog.sql script脚本。
在oracle 10g中新提供了一种更加强大的替代工具data pump,但是在实际使用中oracle 9i及以前版本的数据库还是随处可见,所以掌握其用法还是很有必要的。
2.exp/imp导入导出模式exp/imp一共有四种模式:Full、User、Tables、Tablespaces¾Full要执行Full模式的导出,必须具有EXP_FULL_DATABASE的权限。
在Full模式下将导出数据库中所有用户的对象,但是有几个用户是受oracle保护的不能被exp导出(ORDSYS 、____________________________________________________________________________________________________________2008-11-15 唐名杰(beybey911) tangmingjie85@MDSYS 、CTXSYS 、ORDPLUGINS 、LBACSYS)sys用户的对象也不会导出,因此在full 模式导出时属于sys用户的一些触发器之类的对象将会丢失,在导入后应该手工创建。
expdp、impdp用法详解
expdp、impdp⽤法详解Oracle数据泵⼀、数据泵的作⽤:1.实现逻辑备份和逻辑恢复2.在数据库⽤户之间移动对象3.在数据库之间移动对象4.实现表空间转移⼆、数据泵的特点与传统导出导⼊的区别1.EXP和IMP是客户段⼯具程序, EXPDP和IMPDP是服务端的⼯具程序2.EXP和IMP效率⽐较低. EXPDP和IMPDP效率⾼3.数据泵功能强⼤并⾏、过滤、转换、压缩、加密、交互等等4.数据泵不⽀持9i以前版本, EXP/IMP短期内还是⽐较适⽤5.同exp/imp数据泵导出包括导出表,导出⽅案,导出表空间,导出数据库4种⽅式.三、DATA PUMP的体系结构:四、EXPDP语法介绍:数据泵导出实⽤程序提供了⼀种⽤于在 Oracle 数据库之间传输数据对象的机制。
该实⽤程序可以使⽤以下命令进⾏调⽤:⽰例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp您可以控制导出的运⾏⽅式。
具体⽅法是: 在 'expdp' 命令后输⼊各种参数。
要指定各参数,请使⽤关键字:格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) ⽰例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表USERID 必须是命令⾏中的第⼀个参数。
关键字说明 (默认)------------------------------------------------------------------------------ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。
COMPRESSION 减⼩有效的转储⽂件内容的⼤⼩ 关键字值为: (METADATA_ONLY) 和 NONE。
用imp_exp命令_导入导出Oracle数据
准备启用约束条件...
成功终止导入,但出现警告。
附录二:
Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
先建立import9.par,
2、commit
指定在每次数组插入完成后是否提交数据,默认为N
3、compile
指定在导入包,过程,函数时是否要进行编译,默认为Y
4、constraints
指定是否要导入表的约束,默认为Y
5、datafiles
指定要搬移到数据库的数据文件列表
6、destroy
指定是否要覆盖已存在的数据文件,默认为N。如果存在同名文件,则导入失败
8、object_consistent
指定是否要基于对象级设置只读事务导出,默认为N
9、owner
指定用户导出模式。exp system/manager owner=scott file=a.dmp log=a.log
10、query
指定where条件字句,导出表的部分数据,当使用直接导出方式不能指定该选项
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
13、rows
指定是否导出表行数据,默认值为Y。
exp scott/tiger tables=emp file=a.dmp rows=N
imp、exp命令详解
根据情况我们可以用
$ imp username/password@connect_string
说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.
(5) imp和exp使用的字符集不同
如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
导入完成后再改回来.
(6) imp和exp版本不能往上兼容
它有三种模式:
a. 用户模式: 导出用户所有对象以及对象中的数据;
b. 表模式: 导出用户所有表或者指定的表;
c. 整个数据库: 导出数据库中所有对象。
只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入
注:Oralce数据库导入导出时要确保Oralce服务启动
以下参考自:/thread.shtml?forumId=36&topicId=23332
一. 导出工具 exp
1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin
然后按回车键
说明: c2j/c2j@c2j 分别表示用户名,密码和服务名
file:要导入的文件的全路迳
fromuser:指明来源用户方
ignore:是否忽略对象创建错误
commit:上载数据缓冲区中的记录,上载后是否执行提交
出现 正常终了表示导入成功
打开数据库,看是否导入成功
oracle备份之expdpimpdp和expimp命令
oracle备份之expdpimpdp和expimp命令EXP/IMPexp/imp 介绍常⽤实例门诊统筹exp/impexp mztc/YinhaiTY2019 compress=n buffer=4096000 feedback=100000 owner=mztc file=mztc1.dmp log=mztc1.logimp mztc/YinhaiTY2019@ybpdb fromuser=mztc touser=mztc ignore=y buffer=4096000 feedback=100000 file=mztc.dmp log=mztc.loghis数据库impdp/expdpexpdp system/123456@ybzjk schemas=oracle directory=BAK_DIR dumpfile=yhhis-20211201.dmp.dmp logfile=yhhis-20211201.dmp.logimpdp system/123456@ybzjk schemas=oracle directory=BAK_DIR dumpfile=yhhis-20211201.dmp.dmp logfile=yhhis-20211201.dmp.logexpdp yhhis/xhlhis@111.111.111.153/pdbhisdb schemas=yhhis directory=dmp compression=ALL dumpfile=yhhis-20211201.dmp logfile=yhhis-20211201-expdp.dmp impdp yhhis/yhhis@ylpdb remap_schema=yhhis_a:yhhis directory=BAK_DIR dumpfile=yhhis-20211201.dmp logfile=yhhis-20211201-imp.log基本语法和实例:1、 EXP有三种主要的⽅式(完全、⽤户、表)1.1 完全EXP SYSTEM/PASSWORD BUFFER=1024000 FILE=C:\FULL.DMP FULL=Y如果要执⾏完全导出,必须具有特殊的权限1.2 ⽤户模式EXP SONIC/SONIC BUFFER=1024000 FILE=C:\SONIC.DMP OWNER=SONIC这样⽤户SONIC的所有对象被输出到⽂件中。
数据泵expdp impdp 和exp imp工具命令参数中文说明
一、数据泵EXPDP命令参数中文说明#通过在命令行输入expdp help=y 获取imp的语法信息Export: Release 11.2.0.1.0 - Production on 星期五10月10 12:25:21 2019Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.数据泵导出实用程序提供了一种用于在Oracle 数据库之间传输数据对象的机制。
该实用程序可以使用以下命令进行调用:示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp您可以控制导出的运行方式。
具体方法是: 在'expdp' 命令后输入各种参数。
要指定各参数, 请使用关键字:格式: expdp KEYWORD=value 或KEYWORD=(value1,value2,...,valueN)示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott 或TABLES=(T1:P1,T1:P2), 如果T1 是分区表USERID 必须是命令行中的第一个参数。
------------------------------------------------------------------------------以下是可用关键字和它们的说明。
方括号中列出的是默认值。
ATTACH连接到现有作业。
例如, ATTACH=job_name。
COMPRESSION减少转储文件大小。
有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和NONE。
CONTENT指定要卸载的数据。
有效的关键字值为: [ALL], DATA_ONLY 和METADATA_ONLY。
oracle19c之导入、导出及脚本
oracle19c之导⼊、导出及脚本 记录⼀下oracle两种常⽤的导⼊导出⽅式:exp、imp;spool、SQL*Loader及其脚本。
⼀、exp与imp导⼊导出 1、exp导出操作exp c##sl/123456 buffer=64000 file=./full.sql full=y --导出整个数据库exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##sl --导出⽤户c##sl下的对象exp c##sl/123456 buffer=64000 file=./book.sql tables=book --导出book表exp c##sl/123456 buffer=64000 file=./book.sql tables=book,book2; --导出book、book2表 2、imp导⼊操作exp c##sl/123456 buffer=64000 file=./book.sql tables=bookdrop table book;imp c##sl/123456 buffer=64000 file=./book.sql tables=book --需要先删除表,再导⼊,否则报错exp c##sl/123456 buffer=64000 file=./book.sql tables=bookimp c##sl/123456 buffer=64000 ignore=y file=./book.sql tables=book --只会导⼊主键不冲突的数据,冲突的忽略exp c##sl/123456 buffer=64000 file=./sl.sql owner=c##slimp c##sl/123456 buffer=64000 ignore=y file=./sl.sql full=y --导⼊sl.sql中的全部⽂件imp c##sl/123456 buffer=64000 ignore=y file=./sl.sql tables=book,book2 --导⼊sl.sql中的表book、与book2 说明:tables指定导⼊或导出的表;full=y表⽰导⼊或导出全部;ignore=y表⽰跳过主键冲突执⾏ ⼆、spool、SQL*Loader导⼊导出 准备表与数据CREATE TABLE book(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,0) DEFAULT NULL,update_time date DEFAULT NULL,create_time date DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into book values ('1','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('2','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1);insert into book values ('3','c##','sl',23.4,to_date('2011-11-11 11:11:11','YYYY-MM-DD HH24:MI:SS'),to_date('2011-11-11 11:11:14','YYYY-MM-DD HH24:MI:SS'),1); 1、spool导出操作 创建sql⽂件book_spoolout.sqlset echo offset heading offset feedback offset pagesize 0set linesize 1000spool book.datselect id||','||name||','||author||','||price||','||to_char(update_time,'YYYY-MM-DD hh24:mi:ss')||','||to_char(create_time,'YYYY-MM-DD hh24:mi:ss')||','||is_deleted from book;spool off 登录sqlplus,执⾏@导出⽂件[root@localhost tmp]# sqlplus c##sl/123456SQL> @book_spoolout.sql; 导出数据⽂件book.dat如下:1,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,12,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,13,c##,sl,23,2011-11-11 11:11:11,2011-11-11 11:11:14,1 说明: b、这⾥登录数据库⽬录与sql⽂件、导出⽂件⽬录⼀致; c、如果导出⽬录没有写权限,会报错“⽆法创建 SPOOL ⽂件 "book.dat"当前未假脱机”,注意赋权; d、要把控制⽂件写⼊⽂件中保存,如果直接复制到sqlplus中执⾏,导出的⽂件中⾸尾⾏含有其他命令或sql语句; 2、SQL*Loader导⼊操作 创建控制⽂件book.ctlload datainfile book.datinto table booktruncatefields terminated by ","(ID,NAME,AUTHOR,PRICE,UPDATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",CREATE_TIME DATE "YYYY-MM-DD HH24:MI:SS",IS_DELETED) 执⾏导⼊命令,将上⾯的book.dat导⼊数据库sqlldr userid=c##sl/123456 control=book.ctl data=book.dat 注意: a、这⾥的控制⽂件与数据⽂件在同⼀⽬录下 b、truncate是删除原表数据,还有insert、append、replace等 c、fields terminated by是字段分隔符 三、脚本 可以看到spool、sql loader的导⼊导出还是挺复杂的,下⾯整理出通⽤性更强的脚本 1、导出 准备表与数据CREATE TABLE music(id varchar2(10) NOT NULL,name varchar2(50) DEFAULT NULL,author varchar2(20) DEFAULT NULL,price decimal(10,2) DEFAULT NULL,update_time varchar2(19) DEFAULT NULL,create_time varchar2(19) DEFAULT NULL,is_deleted varchar2(1) DEFAULT NULL,PRIMARY KEY (id));insert into music values ('1','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('2','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1');insert into music values ('3','你好你好','sl',23.4,'2011-11-11 11:11:11','2011-11-11 11:11:14','1'); 创建脚本oddpe#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddp music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}DATAFILE=${2}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdof) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`SPOOLOUTSQL=${DATAPATH}/${TABLE}_spoolout.sqlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_unload_${TODAY}.logsqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50 pagesize 0 linesize 1000spool ${SPOOLOUTSQL}declarev_colcount number :=0;begindbms_output.put_line('select');for col in (select column_namefrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.column_name);elsedbms_output.put_line(chr(9) || '||' || '''${FIELD}''' || '||' );dbms_output.put(chr(9) || col.column_name);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.put('||' || '''${ROW}''');dbms_output.new_line;dbms_output.put_line('from ' || '${TABLE};');end;/spool offexiteofecho "`date +%T`: 开始导出数据!" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eofset echo off heading on feedback off pagesize 0 linesize 1000set termout off trimspool on numwidth 24 arraysize 1000 verify off newpage 0 space 0spool ${DATAFILE}.tmp@${SPOOLOUTSQL}spool offexiteofif [ $? -ne 0 ];thenecho "`date +%T`: 导出${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1else#去除中间空⾏grep . ${DATAFILE}.tmp>${DATAFILE}rm -f ${DATAFILE}.tmpecho "`date +%T`: 导出${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏⽰例,导出music表的数据到music.dat⽂件,以|!?|分隔字段,以@#$结束⼀⾏./oddpe music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 2、导⼊ 创建脚本oddpi#!/bin/shif [ $# -lt 5 ];thenecho "param error: please reference example:"echo "oddpi music ./music.dat c##sl/123456 -f'|!?|' -r'@#$'"exit 1fiTABLE=${1}USERPASS=${3}shiftshiftshiftwhile getopts "f:r:" argdocase ${arg} inf) FIELD=${OPTARG};;r) ROW=${OPTARG};;?) ROW=1;;esacdoneDATAPATH=`dirname ${DATAFILE}`DATANAME=`basename ${DATAFILE}`CTLFILE=${DATAPATH}/${TABLE}.ctlTODAY=`date '+%Y%m%d'`LOGFILE=${DATAPATH}/${TABLE}_load_${TODAY}.logecho "`date +%T`: 创建控制⽂件" 2>&1|tee -a ${LOGFILE}sqlplus -S ${USERPASS} <<eof >>${LOGFILE}set serveroutput on verify off trimspool on timing off feedback offset numwidth 50spool ${CTLFILE}declarev_colcount number :=0;begindbms_output.put_line('load data');dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');dbms_output.put_line('into table '||'${TABLE}');dbms_output.put_line('truncate');dbms_output.put_line('fields terminated by '|| '''${FIELD}''');dbms_output.put_line('trailing nullcols');dbms_output.put_line('(');for col in (select column_name,casewhen data_type = 'NUMBER' then column_name || ' "nvl(rtrim(:' || column_name || '),' || '0.00' || ')"' else column_name || ' "nvl(rtrim(:' || column_name || '),' || ''' ''' || ')"'end xfrom user_tab_columnswhere table_name = upper('${TABLE}')order by column_id)loopif v_colcount = 0thendbms_output.put(chr(9) || col.x);elsedbms_output.put_line(',');dbms_output.put(chr(9) || col.x);end if;v_colcount :=v_colcount + 1;end loop;dbms_output.new_line;dbms_output.put_line(')');end;/spool offset feedback oneofecho "`date +%T`: 开始导⼊数据!" 2>&1|tee -a ${LOGFILE}sqlldr userid=${USERPASS} control=${CTLFILE} log=${LOGFILE} data=${DATAFILE} direct=trueif [ $? -ne 0 ];thenecho "`date +%T`: 导⼊${TABLE}失败!" 2>&1|tee -a ${LOGFILE}exit -1elseecho "`date +%T`: 导⼊${TABLE}完毕!" 2>&1|tee -a ${LOGFILE}exit 0fi 执⾏脚本,导⼊数据./oddpi music /usr/local/myroom/script/tmp/music.dat c##sl/123456 -f'|!?|' -r'@#$' 说明:对导⼊脚本中dbms_output.put_line('infile ${DATANAME} '|| '"str ''${ROW}\n''" ');的解析 load data的str属性表⽰数据的换⾏符,⽐如3^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!2^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!!1^^你好你好^^sl^^23.4^^2011-11-11 11:11:11^^2011-11-11 11:11:14^^1!! a、"\n"是⾃带的换⾏符,因为数据⼿动换⾏了,所以str后⾯除了指定的换⾏符"!!"还有"\n" b、有些⽂件中⼿动的换⾏符不是"\n"⽽是"\r\n",这时对应语句改为......"str '!!\r\n'"...... c、str后⾯还可以跟X+转成raw类型的字符,下⾯的语句执⾏效果相同。
exp-imp详解
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)
若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。
2. indexes参数
在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句
IMP命令
USERID 必须是命令行中的第一个参数。
关键字 说明(默认)
----------------------------------------------
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
exp和imp常用_
例如:将192.168.82.129的orcl库中的local_sp用户的所有对象都导入到192.168.82.130数据库中。
前提:130的orcl库中必须有local_sp这个用户A.在129上su – oracleB.然后再命令行执行exp local_sp/local_sp@orcl owner=local_sp file=local_sp.dmp log=local_sp.log 解析:这是exp导出命令,然后在当前目录下会看到local_sp.dmp这个文件。
C.然后将local_sp.dmp传到130上。
命令为:scp local_sp.dmp 192.168.82.130:/home/oracle/D.登陆到130上,su – oracle用户,然后再命令行执行imp local_sp/local_sp@orcl fromuser= local_sp touser= local_sp file=local_sp.dmpE.即可2.按照表级别exp和imp操作步骤和上面的很像,唯一不同的是exp和imp命令上的差异exp的命令为:exp local_sp/local_sp@orcl tables=(table_name1,table_name2 ……)file=local_sp.dmp log=local_sp.logimp命令为:imp local_sp/local_sp@orcl ignore=y file=local_sp.dmp解析:imp的命令中是将dmp的文件全部导入库中,如果exp导出的是多个表,但是这里imp导入时只想导入1张表,那就可以将tables=(table_name)加入到imp命令中即可。
一般情况下,按照全库级别的导出和导入情况比较少,当然在数据库迁移的情况下比较实用。
这里全库的exp和imp一般都是以sys来做。
具体exp和imp的命令为:exp \'sys/passwd@orcl as sysdba\' full=y file=full.dmp log=full.logimp \'sys/passwd@orcl as sysdba\' full=y file=full.dmp备注:imp和exp要注意数据库的版本和字符集,如果版本不一致可能imp时不能成功,如果字符集不一致在imp成功以后的数据可能是乱码!如果需要更改字符集的话,需要关闭数据库后,将数据库打开到限制模式下,才可以修改!暂时就先写这3种情况,详细步骤请看exp_资料和 imp_资料。
oracle exp imp 详解
oracle exp/imp 详解导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。
当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议。
对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。
下面说明一下EXP/IMP的使用。
如何使exp的帮助以不同的字符集显示:set nls_lang=simplified chinese_china.zhs16gbk,通过设置环境变量,可以让exp的帮助以中文显示,如果set nls_lang=American_america.字符集,那么帮助就是英文的了EXP的所有参数(括号中为参数的默认值):USERID 用户名/口令如:USERID=duanl/duanlFULL 导出整个数据库(N)BUFFER 数据缓冲区的大小OWNER 所有者用户名列表,你希望导出哪个用户的对象,就用owner=username FILE 输出文件(EXPDAT.DMP)TABLES 表名列表,指定导出的table名称,如:TABLES=table1,table2 COMPRESS 导入一个extent (Y)RECORDLENGTH IO 记录的长度GRANTS 导出权限(Y)INCTYPE 增量导出类型INDEXES 导出索引(Y)RECORD 跟踪增量导出(Y)ROWS 导出数据行(Y)PARFILE 参数文件名,如果你exp的参数很多,可以存成参数文件. CONSTRAINTS 导出约束(Y)CONSISTENT 交叉表一致性LOG 屏幕输出的日志文件STATISTICS 分析对象(ESTIMATE)DIRECT 直接路径(N)TRIGGERS 导出触发器(Y)FEEDBACK 显示每x 行(0) 的进度FILESIZE 各转储文件的最大尺寸QUERY 选定导出表子集的子句下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导出可传输的表空间元数据(N)TABLESPACES 将传输的表空间列表程序代码IMP的所有参数(括号中为参数的默认值):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 拥有可传输表空间集中数据的用户关于增量参数的说明:exp/imp的增量并不是真正意义上的增量,所以最好不要使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
exp/imp两个命令可以说是oracle中最常用的命令了.ORACLE数据库有两类备份方法。
第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。
数据库逻辑备份方法ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。
表模式备份某个用户模式下指定的对象(表)。
业务数据库通常采用这种备份方式。
若备份到本地文件,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=exp_icdmain_csd_yyyymmdd.logtables=moninformation,icdmain.serviceinfo,icdmain.dealinfo若直接备份到磁带设备,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_csd_yyyymmdd.logtables=moninformation,icdmain.serviceinfo,icdmain.dealinfo注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。
出于速度方面的考虑,尽量不要直接备份到磁带设备。
用户模式备份某个用户模式下的所有对象。
业务数据库通常采用这种备份方式。
若备份到本地文件,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0file=exp_icdmain_yyyymmdd.dmplog=exp_icdmain_yyyymmdd.log若直接备份到磁带设备,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_yyyymmdd.log注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。
如果数据库数据量较小,可采用这种办法备份。
完全模式备份完整的数据库。
业务数据库不采用这种备份方式。
备份命令为:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=yfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。
增量备份命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=y inctype=incrementalfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log注:关于增量备份必须满足下列条件:1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数。
2. 用户必须有EXP_FULL_DATABASE的系统角色。
3. 话务量较小时方可采用数据库备份。
4. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。
业务数据库备份方法及周期用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。
没有特殊说明,不允许在客户端执行备份命令。
备份命令参照表模式下的备份命令。
从磁盘文件备份到磁带如果首先备份到本地磁盘文件,则需要转储到磁带设备上。
1. 若需查看主机上配置的磁带设备,使用如下命令:lsdev -Cc tape显示的结果如下例所示:rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drivermt1 Defined30-58-00-0,0 SCSI 4mm Tape Drive标明Available的设备是可用的磁带设备。
2. 若需查看磁带存储的内容,使用如下命令:tar -tvf /dev/rmt0显示的结果如下例所示:-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp 如果显示类似如下内容,则表示该磁带存储的备份数据是从数据库直接备份到磁带上,而非从本地磁盘转储到磁带的备份文件,因此操作系统无法识别。
tar: 0511-193 An error occurred while reading from the media.There is an input or output error.或tar: 0511-169 A directory checksum error on media; -267331077 not equal to25626.3. 对于新磁带或无需保留现存数据的磁带,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:A. 该命令将无条件覆盖磁带上的现存数据。
B. 文件名不允许包含路径信息,如:/backup/exp_icdmain_yyyymmdd.dmp。
4. 对于需要保留现存数据的磁带,使用如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端,不会覆盖现存的数据。
特别强调:如果备份时是从数据库直接备份到磁带上,则不可再向该磁带上追加复制任何其他文件,否则该备份数据失效。
5. 若需将转储到磁带上的备份文件复制到本地硬盘,使用如下命令:A. 将磁带上的全部文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0B. 将磁带上的指定文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp备份时间安排由于备份时对系统I/O有较大影响,所以,建议在晚上11点以后进行备份工作。
业务数据库Oracle版本的恢复恢复方案需根据备份方案确定。
由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。
恢复方案数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。
表模式此方式将根据按照表模式备份的数据进行恢复。
A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_csd_yyyymmdd.logB. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo用户模式此方式将根据按照用户模式备份的数据进行恢复。
A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.logB. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo完全模式如果备份方式为完全模式,采用下列恢复方法:若从本地文件恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=/dev/rmt0log=imp_icdmain_yyyymmdd.log参数说明1. ignore参数Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。