Oracle 從Dump 檔案裡提取 DDL 語句 方法說明

來源:互聯網
上載者:User

有關Dump 檔案的命令有exp/imp 和 expdp/impdp。 這四個命令之前都有整理過相關的文章。

 

ORACLE EXP/IMP 說明

http://blog.csdn.net/tianlesoftware/article/details/4718366

 

exp/imp 與 expdp/impdp 對比 及使用中的一些最佳化事項

http://blog.csdn.net/tianlesoftware/article/details/6093973

 

Oracle expdp/impdp 使用樣本

http://blog.csdn.net/tianlesoftware/article/details/6260138

 

Oracle 10g Data Pump Expdp/Impdp 詳解

http://blog.csdn.net/tianlesoftware/article/details/4674224

 

Oracle expdp/impdp 從高版本 到 低版本 樣本

http://blog.csdn.net/tianlesoftware/article/details/6533421

 

 

對於Dump 檔案,我們不能直接提取出Data資料,但是我們可以通過相關的參數,從Dump檔案中提取出對應的DDL 語句。

(1)如果是匯出匯入(exp/imp),那麼是indexfile參數。

(2)如果是資料泵(expdp/impdp),那麼是sqlfile 參數。

 

準備工作:

SYS@anqing1(rac1)> create user dvdidentified by dvd;

User created.

SYS@anqing1(rac1)> grant dba to dvd;

Grant succeeded.

SYS@anqing1(rac1)> conn dvd/dvd;

Connected.

DVD@anqing1(rac1)> create table t1(idnumber);

Table created.

DVD@anqing1(rac1)> insert into t1values(1);

1 row created.

DVD@anqing1(rac1)> commit;

Commit complete.

DVD@anqing1(rac1)> create index idx_t1on t1(id);

Index created.

DVD@anqing1(rac1)>

 

 

一.使用匯出匯入命令

 

1.1 匯出dvd 使用者的資料,產生dump檔案

[oracle@rac1 ~]$ exp dvd/dvd file=dvd.dmpowner=dvd       

 

Export: Release 10.2.0.4.0 - Production onWed Sep 21 19:50:14 2011

 

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 

 

Connected to: Oracle Database 10gEnterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, Real ApplicationClusters, OLAP, Data Mining

and Real Application Testing options

Export done in US7ASCII character set andAL16UTF16 NCHAR character set

server uses ZHS16GBK character set(possible charset conversion)

 

About to export specified users ...

. exporting pre-schema procedural objectsand actions

. exporting foreign function library namesfor user DVD

. exporting PUBLIC type synonyms

. exporting private type synonyms

. exporting object type definitions foruser DVD

About to export DVD's objects ...

. exporting database links

. exporting sequence numbers

. exporting cluster definitions

. about to export DVD's tables via ConventionalPath ...

. . exporting table                             T1          1 rows exported

EXP-00091: Exporting questionablestatistics.

. exporting synonyms

. exporting views

. exporting stored procedures

. exporting operators

. exporting referential integrityconstraints

. exporting triggers

. exporting indextypes

. exporting bitmap, functional andextensible indexes

. exporting posttables actions

. exporting materialized views

. exporting snapshot logs

. exporting job queues

. exporting refresh groups and children

. exporting dimensions

. exporting post-schema procedural objectsand actions

. exporting statistics

Export terminated successfully withwarnings.

 

1.2 從dump 檔案裡提取DDL語句

 

[oracle@rac1 ~]$ imp dvd/dvd file=dvd.dmpfromuser=dvd touser=dvd indexfile=dvd.sql

 

Import: Release 10.2.0.4.0 - Production onWed Sep 21 19:50:50 2011

 

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

 

 

Connected to: Oracle Database 10gEnterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, Real ApplicationClusters, OLAP, Data Mining

and Real Application Testing options

 

Export file created by EXPORT:V10.02.01 viaconventional path

import done in US7ASCII character set andAL16UTF16 NCHAR character set

import server uses ZHS16GBK character set (possiblecharset conversion)

. . skipping table "T1"                              

 

Import terminated successfully withoutwarnings.

 

這裡要注意2點:

(1)    該import 命令並沒有真正的import data,而只是產生了我們對應使用者下所有DDL的sql 語句。

(2)    對於表的DDL語句,用REM 進行了注釋。

 

[oracle@rac1 ~]$ cat dvd.sql

 

REM CREATE TABLE "DVD"."T1" ("ID" NUMBER)PCTFREE 10 PCTUSED 40 INITRANS

REM 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1

REM BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING NOCOMPRESS ;

REM ... 1 rows

CONNECT DVD;

CREATE INDEX "DVD"."IDX_T1"ON "T1" ("ID" ) PCTFREE 10 INITRANS 2 MAXTRANS

255 STORAGE(INITIAL 65536 FREELISTS 1FREELIST GROUPS 1 BUFFER_POOL

DEFAULT) TABLESPACE "USERS"LOGGING ;

 

如果只想看索引的DDL,那麼可以用grep命令,講REM 的不顯示。

 

Linux Grep 命令說明

http://blog.csdn.net/tianlesoftware/article/details/6277193

 

[oracle@rac1 ~]$ cat dvd.sql|grep -v REM

 

CONNECT DVD;

CREATE INDEX"DVD"."IDX_T1" ON "T1" ("ID" ) PCTFREE10 INITRANS 2 MAXTRANS

255 STORAGE(INITIAL 65536 FREELISTS 1FREELIST GROUPS 1 BUFFER_POOL

DEFAULT) TABLESPACE "USERS"LOGGING ;

 

 

二.資料泵(expdp/impdp)

 

2.1 匯出dvd使用者的資料

[oracle@rac1 ~]$ expdp dvd/dvddirectory=backup dumpfile=dvd.dmp schemas=dvd

 

Export: Release 10.2.0.4.0 - Production onWednesday, 21 September, 2011 20:16:59

 

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

 

Connected to: Oracle Database 10gEnterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, Real ApplicationClusters, OLAP, Data Mining

and Real Application Testing options

FLASHBACK automatically enabled to preservedatabase integrity.

Starting "DVD"."SYS_EXPORT_SCHEMA_01":  dvd/******** directory=backupdumpfile=dvd.dmp schemas=dvd

Estimate in progress using BLOCKS method...

Processing object typeSCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 64 KB

Processing object type SCHEMA_EXPORT/USER

Processing object typeSCHEMA_EXPORT/SYSTEM_GRANT

Processing object typeSCHEMA_EXPORT/ROLE_GRANT

Processing object typeSCHEMA_EXPORT/DEFAULT_ROLE

Processing object typeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object typeSCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object typeSCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object typeSCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

. . exported"DVD"."T1"                                  4.906 KB       1 rows

Master table"DVD"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for DVD.SYS_EXPORT_SCHEMA_01is:

 /u01/backup/dvd.dmp

Job"DVD"."SYS_EXPORT_SCHEMA_01" successfully completed at20:17:34

 

 

2.2 產生DDL

 

[oracle@rac1 ~]$ impdp dvd/dvddirectory=backup dumpfile=dvd.dmp sqlfile=dvd.sql

 

Import: Release 10.2.0.4.0 - Production onWednesday, 21 September, 2011 20:18:50

 

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

 

Connected to: Oracle Database 10gEnterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, Real ApplicationClusters, OLAP, Data Mining

and Real Application Testing options

Master table"DVD"."SYS_SQL_FILE_FULL_01" successfully loaded/unloaded

Starting"DVD"."SYS_SQL_FILE_FULL_01":  dvd/******** directory=backupdumpfile=dvd.dmp sqlfile=dvd.sql

Processing object type SCHEMA_EXPORT/USER

Processing object typeSCHEMA_EXPORT/SYSTEM_GRANT

Processing object typeSCHEMA_EXPORT/ROLE_GRANT

Processing object typeSCHEMA_EXPORT/DEFAULT_ROLE

Processing object typeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object typeSCHEMA_EXPORT/TABLE/TABLE

Processing object typeSCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object typeSCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Job"DVD"."SYS_SQL_FILE_FULL_01" successfully completed at20:18:54

 

2.3 查看DDL 文本

 

[oracle@rac1 backup]$ cat dvd.sql

-- CONNECT DVD

-- new object type path is:SCHEMA_EXPORT/USER

-- CONNECT SYSTEM

 CREATE USER "DVD" IDENTIFIED BYVALUES '1111602792579CCE'

     DEFAULT TABLESPACE "USERS"

     TEMPORARY TABLESPACE "TEMP";

 

-- new object type path is:SCHEMA_EXPORT/SYSTEM_GRANT

GRANT UNLIMITED TABLESPACE TO"DVD";

 

-- new object type path is:SCHEMA_EXPORT/ROLE_GRANT

 GRANT "DBA" TO "DVD";

 

-- new object type path is:SCHEMA_EXPORT/DEFAULT_ROLE

 ALTER USER "DVD" DEFAULT ROLE ALL;

 

-- new object type path is: SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

-- CONNECT DVD

 

BEGIN

sys.dbms_logrep_imp.instantiate_schema(schema_name=>SYS_CONTEXT('USERENV','CURRENT_SCHEMA'),export_db_name=>'ANQING.REGRESS.RDBMS.DEV.US.ORACLE.COM',inst_scn=>'9530068');

COMMIT;

END;

/

 

-- new object type path is:SCHEMA_EXPORT/TABLE/TABLE

CREATE TABLE "DVD"."T1"

  (    "ID" NUMBER

   )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" ;

 

-- new object type path is:SCHEMA_EXPORT/TABLE/INDEX/INDEX

CREATE INDEX"DVD"."IDX_T1" ON "DVD"."T1"("ID")

 PCTFREE 10 INITRANS 2 MAXTRANS 255

 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

 TABLESPACE "USERS" PARALLEL 1 ;

 

 ALTER INDEX "DVD"."IDX_T1" NOPARALLEL;

 

-- new object type path is: SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

DECLARE IND_NAME VARCHAR2(60);

  IND_OWNER VARCHAR2(60);

 BEGIN

  DELETE FROM "SYS"."IMPDP_STATS";

  IND_NAME := 'IDX_T1';   IND_OWNER:= 'DVD';

  INSERT INTO "SYS"."IMPDP_STATS" (type, version,flags, c1, c2, c3, c5,

               n1, n2, n3, n4, n5, n6, n7, n8,n9, n10, n11, n12, d1)

      VALUES ('I', 4, 0, IND_NAME, NULL, NULL, 'DVD', 1, 1, 1, 1, 1, 1, 0, 1,NULL, NULL, NULL, NULL, TO_DATE('2011-09-21 19:45:20','YYYY-MM-DD:HH24:MI:SS'));

 

  DBMS_STATS.IMPORT_INDEX_STATS( '"' || ind_owner || '"','"' || ind_name || '"', NULL, '"IMPDP_STATS"', NULL,'"SYS"');

  DELETE FROM "SYS"."IMPDP_STATS";

 END;

/

 

從exp/imp 與 expdp/impdp 的DDL 結果進行對比,expdp/impdp 提取DDL 語句的更詳細,可讀性要好很多。

 

 

 

 

-------------------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: dvd.dba@gmail.com

DBA1 群:62697716(滿);   DBA2 群:62697977(滿)  DBA3 群:62697850(滿)  

DBA 超級群:63306533(滿);  DBA4 群:83829929(滿) DBA5群: 142216823(滿) 

DBA6 群:158654907(滿)   DBA7 群:69087192(滿)  DBA8 群:172855474

DBA 超級群2:151508914  DBA9群:102954821     聊天 群:40132017(滿)

--加群需要在備忘說明Oracle資料表空間和資料檔案的關係,否則拒絕申請

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.