Oracle11gr2資料泵新特性(一)

yangtingkun發表於2009-09-07

Oracle11gr2版本中,並沒有對資料泵做出多大的改動,主要是增加了對原始版本引數的支援,並且去掉了一些小的限制。

這一篇介紹資料泵的Legacy模式。

 

 

11.2中推出的這個功能主要是EXP/IMP工具要逐漸地推出歷史舞臺了。雖然無論從功能上還是從效能上,資料泵匯入匯出都要優於傳統的匯出匯入工具EXP/IMP,但是如果使用者包含了大量的指令碼呼叫EXP,那麼全部遷移到EXPDP方式就會非常麻煩。

而資料庫的LEGACY模式就是為了能將傳統的匯出、匯入方式平滑的遷移到資料泵方式下。

[oracle@bjtest ~]$ expdp yangtk/yangtk file=t.dmp

Export: Release 11.2.0.1.0 - Production on 星期日 9 6 22:32:43 2009

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
由於以下引數, 舊有模式處於活動狀態:
舊有模式引數: "file=t.dmp" 位置: Command Line, 替換為: "dumpfile=t.dmp"
舊有模式設定了 reuse_dumpfiles=true 引數。
舊有模式設定了 nologfile=true 引數。
啟動 "YANGTK"."SYS_EXPORT_SCHEMA_01":  yangtk/******** dumpfile=t.dmp reuse_dumpfiles=true nologfile=true
正在使用 BLOCKS 方法進行估計...
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 4 MB
處理物件型別 SCHEMA_EXPORT/USER
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/COMMENT
. .
匯出了 "YANGTK"."T"                                2.886 MB   71968
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為:
  /data/oracle/admin/test112/dpdump/t.dmp
作業 "YANGTK"."SYS_EXPORT_SCHEMA_01" 已於 22:33:25 成功完成

可以看到,FILEEXP的引數,由於指定了EXP的——引數,EXPDP自動變成了Legacy模式,為了保持和exp工具完全相同的匯出效果,因此expdp使用了DUMPFILE指定檔名稱,並指定reuse_dumpfiles引數和nologfile引數。

需要說明的是,雖然expdp支援exp的引數,但是匯出仍然是按照EXPDP方式進行的,匯出檔案也是存放在資料庫伺服器上。而且EXPDP無法匯出EXP格式的檔案,IMPDP無法使用EXP匯出的檔案,同樣EXPDPLEGACY方式匯出的檔案也無法供IMP使用。

還要注意,當前沒有使用DIRECTORY引數,不過這個引數還是必須的,否則就要使用預設值DATA_PUMP_DIR,如果使用者沒有DATA_PUMP_DIR的訪問許可權,就會報錯。當然不過不想透過引數的方式指定DIRECTORY,還可以設定環境變數DATA_PUMP_DIR的值。

在匯出的Legacy方式下,也支援各種資料泵的引數。而對於一些沒有意義傳統引數,比如buffer,則會自動被資料泵所忽略。

最後看一個複雜一點的例子:

SQL> conn yangtk/yangtk
已連線。
SQL> create directory d_output as '/home/oracle';    

目錄已建立。

SQL> exit
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
斷開
[oracle@bjtest ~]$ export DATA_PUMP_DIR=d_output
[oracle@bjtest ~]$ expdp yangtk/yangtk file=t.dp tables=t buffer=20480000 compress=n grants=n

Export: Release 11.2.0.1.0 - Production on 星期一 9 7 00:05:31 2009

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
由於以下引數, 舊有模式處於活動狀態:
忽略舊有模式引數: "buffer=20480000" 位置: Command Line
忽略舊有模式引數: "compress=FALSE" 位置: Command Line
舊有模式引數: "file=t.dp" 位置: Command Line, 替換為: "dumpfile=D_OUTPUT:t.dp"
資料庫目錄物件 "D_OUTPUT" 已新增到檔案說明: "t.dp"
舊有模式引數: "grants=FALSE" 位置: Command Line, 替換為: "exclude=grant"
舊有模式設定了 reuse_dumpfiles=true 引數。
舊有模式設定了 nologfile=true 引數。
資料庫目錄物件已預設設定為: "d_output"
啟動 "YANGTK"."SYS_EXPORT_TABLE_01":  yangtk/******** dumpfile=D_OUTPUT:t.dp tables=t exclude=grant reuse_dumpfiles=true nologfile=true
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 4 MB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
. .
匯出了 "YANGTK"."T"                                2.886 MB   71968
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_TABLE_01"
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01
的轉儲檔案集為:
  /home/oracle/t.dp
作業 "YANGTK"."SYS_EXPORT_TABLE_01" 已於 00:05:38 成功完成

再看一個混和IMPIMPDP引數的例子:

[oracle@bjtest ~]$ impdp yangtk/yangtk file=t.dp buffer=2048000 ignore=y directory=d_output content=data_only

Import: Release 11.2.0.1.0 - Production on 星期一 9 7 00:21:14 2009

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
由於以下引數, 舊有模式處於活動狀態:
忽略舊有模式引數: "buffer=2048000" 位置: Command Line
舊有模式引數: "file=t.dp" 位置: Command Line, 替換為: "dumpfile=t.dp"
舊有模式引數: "ignore=TRUE" 位置: Command Line, 替換為: "table_exists_action=append"
已成功載入/解除安裝了主表 "YANGTK"."SYS_IMPORT_FULL_01"
啟動 "YANGTK"."SYS_IMPORT_FULL_01":  yangtk/******** dumpfile=t.dp table_exists_action=append directory=d_output content=data_only
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. .
匯入了 "YANGTK"."T"                                2.886 MB   71968
作業 "YANGTK"."SYS_IMPORT_FULL_01" 已於 00:21:19 成功完成

如果透過連線的方式,可以確保所有的exp備份指令碼不需要修改就可以順利執行:

[oracle@bjtest ~]$ ln -s $ORACLE_HOME/bin/expdp exp
[oracle@bjtest ~]$ ls -l exp
lrwxrwxrwx 1 oracle oinstall 35 Sep  7 00:22 exp -> /data/oracle/product/11.2/bin/expdp
[oracle@bjtest ~]$ ./exp yangtk/yangtk file=t.dp content=metadata_only

Export: Release 11.2.0.1.0 - Production on 星期一 9 7 00:23:41 2009

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

連線到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
由於以下引數, 舊有模式處於活動狀態:
舊有模式引數: "file=t.dp" 位置: Command Line, 替換為: "dumpfile=D_OUTPUT:t.dp"
資料庫目錄物件 "D_OUTPUT" 已新增到檔案說明: "t.dp"
舊有模式設定了 reuse_dumpfiles=true 引數。
舊有模式設定了 nologfile=true 引數。
資料庫目錄物件已預設設定為: "d_output"
啟動 "YANGTK"."SYS_EXPORT_SCHEMA_01":  yangtk/******** dumpfile=D_OUTPUT:t.dp content=metadata_only reuse_dumpfiles=true nologfile=true
處理物件型別 SCHEMA_EXPORT/USER
處理物件型別 SCHEMA_EXPORT/SYSTEM_GRANT
處理物件型別 SCHEMA_EXPORT/ROLE_GRANT
處理物件型別 SCHEMA_EXPORT/DEFAULT_ROLE
處理物件型別 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理物件型別 SCHEMA_EXPORT/TABLE/TABLE
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理物件型別 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 SCHEMA_EXPORT/TABLE/COMMENT
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_SCHEMA_01"
******************************************************************************
YANGTK.SYS_EXPORT_SCHEMA_01
的轉儲檔案集為:
  /home/oracle/t.dp
作業 "YANGTK"."SYS_EXPORT_SCHEMA_01" 已於 00:24:23 成功完成

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-614130/,如需轉載,請註明出處,否則將追究法律責任。

相關文章