Oracle exp_imp备份或导入时注意的事项
- 格式:docx
- 大小:13.34 KB
- 文档页数:2
使⽤imp和exp命令对Oracle数据库进⾏导⼊导出操作详解这⾥导⼊导出路径都在D盘下,默认⽂件名为:example.dmpexp⽅式导出数据相关参数项如下:关键字说明默认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导出指定的表空间列表1.完全导出(选项都为默认配置)例⼦:导出mydb数据库system⽤户,密码为123456的所有数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmp2.只导出表结构例⼦:导出mydb数据库system⽤户,密码为123456的所有表结构到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmprows=n3.将指定⽤户下的表导出例⼦:导出mydb数据库system和sys⽤户的所有表数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmpowner=(system,sys)4.将指定的表导出例⼦:导出mydb数据库system⽤户下的table1和table2表数据到D:\example.dmp⽂件中expsystem/**************.12.32/mydbfile=D:\example.dmptables=(table1,table2)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)FEEDBACK每 x ⾏显⽰进度TOID_NOVALIDATE跳过指定类型 ID 的验证FILESIZE每个转储⽂件的最⼤⼤⼩STATISTICS始终导⼊预计算的统计信息RESUMABLE在遇到有关空间的错误时挂起RESUMABLE_NAME⽤来标识可恢复语句的⽂本字符串RESUMABLE_TIMEOUT RESUMABLE 的等待时间COMPILE编译过程, 程序包和函数(Y)STREAMS_CONFIGURATION导⼊ Streams 的⼀般元数据(Y)STREAMS_INSTANITATION导⼊ Streams 的实例化元数据(N)TRANSPORT_TABLESPACE导⼊可传输的表空间元数据TABLESPACES将要传输到数据库的表空间DATAFILES将要传输到数据库的数据⽂件TTS_OWNERS拥有可传输表空间集中数据的⽤户1.导⼊⼀个完整的库例⼦:将D:\example.dmp⽂件中的库导⼊到mydb下的system⽤户中impsystem/**************.12.32/mydbfile=D:\example.dmpfull=yignore=y到此这篇关于使⽤imp和exp命令对Oracle数据库进⾏导⼊导出操作详解的⽂章就介绍到这了,更多相关Oracle数据库exp和imp 导⼊导出内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
EXPDB_IMPDB导出数据库和导入数据库操作手册EXPDP/IMPDP导出导入操作手册1.介绍EXPDP/IMPDP 是 Oracle 数据库中提供的一种工具,用于导出和导入数据库中的数据和对象。
通过使用 EXPDP 可以将数据库中的指定数据表、视图、程序、触发器等对象导出到一个二进制文件中,而使用 IMPDP 可以将这个导出的文件再导入到一个新的数据库中。
2.环境设置在使用 EXPDP/IMPDP 前,需要进行一些环境设置。
首先,确保数据库已经以归档模式运行,并且存在一个有效的备份策略。
其次,确认当前用户具备使用 EXPDP/IMPDP 的权限,可以通过以下语句进行授权:```GRANT EXP_FULL_DATABASE, IMP_FULL_DATABASE TO username;```其中,`username` 是需要授权的用户名。
3.导出数据库要导出数据库,可以使用以下命令:```expdp username/passwordconnect_stringDIRECTORY=directory_name DUMP LOG```其中,`username` 是要导出数据的用户名,`password` 是该用户的密码,`connect_string` 是连接数据库的字符串,`directory_name` 是导出文件所在的目录,`dump` 是导出文件的名称,`log` 是导出日志文件的名称。
4.导入数据库要导入数据库,可以使用以下命令:```impdp username/passwordconnect_stringDIRECTORY=directory_name DUMP LOG```其中,`username` 是要导入数据的用户名,`password` 是该用户的密码,`connect_string` 是连接数据库的字符串,`directory_name` 是导入文件所在的目录,`dump` 是导入文件的名称,`log` 是导入日志文件的名称。
Oracle数据库文件中的导入\导出(imp/exp命令)Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。
exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i 中安装目录ora81BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
下面介绍的是导入导出的实例。
数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中exp system/manager@TEST file=d:daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)3 将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmptables=(inner_notify,notify_staff_relat)4 将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。
也可以在上面命令后面加上compress=y 来实现。
数据的导入1 将D:daochu.dmp 中的数据导入TEST数据库中。
Oracle 11G R2 用exp无法导出空表解决方法Oracle 11G在用EXPORT导出时,空表不能导出11G R2中有个新特性,当表无数据时,不分配segment,以节省空间解决方法:一、insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。
导出时则可导出空表。
二、设置deferred_segment_creation 参数该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
修改SQL语句:alter system set deferred_segment_creation=false scope=both;需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。
如需导出之前的空表,只能用第一种方法。
三、用以下这句查找空表select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;把查询结果导出,执行导出的语句,强行修改segment值,然后再导出即可导出空表,注意:数据库插入数据前,修改11g_R2参数可以导出空表查找空表select 'alter table '||table_name||' allocate extent;' from user_tables wherenum_rows=0四、Oracle 10g以后增加了expdp和impdp工具,用此工具也可以导出空的表oracle expdp/impdp 用法详解1)创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory db_bak as 'd:\test\dump';2)查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)select * from dba_directories;3)给system用户赋予在指定目录的操作权限,最好以system等管理员赋予。
Oracle使⽤expdb、impdb解决导出、导⼊时的⽤户修改、表空间修改变更问题对于Oracle的数据导出和导⼊,我们之前⼀直使⽤exp、imp来处理,但⽤imp在导⼊时经常会要求表空间⼀致,⽽博主今天恰恰就遇到了需要变更表空间和⽤户的情况,这在我们平常的业务场景中也会遇到,那么该如何处理呢?我们采⽤Oralce的 “数据泵” Data Dump来处理。
测试环境:Windows Server 2008 R2、Oracle11g⽬录1、数据泵(Data Dump)主要解决问题2、数据泵使⽤限制3、创建测试数据库4、导出源数据库5、导⼊⽬标数据库6、验证导⼊后表空间1、数据泵(Data Dump)主要解决问题①. ⽐imp/exp更加灵活,⽀持多种元数据过滤策略,多种导⼊、导出模式,如将A表空间B⽤户数据导⼊C表空间D⽤户下,则只需REMAP_SCHEMA即可②. 表空间占⽤和表空间变更问题,可使⽤REMAP_TABLESPACE来解决③. 空表问题,Oracle11g新的表并且表中⽆数据也为使⽤过则表的segment空间是不会分配的,这样在使⽤exp导出时空表便不会被导出,解决这个问题要么给空分配segment或直接使⽤expdp。
④. 效率问题。
普通情况下expdp/impdp⽐exp/imp效率要⾼,⾼多少博主没有测试,有兴趣的不妨验证下,@博主。
2、数据泵使⽤限制使⽤expdp、impdp有条件限制⼀是远程使⽤时必须配置好Database Link,因为expdp、impdp只能在服务端使⽤,不能再客户端使⽤;⼆是试⽤前要解决路径配置问题。
3、创建测试数据库创建源⽤户和表空间,为了便于操作我们给新创建⽤户授权的了dba权限,⼤家在本地使⽤时注意1. /*第1步:创建临时表空间 */2. create temporary tablespace test_source_temp3. tempfile 'D:\Oracle11g\oradata\test_source_temp.dbf'4. size 10m5. autoextend on6. next 1m maxsize unlimited7. extent management local;8.9. /*第2步:创建数据表空间 */10. create tablespace test_source11. logging12. datafile 'D:\Oracle11g\oradata\test_source.dbf'13. size 10m14. autoextend on15. next 1m maxsize unlimited16. extent management local;17.18. /*第3步:创建⽤户并指定表空间 */19. create user test_source identified by a12345620. default tablespace test_source21. temporary tablespace test_source_temp;22.23. /*第4步:给⽤户授予权限 */24. grant connect,resource,dba to test_source;创建两张测试表,⼀张基础数据类型,⼀张含clob、blob、date等复杂数据类型1. --表12. create table tab_13. (4. tab1_field1 number,5. tab1_field2 varchar2(20),6. tab1_field3 varchar2(10)9. insert into TAB_1 (tab1_field1, tab1_field2, tab1_field3) values (1, 'a12', 'a13');10. insert into TAB_1 (tab1_field1, tab1_field2, tab1_field3) values (2, '张22', '李23');11.12. --表213. create table TAB_214. (15. tab2_field1 NUMBER,16. tab2_field2 VARCHAR2(20),17. tab2_field3 DATE,18. tab2_field4 CLOB,19. tab2_field5 BLOB20. )21. --插⼊测试数据22. insert into TAB_2 (tab2_field1,tab2_field2,tab2_field3,tab2_field4,tab2_field5) values ('1','A12',SYSDATE,'测试1','C1');23. insert into TAB_2 (tab2_field1,tab2_field2,tab2_field3,tab2_field4,tab2_field5) values ('1','测试22',SYSDATE,'测试2','C2');24. insert into TAB_2 (tab2_field1,tab2_field2,tab2_field3,tab2_field4,tab2_field5) values ('1','嘿嘿32',SYSDATE,'测试3','C3');创建⽬标⽤户和表空间1. /*第1步:创建临时表空间 */2. create temporary tablespace test_target_temp3. tempfile 'D:\Oracle11g\oradata\test_target_temp.dbf'4. size 10m5. autoextend on6. next 1m maxsize unlimited7. extent management local;8.9. /*第2步:创建数据表空间 */10. create tablespace test_target11. logging12. datafile 'D:\Oracle11g\oradata\test_target.dbf'13. size 10m14. autoextend on15. next 1m maxsize unlimited16. extent management local;17.18. /*第3步:创建⽤户并指定表空间 */19. create user test_target identified by a12345620. default tablespace test_target21. temporary tablespace test_target_temp;22.23. /*第4步:给⽤户授予权限 */24. grant connect,resource,dba to test_target;4、导出源数据库这⾥需要注意:EXP和IMP是客户端⼯具程序,它们既可以在客户端使⽤,也可以在服务端使⽤。
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工具会读取源文件中的数据和对象,并将其恢复到目标数据库中。
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使⽤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⼯具将⽂件中的对象和数据导⼊到⼀个或是多个⽅案中。
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用户的一些触发器之类的对象将会丢失,在导入后应该手工创建。
Oracle数据库三种备份⽅案Oracle数据库有三种标准的备份⽅法,它们分别是导出/导⼊(EXP/IMP)、热备份和冷备份。
导出备件是⼀种逻辑备份,冷备份和热备份是物理备份。
⼀、导出/导⼊(Export/Import)利⽤Export可将数据从数据库中提取出来,利⽤Import则可将提取出来的数据送回到Oracle数据库中去。
1、简单导出数据(Export)和导⼊数据(Import)Oracle⽀持三种⽅式类型的输出:(1)、表⽅式(T⽅式),将指定表的数据导出。
(2)、⽤户⽅式(U⽅式),将指定⽤户的所有对象及数据导出。
(3)、全库⽅式(Full⽅式),瘵数据库中的所有对象导出。
数据导⼊(Import)的过程是数据导出(Export)的逆过程,分别将数据⽂件导⼊数据库和将数据库数据导出到数据⽂件。
2、增量导出/导⼊增量导出是⼀种常⽤的数据备份⽅法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。
在进⾏此种导出时,系统不要求回答任何问题。
导出⽂件名缺省为export.dmp,如果不希望⾃⼰的输出⽂件定名为export.dmp,必须在命令⾏中指出要⽤的⽂件名。
增量导出包括三种类型:(1)、“完全”增量导出(Complete)即备份三个数据库,⽐如:exp system/manager inctype=complete file=040731.dmp(2)、“增量型”增量导出备份上⼀次备份后改变的数据,⽐如:exp system/manager inctype=incremental file=040731.dmp(3)、“累积型”增量导出累计型导出⽅式是导出⾃上次“完全”导出之后数据库中变化了的信息。
⽐如:exp system/manager inctype=cumulative file=040731.dmp数据库管理员可以排定⼀个备份⽇程表,⽤数据导出的三个不同⽅式合理⾼效的完成。
oracle数据库备份与还原方法一、Oracle数据库备份方法。
1.1 冷备份。
冷备份是在数据库关闭状态下进行的备份。
这就好比是给一个睡着的人做全身检查,一切都是静止的,好操作。
你得把数据库相关的文件,像数据文件、控制文件、重做日志文件等一股脑儿地拷贝到一个安全的地方。
这种备份方法简单直接,但是呢,在备份期间数据库是不能使用的,就像你要修东西得先把它停下来一样,有点不方便。
不过它恢复起来也相对容易,就像把之前拷贝走的东西再原封不动地拿回来就好。
1.2 热备份。
热备份可就不一样啦,它是在数据库运行的时候进行备份的。
这就像是给一个正在跑步的人换鞋子,难度不小。
热备份主要是利用归档模式,对表空间或者数据文件进行备份。
这种方式不影响数据库的正常使用,就像在火车行驶的时候给它换个小零件,火车还能继续跑。
但是热备份的操作相对复杂一些,需要对Oracle数据库有比较深入的了解,不然很容易搞砸,那可就“偷鸡不成蚀把米”了。
1.3 逻辑备份。
逻辑备份呢,是通过Oracle的工具,比如EXP或者EXPDP来进行的。
这就像是把数据库里的数据按照一定的逻辑规则整理出来,打包带走。
它可以备份特定的表、用户或者整个数据库。
这种备份方式比较灵活,就像你可以从一个大仓库里挑选你想要备份的东西。
但是逻辑备份的速度可能会比较慢,特别是数据量很大的时候,就像小马拉大车,有点吃力。
二、Oracle数据库还原方法。
2.1 冷备份还原。
如果是冷备份还原,那就简单多啦。
首先把数据库关闭,然后把之前备份的文件再拷贝回原来的位置,就像把东西放回原位一样。
不过要注意文件的权限和路径,可不能张冠李戴。
一切就绪后,再启动数据库,就大功告成了。
这就像把修好的东西重新启动,又能正常工作了。
2.2 热备份还原。
热备份还原就复杂得多了。
首先要根据备份的情况,确定需要还原的表空间或者数据文件。
然后利用归档日志和备份文件进行恢复。
这过程就像走钢丝,得小心翼翼的。
oracle中exp,imp(导⼊,导出)的使⽤详解今天说说Oracle数据库的导⼊(imp.exe)和导出(exp.exe)命令的使⽤,我们的电脑⾥⾯安装完Oracle或OracleClient的时候,在我们的安装⽬录⾥⾯就有这两个命令了,⼀般是在你的Oracle安装⽬录下⾯的bin⽂件夹下⾯会有exp.exe和imp.exe这两个⽂件,它们都是在命令⾏下运⾏,⾸先打开你的CMD程序,然后切换到Oracle的bin⽬录下⾯。
下⾯就看看这两个命令的具体⽤法:基本语法和实例: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 exp/imp导出导入工具的使用一. 导出工具 exp1. 它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binexp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移它有三种模式:a. 用户模式:导出用户所有对象以及对象中的数据;b. 表模式:导出用户所有表或者指定的表;c. 整个数据库:导出数据库中所有对象。
2. 导出工具exp交互式命令行方式的使用的例子$exp test/test123@appdbEnter array fetch buffer size: 4096 > 回车Export file: expdat.dmp > m.dmp 生成导出的文件名(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3Export 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 exportedTable(T) or Partition(T:P) to be exported: (RETURN to quit) >要导出的表名nTable(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.parfile=/directory1/username_1.dmp,/directory1/username_2.dmp filesize=2000Mlog=/directory2/username_exp.log参数文件username.par内容userid=username/userpasswordbuffer=8192000compress=ngrants=y说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改filesize指定生成的二进制备份文件的最大字节数(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)二.导入工具 imp1. 它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binimp导入工具将EXP形成的二进制系统文件导入到数据库中.它有三种模式:a. 用户模式:导出用户所有对象以及对象中的数据;b. 表模式:导出用户所有表或者指定的表;c. 整个数据库:导出数据库中所有对象。
Oracle数据库imp/exp导入导出命令(备份与恢复)Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。
今天在这里主要讲一下用命令行来操作oracle数据导入和导出:备份数据1、获取帮助:exp help=y2. 导出一个完整数据库exp user/pwd@instance file=path full=y示例:exp system/system@xc file = c:/hehe full =yimp tax/test@tax file=d:/dbbak.dmp full=y3 、导出一个或一组指定用户所属的全部表、索引和其他对象exp system/manager file=seapark log=seapark owner=seaparkexp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)示例:exp system/system@xc file=c:/hehe owner=uep4、导出一个或多个指定表exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)恢复数据1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seaparkimp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)****************************************************利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。
Oracle数据导⼊导出impexp:未知的命令开头。
忽略了剩
余的⾏
Oracle数据导⼊导出imp/exp 报错,错误提⽰为:未知的命令开头。
忽略了剩余的⾏
后来查询资料才知道应该在cmd的dos命令窗⼝直接执⾏,⽽不是sqlplus.exe
相关的导出命令格式如下:
a.将数据库TEST完全导出,⽤户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
b.将数据库中system⽤户与sys⽤户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
c.将数据库中的表A、B导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(A,B)
相关的导⼊命令格式如下:
a. 将D:\daochu.dmp 中的数据导⼊ TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
imp aichannel/aichannel@HUST full=y file= d:\data\newsmgnt.dmp ignore=y
b. 将d:\daochu.dmp中的表table1 导⼊
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)。
oracle导⼊数据库imp导⼊问题总结⼀、导⼊命令1、单个⽂件导⼊imp hn_dw/hn_dw file=/home/oracle/test.dmp log=/home/oracle/test.log full=y commit=y ignore=yimp hn_dw/hn_dw (⽤户名/密码)file=/home/oracle/test.dmp(⽂件路径) log=/home/oracle/test.log(⽇志路径) full=y commit=y ignore=y参数解释:2、多个⽂件导⼊imp hn_dw/hn_dw file=\(test01.dmp,test02.dmp,test03.dmp\) log=hn_log/test.log full=y commit=y ignore=yimp hn_dw/hn_dw(⽤户名/密码) file=\(test01.dmp,test02.dmp,test03.dmp\) (多个⽂件)log=hn_log/test.log full=y commit=y ignore=y ⼆、查看表空间使⽤率SELECT a.tablespace_name "表空间名",total "表空间⼤⼩",free "表空间剩余⼤⼩",(total - free) "表空间使⽤⼤⼩",total / (1024 * 1024 * 1024) "表空间⼤⼩(G)",free / (1024 * 1024 * 1024) "表空间剩余⼤⼩(G)",(total - free) / (1024 * 1024 * 1024) "表空间使⽤⼤⼩(G)",round((total - free) / total, 4) * 100 "使⽤率 %"FROM (SELECT tablespace_name, SUM(bytes) freeFROM dba_free_spaceGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) totalFROM dba_data_filesGROUP BY tablespace_name) bWHERE a.tablespace_name = b.tablespace_name三、查看表空间数据⽂件1、输⼊命令bai: sqlplus / as sysdba2、select , ?from v$tablespace t1,v$datafile t2 where t1.ts# = t2.ts#;四、扩充表空间alter tablespace PARTNER_DBS add datafile '/home/orcl/app/oracle/product/12.1.0_1sscms1.dbf' size 24576m表空间名:PARTNER_DBS表空间数据⽂件路径: /home/orcl/app/oracle/product/12.1.0/db_1/PARTNER_DBS .DBF2、查看表空间是否开启了⾃动扩展的功能SELECT T.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROM DBA_TABLESPACES T, DBA_DATA_FILES DWHERE T.TABLESPACE_NAME = D.TABLESPACE_NAMEORDER BY TABLESPACE_NAME, FILE_NAME;3、扩⼤表空间的四种⽅法:1、增加数据⽂件ALTER TABLESPACE ***_TRD ADD DATAFILE‘D:\\PRODUCT\10.2.0\ORADATA\DBFILE\TRD_2.DBF’ SIZE 1024M;2、增加数据⽂件并允许⾃动增长ALTER TABLESPACE ***_TRD ADD DATAFILE‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD_2.DBF’ SIZE 1024M AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;3、允许已存在的数据⽂件⾃动增长ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD.DBF’AUTOEXTEND ON NEXT 8M MAXSIZE 10240M;4、⼿⼯改变已存在数据⽂件的⼤⼩ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\DBFILE\TRD.DBF’RESIZE 10240M;五、查看oracle⽤户下所有表select * from dba_tables where owner in ('⽤户名');或者当前⽤户select * from user_tables;六、覆盖之前的表数据oracle10g之后impdp的table_exists_action参数impdp username/password table_exists_action=truncate directory=DATA_PUMP_DIR dumpfile=expdpfilename.dmp logfile=implog.log table_exists_action:skip 是如果已存在表,则跳过并处理下⼀个对象;append是为表增加数据;truncate是截断表,然后为其增加新数据;replace是删除已存在表,重新建表并追加数据;注:使⽤imp命令导⼊的话ignore=y就是覆盖;七、如何查看dmp⽂件是哪个⽤户导出1、打开dmp⽂件找关键词CONNECT 后⾯的bai就是对⽅的⽤户名,执⾏imp userid=⽤户名/密码@orcl fromuser=原来的旧⽤户 touser=新的⽤户file=d:\xxxx.dmp命令成功导⼊,已执⾏检测过。
为了使测试与生产数据保持一致,只需要导出数据的时候,可以将测试库的表truncate,保留其它如索引,trigger,constraints,grants等不用再重新导。
exp时候rows=y,其它全部选n,imp时候rows=y ,其它nignore是否忽略创建错误。
Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。
若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。
若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。
(当索引与数据rows要分两次导入时候,导入索引时候要指定ignore=y,否则索引导不进去。
当数据库中已经有要导入的表,并且表中已经存在一些数据时候,如果不覆盖这些数据,append导入数据到这个表,直接指定ignore=y即可)当表中有long或者lob类型的字段时候,imp的时候对这个表单独imp,要加commit=n,导完一张表提交一次,这样会比加commit=y快。
对含有long或者lob类型字段的表imp时候,加了commit=y,由于long字段很大,数据缓冲很快就会满,每插入一行就会commit一次。
导致很频繁的提交,imp会等待log file sync,导致导入很慢。
show parameter filesystemio_options --应该为setall~~~~~~~~~~~~~~~~导入导出BLOB数据~~~~~~~~~~~~~~~~可以用IMP/EXP条件:1.导入时要确保有该BLOB字段的列的表还未建起来2.在EXP/IMP中参数中指定BUFFER到一定的值,内存必须足够容纳一次预取一行的数据量,有写LOB 列可能达到2G加快exp速度:direct=y (常规路径导出使用sql select语句从表中取出数据,直接路径导出则将数据直接从硬盘读到pga 然后写入导出文件)recordlength=65535 (定义了export i/o缓冲的大小,类似于常规路径导出的buffer参数)直接路径导出的限制:8i以及以下的版本不支持导出客户端和数据库的字符集转换,因此导出前要保证NLS_LANG参数设置正确;815以及以下版本不支持导出含LOBs对象的表;不能使用query参数)加快imp速度:加大temp表空间。
oracle中imp命令详解Oracle的导入实用程序(Importutility)允许从数据库提取数据,并且将数据写入操作系统文件。
imp使用的基本格式:imp [username[/password[@service]]],以下例举imp常用用法。
1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=d:\daochu.dmp log=d:\daochu.log full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seapark impsystem/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1,amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)6. 从多个文件导入imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)log=paycheck, filesize=1G full=y7. 使用参数文件imp system/manager parfile=bible_tables.parbible_tables.par参数文件:#Import the sample tables used for the Oracle8i Database Administrator's Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import8. 增量导入imp system./manager inctype= RECTORE FULL=Y FILE=A Oracle imp/expC:Documentsand Settingsadministrator>exp help=yExport: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 通过输入 EXP命令和用户名/口令,您可以后接用户名/口令的命令:例程: EXPSCOTT/TIGER或者,您也可以通过输入跟有各种参数的 EXP命令来控制“导出”按照不同参数。
Oracle exp imp,备份或导入时注意的事项
本篇主要讲述的是Oracle exp/imp备份导入的实际操作中需要注意的事项的介绍,凡事都不是完美的。
不论哪种计算机语言,不论它的实际操作技巧是如何灵活,都是避免不掉它的缺陷之处,当然在Oracle exp /imp备份导入时。
我们也需要注意一些在实际操作中经常发生的事项。
Oracle exp/imp备份导入注意事项:
(1) 数据库对象已经存在
一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;数据库对象已经存在, 按缺省的imp参数, 则会导入失败如果用了参数ignore=y,
会把Oracle 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生成的文件, 不能导入高版本Oracle exp生成的文件。
Example:普通数据库全部导出和导入:
exp 用户/密码@dbName file=路径.dmp full=y --还有其他的参数,看需要进行填写
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=y commit=y ignore=y --全部导出
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2 --全部导入
以上就是对Oracle exp/imp备份导入注意事项相关的内容的介绍。