最初由 ZALBB 发布
[B]我也遇过这个问题,我的情况是把表导入到测试库后,要移动表的表空间。
只导空结构时也遇上和你一样的麻烦。但我的磁盘够大,,,。
出个点子:写个过程,用DBMS_METADATA.GET_DDL来提取表结构,发现
storage 时,则截断后面那部分,,, [/B]
写个过程,用DBMS_METADATA.GET_DDL来提取表结构,
同时用子程序SET_TRANSFORM_PARAM 来设置输出的内容,如下:
SQL> create table cjf.bbt1 (a number(10),b varchar2(10));
表已创建。
SQL> select dbms_lob.substr(DBMS_METADATA.GET_DDL('TABLE','BBT1','CJF'),dbms_lob
.getlength(DBMS_METADATA.GET_DDL('TABLE','BBT1','CJF')),1) from dual;
CREATE TABLE "CJF"."BBT1"
("A" NUMBER(10,0),
"B" VARCHAR2(10)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS"
SQL> exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA. SESSION_TRANSFORM,'ST
ORAGE',false);
PL/SQL 过程已成功完成。
SQL> select dbms_lob.substr(DBMS_METADATA.GET_DDL('TABLE','BBT1','CJF'),dbms_lob
.getlength(DBMS_METADATA.GET_DDL('TABLE','BBT1','CJF')),1) from dual;
CREATE TABLE "CJF"."BBT1"
("A" NUMBER(10,0),
"B" VARCHAR2(10)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
TABLESPACE "USERS"
SQL> |