impdp的transform 选项 处理 导入时空间不足引起的ORA-01659
来源:互联网 发布:数据库和表 编辑:程序博客网 时间:2024/04/25 17:57
transform 可用在这样的场景中:
要将SLKTESTNEW模式下的表导入到另一个库下的SH_SMCVDMS_SLK_OWSLK模式下。
该模式下对象实际所占的大小:
SQL> select sum(bytes)/1024/1024 from dba_segments where owner=upper('SLKTESTNEW');
SUM(BYTES)/1024/1024
--------------------
11747.25 -----------很大,会计算所有hwm下的block
导出语句:
expdp system/1111sys directory=dmpdata SCHEMAS=SLKTESTNEW dumpfile=owslk20110630.dmp logfile=owslk20110630.log
导出数据后的dmp大小:
$ du -m OWSLK20110630.DMP
80.63 OWSLK20110630.DMP ----很小,因为expdp只把有效block导出
若不加transform,且导入的表空间小于前面计算的11747.25,中间报错:
ORA-01659: unable to allocate MINEXTENTS beyond 14 in tablespace SH_SMCVDMS_SLK_OWSLK_DATA01。
也不必为了80M的数据再加入11G的空间。那就用impdp的transform 选项 实现导入。
impdp的transform 选项决定是否去掉ddl语句的各种存储参数
Purpose
Enables you to alter object creation DDL for specific objects, as well as for all applicable objects being loaded.
Syntax and Description
TRANSFORM = transform_name:value[:object_type]
例如:transform=storage:n:table ,去掉ddl的storage参数,只对table有效,若没有table这个子句的话,就对所有对象有效,比如index
sql_file 选项加入后只是模拟导入过程,形成sql脚本,不会真正的导入。通过脚本可查看storage选项是否存在,segment_attributes是否存在。
使用transform可降低导入数据的存储需求,比如若源数据需要30G的表空间,但导出数据后只有300M,再导入的时候不必分配30G,由于transform起作用,把storage去掉了。
举例:
没指定transform,导入形成的dll
CREATE TABLE "SH_SMCVDMS_SLK_OWSLK"."DE_DEMESSAGEIDMAP"
( "DEMESSAGEID" CHAR(40) NOT NULL ENABLE,
..................................
"UPDATE_BY" CHAR(10)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 2952790016 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 -----先要初始化这么大的空间出来,这个不必要。若空间不足导入会终止
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "SH_SMCVDMS_SLK_OWSLK_DATA01" ;
加入了transform=storage:n
CREATE TABLE "SH_SMCVDMS_SLK_OWSLK"."DE_DEMESSAGEIDMAP"
( "DEMESSAGEID" CHAR(40) NOT NULL ENABLE,
..................................
"UPDATE_BY" CHAR(10)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
TABLESPACE "SH_SMCVDMS_SLK_OWSLK_DATA01" ; ------------把storage部分去掉了,这样可不必需要那么多的空间,按数据库默认的initial 64k.
加入了transform=segment_attributes:n
CREATE TABLE "SH_SMCVDMS_SLK_OWSLK"."DE_DEMESSAGEIDMAP"
( "DEMESSAGEID" CHAR(40) NOT NULL ENABLE,
..................................
"UPDATE_BY" CHAR(10)
) ; ---------------这个很干净了,create table的时候都是使用数据库的默认存储参数,表空间也使用的是用户默认表空间
---模拟导入,形成sql脚本:
impdp system/1111directory=dmp transform=storage:n REMAP_SCHEMA="SLKTESTNEW:sh_smcvdms_slk_owslk" remap_tablespace="SH_DMS_SLK_OWSGM_DATA01:sh_smcvdms_slk_owslk_data01" remap_tablespace="SH_DMS_SLK_OWSGM_LOB01:SH_SMCVDMS_SLK_OWSLK_LOB01" dumpfile=OWSLK20110630.DMP logfile=owslk20110702_storage_n.log sqlfile=owslk0702_storage_n.sql
----真正导入:
impdp system/1111 directory=dmp transform=storage:n REMAP_SCHEMA="SLKTESTNEW:sh_smcvdms_slk_owslk" remap_tablespace="SH_DMS_SLK_OWSGM_DATA01:sh_smcvdms_slk_owslk_data01" remap_tablespace="SH_DMS_SLK_OWSGM_LOB01:SH_SMCVDMS_SLK_OWSLK_LOB01" dumpfile=OWSLK20110630.DMP logfile=owslk20110702_storage_n.log table_exists_action=replace
====end=====
- impdp的transform 选项 处理 导入时空间不足引起的ORA-01659
- 由impdp导入引起的oracle用户权限的问题
- 记一次impdp导入数据时的ORA-31696错误
- oracle 由于impdp 引起的表统计信息被锁 ORA-20005: object statistics are locked
- impdp的TABLE_EXISTS_ACTION参数选项
- impdp的TABLE_EXISTS_ACTION参数选项
- impdp导入遇到的问题
- 关于 IMPDP 导入问题 ,关于ora-39125 错误 “对象已存在” 的解决
- Oracle 10g 数据库导入工具impdp使用Windows的网络驱动器 ORA-31640
- impdp导入时ORA-39125
- msSQL 引起磁盘空间不足的解决方法
- MSSQL errorlog 引起磁盘空间不足的解决方法
- impdp导入ORA-31693 ORA-38500
- C盘空间不足的处理方法
- 【IMPDP】使用 TRANSFORM选项去掉表空间和存储子句
- 【IMPDP】使用 TRANSFORM选项去掉表空间和存储子句
- 【IMPDP】使用 TRANSFORM选项去掉表空间和存储子句
- 数据泵IMPDP 导入工具的使用
- expdp, impdp
- 透视理解
- ASP也写邮箱注册机-sohu邮箱批量注册器-ASP高级编程交流
- XML序列化点滴
- 显示各位数实验
- impdp的transform 选项 处理 导入时空间不足引起的ORA-01659
- 大小写的转换
- EXPDP和IMPDP使用说明
- 生成随机数实验
- china-pub的世界一流网络水平
- 随机生成图形
- 能动的图形实验
- oracle树结构查询----connect by语法详解
- 两位或多位数乘法的计算编程