导出文件只有500K,导入时却占用了700M的空间,有办法减少吗?

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
40万条记录,导出时用rows = n,导入时,估计系统会按原大小来分配表空间,所以一下就占用了很多的空间,有没有办法减掉一部分。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
因为在导出的时候有storage参数
所以,即使没有数据都要那么多空间
可以导入到idexfile
然后手工改以下
或者用sed命令
最后生成数据的表
就可以了
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
1.compress=n when export
2. create the table using small storage parameters manually before doing import
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
若要将High Water Mark

以上的未使用的空间释放放出来,可使用

ALTER TABLE table DEALLOCATE UNUSED KEEP integer;

若未指定KEEP则会释放High Water Mark以上的未使用的空间。

例如 :

ALTER TABLE dquon DEALLOCATE UNUSED KEEP 10K;

当数据以DELETE指令删除时,并不会改变High Water Mark 的位置,除非以

TRUNCATE TABLEtable_name ,才会改变High Water Mark 的位置。
若你已经import ,可以用这种方式删除未用的空间
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
好象没有太好的办法
只能提取脚本出来重新建表
能重新exp倒可以
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
既然导出的dmp文件只有500k,用ultraedit之类的软件直接打开,将建表的sql提取处理,修改存储参数,然后重新建表即可。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 yangtingkun 发布
[B]既然导出的dmp文件只有500k,用ultraedit之类的软件直接打开,将建表的sql提取处理,修改存储参数,然后重新建表即可。 [/B]


头一回听说可以用ultraedit 打开dmp 文件来提取SQL,你真行。
dmp 文件可是Oracle公司自己格式加密的,只能用imp 处理。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
dmp文件可以用ultraedit打开
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
最初由 jxc_hn 发布
[B]

头一回听说可以用ultraedit 打开dmp 文件来提取SQL,你真行。
dmp 文件可是Oracle公司自己格式加密的,只能用imp 处理。 [/B]

是吗?


看看这个:
用ultraedit打开的test.dmp文件。导出的时候没有导出数据,只是导出了表结构。
 EXPORT:V08.01.07
DNO7
RTABLES
1024
0
28
0
    
Wed Jul 24 11:12:7 2002test.dmp




d`!  


#G###A? ? 
d`!  


#G###A? ? 
 +00:00 8.1.6
TABLE "TEST"
CREATE TABLE "TEST" ("ID" NUMBER(8, 0) NOT NULL ENABLE, "CALLING" NUMBER(20, 0), "CALLED" CHAR(20))PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 LOGGING STORAGE(INITIAL 20971520 NEXT 10485760 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "NO7SPACE"
CREATE INDEX "IDX_TEST" ON "TEST" ("CALLING" )PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 31457280 NEXT 10485760 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "NO7SPACE" LOGGING
CREATE UNIQUE INDEX "IND_TEST_ID" ON "TEST" ("ID" )PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 20971520 NEXT 10485760 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "NO7SPACE" LOGGING
EXIT
EXIT
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
可以将dmp文件用imp导成文本文件(不用ue).方法如下
imp username/password file = yourdump indexfile=name.sql buffer=10240000.对导出的文件编辑,修改存储参数即可.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行