Oracle 11G在用EXP 导出时,空表不能导出解决
- 格式:doc
- 大小:31.00 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 导⼊导出内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
案例情景--在一次Oracle 数据库导出时EXP-00008;ORA-00904:EXP-00000: oracle不同版本导入导出规则案例情景--在一次Oracle 数据库导出时:C:\Documents andSettings\Administrator>exp lsxy/lsxy@lsxy_db file=E:\lsxy. dmp owner=lsxyExport: Release 11.2.0.1.0 - Production on 星期一11月26 14:07:18 2012 Copyright (c)1982, 2009, Oracle and/or its affiliates. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, Data Mining and Real Application Testing options已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集. 正在导出pre-schema 过程对象和操作. 正在导出用户JXUNICOM 的外部函数库名. 导出PUBLIC 类型同义词. 正在导出专用类型同义词. 正在导出用户JXUNICOM 的对象类型定义即将导出JXUNICOM 的对象…. 正在导出数据库链接. 正在导出序号. 正在导出簇定义. 即将导出JXUNICOM 的表通过常规路径…EXP-00008: 遇到ORACLE 错误904ORA-00904: "POLTYP": invalid identifierEXP-00000: 导出终止失败发生EXP-00008: 遇到ORACLE 错误904 的导出报错。
根据网上的资料和总结,分析可能是本地使用的exp导出工具的版本与数据库服务器端exp版本不一致导致。
Oracle导出程序Exp的使⽤Oracle导出程序Exp的使⽤Oracle的导出实⽤程序(Export utility)允许从数据库提取数据,并且将数据写⼊操作系统⽂件。
exp使⽤的基本格式:exp[username[/password[@service]]],以下例举exp常⽤⽤法。
1. 获取帮助exp help=y2. 导出⼀个完整数据库exp system/manager file=bible_db log=dible_db full=y3. 导出数据库定义⽽不导出数据exp system/manager file=bible_db log=dible_db full=y rows=n4. 导出⼀个或⼀组指定⽤户所属的全部表、索引和其他对象exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner= (seapark,amy,amyc,harold)注意:在导出⽤户时,尽管已经得到了这个⽤户的所有对象,但是还是不能得到这些对象引⽤的任何同义词。
解决⽅法是⽤以下的SQL*Plus命令创建⼀个脚本⽂件,运⾏这个脚本⽂件可以获得⼀个重建seapark所属对象的全部公共同义词的可执⾏脚本,然后在⽬标数据库上运⾏该脚本就可重建同义词了。
SET LINESIZE 132 SET PAGESIZE 0 SET TRIMSPOOL ON SPOOL c:\seapark.syn SELECT 'Create public synonym'||synonym_name ||' for '||table_owner||'.'||table_name||';' FROM dba_synonyms WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC'; SPOOL OFF5. 导出⼀个或多个指定表exp seapark/seapark file=tank log=tank tables=tank exp system/manager file=tank log=tank tables=seapark.tank exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)6. 估计导出⽂件的⼤⼩全部表总字节数:SELECT sum(bytes)FROM dba_segmentsWHERE segment_type = 'TABLE';seapark⽤户所属表的总字节数:SELECT sum(bytes)FROM dba_segmentsWHERE owner = 'SEAPARK'AND segment_type = 'TABLE';seapark⽤户下的aquatic_animal表的字节数:SELECT sum(bytes)FROM dba_segmentsWHERE owner = 'SEAPARK'AND segment_type = 'TABLE'AND segment_name = 'AQUATIC_ANIMAL';7. 导出表数据的⼦集(oracle8i以上)NT系统:exp system/manager query='Where salad_type=''FRUIT''' tables=amy.salad_type file=fruit log=fruitUNIX系统:exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amy.salad_type file=fruit log=fruit8. ⽤多个⽂件分割⼀个导出⽂件exp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G tables=hr.paycheck 9. 使⽤参数⽂件exp system/manager parfile=bible_tables.parbible_tables.par参数⽂件:#Export the sample tables used for the Oracle8i Database Administrator's Bible. file=bible_tables log=bible_tables tables=( amy.artist amy.books seapark.checkup seapark.items )10. 增量导出"完全"增量导出(complete),即备份整个数据库exp system/manager inctype=complete file=990702.dmp"增量型"增量导出(incremental),即备份上⼀次备份后改变的数据exp system/manager inctype=incremental file=990702.dmp"累计型"增量导出(cumulative),即备份上⼀次"完全"导出之后改变的数据exp system/manager inctype=cumulative file=990702.dmp附:常⽤参数说明参数说明file指定导出⽂件名。
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 exp导出数据库部分记录随着数据库数据量的不断增加,经常需要对数据库中的部分记录进行导出操作,以便在其他环境中进行数据分析或备份恢复。
本文将介绍如何使用Oracle exp命令来导出数据库中的部分记录,以及一些注意事项和常见问题的解决方法。
一、准备工作在进行数据导出前,需要确保以下几点:1. 确认目标数据库的连接信息,包括用户名、密码、数据库实例名等;2. 确认要导出的表名和导出条件,如导出某表中满足特定条件的记录;3. 确认导出文件的存储位置和命名规范。
二、使用exp命令导出数据1. 登入数据库使用命令行或其他数据库管理工具登入Oracle数据库,输入用户名和密码进行连接。
2. 执行exp命令在数据库连接成功后,执行exp命令进行数据导出操作。
exp命令的一般语法如下:exp username/passworddbname tables=tablenamequery="where..."其中,username是数据库用户名,password是用户密码,dbname 是数据库实例名,tablename是要导出的表名,query是导出条件。
要导出表student中学生尊称为“张三”的记录,可以执行以下命令:exp scott/tigerorcl tables=student query="where name='张三'"3. 导出文件存储执行exp命令后,系统会提示输入导出文件的名称和存储位置。
用户可以根据实际需求进行命名和存储路径的设定。
三、注意事项在使用exp命令进行数据导出时,需要注意以下几点:1. 导出范围根据实际需求,确定要导出的数据范围,避免导出过多或不必要的数据,造成资源浪费。
2. 导出条件在使用query参数时,需要确保条件语句正确无误,避免导出错误的数据或漏掉需要导出的记录。
3. 导出文件导出文件的存储路径需要提前确认,并确保有足够的磁盘空间进行存储。
oracle exp导出多表数据query条件写法-回复如何使用Oracle EXP导出多表数据的查询条件写法导出多个表的数据是数据库管理中常见的操作之一。
在Oracle数据库中,我们可以使用EXP工具来实现这一功能。
在进行多表数据导出时,我们可以通过添加查询条件来限制导出的数据范围,以提高导出效率和准确性。
本文将详细介绍如何使用Oracle EXP工具导出多个表的数据,并通过查询条件来限制导出的数据范围。
我们将一步一步引导您完成相关操作。
第一步:连接到Oracle数据库在使用Oracle EXP工具之前,我们首先需要连接到要导出数据的Oracle 数据库。
可以使用以下命令连接到数据库:SQL> sqlplus 用户名/密码实例名请确保您具有足够的权限来连接到数据库,并且可以访问要导出数据的表。
第二步:查看要导出的表在连接到数据库后,我们可以使用以下命令查看要导出的表:SQL> select table_name from user_tables;该命令将显示当前用户拥有的所有表的列表。
根据需要,选择您要导出的表。
第三步:使用查询条件限制导出的数据范围在导出多个表的数据时,我们可以使用WHERE语句添加查询条件来限制导出的数据范围。
以下是一个简单的例子:SQL> SELECT * FROM table_name WHERE condition;其中,table_name是要导出数据的表名,condition是要添加的查询条件。
通过在WHERE子句中添加条件,我们可以从指定的表中只导出满足条件的数据。
请根据需要自定义查询条件,并根据实际情况调整表名。
您可以根据数据中的特定字段添加条件,如日期范围、某个字段值等。
第四步:使用Oracle EXP工具导出数据在连接到数据库并设置查询条件后,我们可以使用Oracle EXP工具导出数据。
EXP工具的基本语法如下:exp 用户名/密码[实例名] file=导出文件路径tables=(表1, 表2, ...) query="查询条件"其中,用户名和密码是连接到数据库所需的凭据。
泛微协同办公平台E-cology 系统重装迁移指导手册Weaver e-cology目录目录 (2)第一部分E-COLOGY 系统迁移重装方法 (1)一. 准备工作 (1)二. 具体步骤 (1)1.程序文件恢复 (1)2.数据文件恢复 (1)3.数据库恢复 (2)4.Resin 服务恢复 (5)5.JDK 恢复 (5)6.集群环境共享目录恢复 (5)7.IP 地址变更的相关修改 (6)8.其他 (6)第二部分解决路径不同的问题 (9)一. R ESIN 配置文件的调整 (9)二. 数据库配置记录的调整 (10)1.【设置中心】→【参数设置】→【系统设置】中文档、图片、邮件副本、备份目录设置 (11)2.修改印章图片存储路径指向 (12)3.修改文档模板存储路径指向 (13)4.修改文档(镜像文件)存储路径指向 (14)5.修改合同模板表存储路径 (15)6.修改html 表单模板的路径 (17)7.修改邮件文件存放目录 (19)8.修改邮件副本文件存放目录 (19)9.修改全文检索的路径(若使用了此功能) (21)10.修改文档元素缩略图的路径 (21)11.修改表单建模的模板路径 (21)第一部分e-cology 系统迁移重装方法要还原一套 e-cology 系统必须具备以下条件,请在重装或迁移之前务必要准备好确保没有问题➢对应版本的 Resin、JDK(原环境或安装光盘中,如 D:\weaver\JDK 和 D:\weaver\Resin)➢e-cology 系统的程序文件(如 D:\weaver\ecology)➢e-cology 系统的文件数据:【系统设置】中设置的邮件副本存放目录、图片存放目录、文件存放目录、文件备份目录中的文件。
(如D:\weaver\ecology\filesystem,这是系统默认路径,如果设置到其他路径,就要根据实际路径去找,如 E:\filessystem)➢e-cology 数据库文件,即数据库的备份。
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⼯具将⽂件中的对象和数据导⼊到⼀个或是多个⽅案中。
Oracle 11G在用EXP 导出时,空表不能导出解决
11G中有个新特性,当表无数据时,不分配segment,以节省空间
解决方法:
1、insert一行,再rollback就产生segment了。
该方法是在在空表中插入数据,再删除,则产生segment。
导出时则可导出空表。
2、设置deferred_segment_creation 参数
show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
SQL> alter system set deferred_segment_creation=false;
系统已更改。
SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean FALSE
该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。
需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。
如需导出之前的空表,只能用第一种方法。
搞了我好久,最后查到这个方法。
先查询一下当前用户下的所有空表
select table_name from user_tables where NUM_ROWS=0;
用以下这句查找空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0把查询结果导出,执行导出的语句
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_AQ$_MEM_MC_H allocate extent;
alter table AQ$_AQ$_MEM_MC_G allocate extent;
alter table AQ$_AQ$_MEM_MC_I allocate extent;
alter table AQ$_AQ_PROP_TABLE_T allocate extent;
alter table AQ$_AQ_PROP_TABLE_H allocate extent;
alter table AQ$_AQ_PROP_TABLE_G allocate extent;
alter table AQ$_AQ_PROP_TABLE_I allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_SYS$SERVICE_METRICS_TAB_T allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_H allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_G allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_I allocate extent;
然后再执行
exp 用户名/密码@数据库名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log 成功!。