`
itspace
  • 浏览: 961066 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Oracle exp compress参数引起的空间浪费

 
阅读更多
今天碰到一个比较有趣的问题,记录一下。

客户需要将表结构导出来做测试,并不将内容导出。
$exp ydjy/ydjy file=/tmp/ggs.dmp ROWS=n OWNER=ydjy STATISTICS=none
并用以下语句导入:
$imp zhoul/zhoul file=/tmp/ydjy.dmp fromuser=ydjy touser=zhoul

导入的时候出现错误:
"CREATE TABLE "SHENFENGZHENGXIUGAI" ("AAC001" NUMBER(16, 0) NOT NULL ENABLE, "EAC001" VARCH"
"AR2(12) NOT NULL ENABLE, "AAA029" VARCHAR2(3) NOT NULL ENABLE, "AAE135" VAR"
"CHAR2(20) NOT NULL ENABLE, "AAA130" VARCHAR2(6), "AAC003" VARCHAR2(50) NOT "
"NULL ENABLE, "AAC004" VARCHAR2(1) NOT NULL ENABLE, "AAC005" VARCHAR2(3) NOT"
" NULL ENABLE, "AAC006" NUMBER(8, 0) NOT NULL ENABLE, "AAC007" NUMBER(8, 0),"
" "AAC009" VARCHAR2(3) NOT NULL ENABLE, "AAC010" VARCHAR2(100), "AAC011" VAR"
"CHAR2(3), "AAC012" VARCHAR2(3) NOT NULL ENABLE, "AAC014" VARCHAR2(3), "AAC0"
"15" VARCHAR2(3), "AAC017" VARCHAR2(3), "AAC020" VARCHAR2(3), "AAE005" VARCH"
"AR2(20), "AAE006" VARCHAR2(100), "AAE007" VARCHAR2(6), "AAE013" VARCHAR2(20"
"00), "AAZ308" NUMBER(16, 0), "AAE159" VARCHAR2(50), "AAB401" VARCHAR2(20), "
""PRSENO" NUMBER(12, 0) NOT NULL ENABLE)  PCTFREE 10 PCTUSED 40 INITRANS 1 M"
"AXTRANS 255 STORAGE(INITIAL 192937984 NEXT 1048576 FREELISTS 1 FREELIST GRO"
"UPS 1 BUFFER_POOL DEFAULT)                    LOGGING NOCOMPRESS"
IMP-00017: following statement failed with ORACLE error 1658:
"CREATE TABLE "AC01MERGE" ("AAC001" NUMBER(16, 0) NOT NULL ENABLE, "EAC001" "
"VARCHAR2(12) NOT NULL ENABLE, "AAA029" VARCHAR2(3) NOT NULL ENABLE, "AAE135"
"" VARCHAR2(20) NOT NULL ENABLE, "AAA130" VARCHAR2(6), "AAC003" VARCHAR2(50)"
" NOT NULL ENABLE, "AAC004" VARCHAR2(1) NOT NULL ENABLE, "AAC005" VARCHAR2(3"
") NOT NULL ENABLE, "AAC006" NUMBER(8, 0) NOT NULL ENABLE, "AAC007" NUMBER(8"
", 0), "AAC009" VARCHAR2(3) NOT NULL ENABLE, "AAC010" VARCHAR2(100), "AAC011"
"" VARCHAR2(3), "AAC012" VARCHAR2(3) NOT NULL ENABLE, "AAC014" VARCHAR2(3), "
""AAC015" VARCHAR2(3), "AAC017" VARCHAR2(3), "AAC020" VARCHAR2(3), "AAE005" "
"VARCHAR2(20), "AAE006" VARCHAR2(100), "AAE007" VARCHAR2(6), "AAE013" VARCHA"
"R2(2000), "AAZ308" NUMBER(16, 0), "AAE159" VARCHAR2(50), "AAB401" VARCHAR2("
"20), "PRSENO" NUMBER(12, 0) NOT NULL ENABLE)  PCTFREE 10 PCTUSED 40 INITRAN"
"S 1 MAXTRANS 255 STORAGE(INITIAL 3145728 NEXT 1048576 FREELISTS 1 FREELIST "
"GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRESS"
IMP-00003: ORACLE error 1658 encountered
ORA-01658: unable to create INITIAL extent for segment in tablespace USERS
IMP-00017: following statement failed with ORACLE error 1658:

查看了一下数据文件是自动扩展打开的
FILE_NAME                      AUT
------------------------------ ---
/lank/db/lank/users01.dbf      YES

怀疑自动扩展是不是有bug,手工扩展一下数据文件,发现空间不足,当然出现此类错误,最好解决了,解决过程不说明了。
SQL> alter database datafile '/lank/db/lank/users01.dbf' resize 120m;
alter database datafile '/lank/db/lank/users01.dbf' resize 120m
*
ERROR at line 1:
ORA-01237: cannot extend datafile 4
ORA-01110: data file 4: '/lank/db/lank/users01.dbf'
ORA-19502: write error on file "/lank/db/lank/users01.dbf", blockno 14721
(blocksize=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 28: No space left on device
Additional information: 4
Additional information: 14721
Additional information: -1

导入表结构发现这张表竟然达到了190M,而这张表为空,到这里有经验的人可能一下子看出来了原因了


SEGMENT_NAME                        BYTES
------------------------------ ----------
SHENFENGZHENGXIUGAI             192937984

原来在exp时有个参数COMPRESS主要用于是否将segment的extent在导出时是否合并,而在上述导出语句中,我们可以看到compress没有加,也就是说保持默认,也就是说导出时Oracle将表结构的extent合并到一个extent中。
Keyword    Description (Default)      Keyword      Description (Default)
--------------------------------------------------------------------------
USERID     username/password          FULL         export entire file (N)
BUFFER     size of data buffer        OWNER        list of owner usernames
FILE       output files (EXPDAT.DMP)  TABLES       list of table names
COMPRESS   import into one extent (Y) RECORDLENGTH length of IO record
GRANTS     export grants (Y)          INCTYPE      incremental export type
INDEXES    export indexes (Y)         RECORD       track incr. export (Y)
DIRECT     direct path (N)            TRIGGERS     export triggers (Y)
LOG        log file of screen output  STATISTICS   analyze objects (ESTIMATE)
ROWS       export data rows (Y)       PARFILE      parameter filename
CONSISTENT cross-table consistency(N) CONSTRAINTS  export constraints (Y)

OBJECT_CONSISTENT    transaction set to read only during object export (N)
FEEDBACK             display progress every x rows (0)
FILESIZE             maximum size of each dump file
FLASHBACK_SCN        SCN used to set session snapshot back to
FLASHBACK_TIME       time used to get the SCN closest to the specified time
QUERY                select clause used to export a subset of a table
RESUMABLE            suspend when a space related error is encountered(N)
RESUMABLE_NAME       text string used to identify resumable statement
RESUMABLE_TIMEOUT    wait time for RESUMABLE
TTS_FULL_CHECK       perform full or partial dependency check for TTS
VOLSIZE              number of bytes to write to each tape volume
TABLESPACES          list of tablespaces to export
TRANSPORT_TABLESPACE export transportable tablespace metadata (N)
TEMPLATE             template name which invokes iAS mode export

Export terminated successfully without warnings.


问题重现:

SQL> conn ggs/ggs
Connected.
SQL> create table zhoul (name char(2000));

Table created.
可以看到刚创建出来的表格INITIAL_EXTENT为65536
SQL> select INITIAL_EXTENT,NEXT_EXTENT from user_tables where TABLE_NAME='ZHOUL';

INITIAL_EXTENT NEXT_EXTENT
-------------- -----------
         65536     1048576

插入一定数据量之后,表格扩展到了75497472字节
SQL> select count(*) from zhoul;

  COUNT(*)
----------
     24576


SQL> select sum(BYTES) from user_extents where SEGMENT_NAME='ZHOUL';

SUM(BYTES)
----------
  75497472

接下来用compress取不同值导出,观察建表脚本。
exp ggs/ggs tables=zhoul rows=n  file=/tmp/zhoul02.dmp

[ora10g@linux-64 ~]$ strings /tmp/zhoul01.dmp
EXPORT:V10.02.01
DGGS
RTABLES
8192
                                        Fri Oct 28 11:26:51 2011/tmp/zhoul01.dmp
#G#G
#G#G
+00:00
BYTE
UNUSED
INTERPRETED
DISABLE:ALL
METRICST
TABLE "ZHOUL"
CREATE TABLE "ZHOUL" ("NAME" CHAR(2000))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 75497472 NEXT 1048576 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRESS
METRICSTreferential integrity constraints
METRICET 0
METRICSTtriggers
METRICET 0
METRICSTbitmap, functional and extensible indexes
METRICET 0
METRICSTposttables actions
METRICET 0
METRICSTPost-inst procedural actions
METRICET 0
METRICETG0
EXIT
EXIT


exp ggs/ggs tables=zhoul rows=n compress=n file=/tmp/zhoul02.dmp

[ora10g@linux-64 ~]$ strings /tmp/zhoul02.dmp
EXPORT:V10.02.01
DGGS
RTABLES
8192
                                        Fri Oct 28 11:27:46 2011/tmp/zhoul02.dmp
#G#G
#G#G
+00:00
BYTE
UNUSED
INTERPRETED
DISABLE:ALL
METRICST
TABLE "ZHOUL"
CREATE TABLE "ZHOUL" ("NAME" CHAR(2000))  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRESS
METRICSTreferential integrity constraints
METRICET 0
METRICSTtriggers
METRICET 0
METRICSTbitmap, functional and extensible indexes
METRICET 0
METRICSTposttables actions
METRICET 0
METRICSTPost-inst procedural actions
METRICET 0
METRICETG0
EXIT
EXIT

分享到:
评论
1 楼 孤星119 2012-07-09  
好熟悉的数据库字段啊, 上家公司做的项目每天都跟这些字段打招呼。
AAC001 人员内码? AAC003 人员姓名? AAC004 性别? AAE135 险种编码?AAB001 单位内码?  ……  不知道记错没有。 难道和博主曾在同一家公司? 呵呵

相关推荐

    Oracle 10gR2压缩(Compress)技术

    Oracle 10gR2压缩(Compress)技术 1 1、oracle压缩简介 1 2、oracle压缩优点 2 3、压缩分类 2 3.1 表级压缩 2 3.2 表空间级压缩 3 3.3 物化视图压缩 3 3.4 分区表压缩 3 3.5 索引压缩 4 3.6 数据压缩方法 4 4、如何...

    Oracle Advanced Compression Option (ACO) 白皮书

    Oracle高级压缩技术介绍白皮书。 Oracle Database 11g Release 1 introduced the Advanced Compression Option to help customers cope with these challenges. Innovations in Oracle compression technologies ...

    oracle 导入导出命令.txt

    oracle导入导出常用命令文档 常用的exp关键字 1、full用于导出整个数据库,在rows=n一起使用,导出整个数据库的结构。 如:exp userid=gwm/gwm file=/test.dmp log=test.log full=y rows=n direct=y 2、OWNER和...

    commons-compress包

    apache.commons.compress 第三方开源软件。能解压,压缩文件。里面包括commons-compress-1.9、commons-compress-1.2.1的版本。 当遇到这种错误,应该重点关注Caused by:后面的内容 Caused by:xxx Unsupported major....

    Oracle基本建表语句

    希望这个文档对喜欢学习Oracle的同学有所帮助

    oracle详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    commons-compress-1.4.1-API文档-中文版.zip

    赠送jar包:commons-compress-1.4.1.jar; 赠送原API文档:commons-compress-1.4.1-javadoc.jar; 赠送源代码:commons-compress-1.4.1-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.4.1.pom; 包含...

    commons-compress-1.21-API文档-中文版.zip

    赠送jar包:commons-compress-1.21.jar; 赠送原API文档:commons-compress-1.21-javadoc.jar; 赠送源代码:commons-compress-1.21-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.21.pom; 包含翻译后...

    JSCompress.rar

    JSCompress

    commons-compress-1.19-API文档-中文版.zip

    赠送jar包:commons-compress-1.19.jar; 赠送原API文档:commons-compress-1.19-javadoc.jar; 赠送源代码:commons-compress-1.19-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.19.pom; 包含翻译后...

    commons-compress-1.20-API文档-中英对照版.zip

    赠送jar包:commons-compress-1.20.jar; 赠送原API文档:commons-compress-1.20-javadoc.jar; 赠送源代码:commons-compress-1.20-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.20.pom; 包含翻译后...

    commons-compress.jar包

    commons-compress.jar,包括commons-compress-1.0.jar和commons-compress-1.8.jar两个jar包,等你来拿。

    最全的oracle常用命令大全.txt

    su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp" 累计备份的SH文件:exp_cumu.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=...

    commons-compress-1.20-API文档-中文版.zip

    赠送jar包:commons-compress-1.20.jar; 赠送原API文档:commons-compress-1.20-javadoc.jar; 赠送源代码:commons-compress-1.20-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.20.pom; 包含翻译后...

    compress-1.7-src

    commons-compress-1.7-src

    KIC_Compress.KD

    KIC_Compress.KD

    compress-lzf-1.0.3-API文档-中英对照版.zip

    赠送jar包:compress-lzf-1.0.3.jar; 赠送原API文档:compress-lzf-1.0.3-javadoc.jar; 赠送源代码:compress-lzf-1.0.3-sources.jar; 赠送Maven依赖信息文件:compress-lzf-1.0.3.pom; 包含翻译后的API文档:...

    commons-compress-1.8.1-API文档-中文版.zip

    赠送jar包:commons-compress-1.8.1.jar; 赠送原API文档:commons-compress-1.8.1-javadoc.jar; 赠送源代码:commons-compress-1.8.1-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.8.1.pom; 包含...

    apache-common-compress.rar

    用于压缩/解压缩的java开发工具包,基本上主流格式全包含,其中apache-common-compress内有5个jar包,两个是test的不用管,剩余三个,一个是源码包,一个是开发包另一个是javadoc。解压除RAR外的所有格式。 apache-...

    commons-compress-1.18.jar下载

    没有积分的可以去这个网站下载:http://commons.apache.org/proper/commons-compress/download_compress.cgi

Global site tag (gtag.js) - Google Analytics