傳統路徑匯出 VS 直接路徑匯出(oracle exp direct=y)

來源:互聯網
上載者:User

    Oracle 傳統的Export與Import依舊被保留到11g,而且9i與10g有很多依舊使用Export與Import方式進行備份與恢複的企業。從Oracle 7.3開始,傳統的exp匯出程式提供兩種的匯出路徑方式,一個是傳統路徑匯出(Conventional Path Export),一個是直接路徑匯出(Direct Path Export)。本文即是因最近客戶的傳統匯入匯出效能問題對此進行描述。

1、兩者的差異
    a、 Conventional path Export
        傳統路徑模式使用SQL SELECT語句抽取表資料。資料從磁碟讀入到buffer cache緩衝區中,行被轉移到評估緩衝區。
        在此之後根據SQL運算式,將記錄返回給匯出用戶端,然後寫入到dump檔案。
   
    b、Direct path Export
      直接匯出模式,資料直接從磁碟中讀取到匯出session的PGA中,行被直接轉移到匯出session的私人緩衝區,從而跳過SQL命令處理層。
      避免了不必要的資料轉換。最後記錄返回給匯出用戶端,寫到dump檔案。
     
2、效能問題
    a、直接路徑匯出方式比傳統路徑方式具有更優的效能,速度更快,因為繞過了SQL命令處理部分。
    b、直接路徑匯出方式支援RECORDLENGTH參數(最大為64k),該參數值通常建議設定為系統I/O或者DB_BLOCK_SIZE的整數倍
    c、影響直接路徑匯出的具體因素(DB_BLOCK_SIZE,列的類型,I/O效能,即資料檔案所在的磁碟機是否單獨於dump檔案所在的磁碟機)
    d、無論是直接路徑匯出還是傳統路徑匯出產生的dump,在使用imp方式匯入時,會耗用相同的時間

3、簡單樣本
    > exp system/manager FILE=exp_full.dmp LOG=exp_full.log \
    FULL=y DIRECT=y RECORDLENGTH=65535
 
    > imp system/manager FILE=exp_full.dmp LOG=imp_full.log \
    FULL=y RECORDLENGTH=65535 

4、直接路徑匯出的限制
    a、直接路徑匯出不支援互動模式
    b、不支援資料表空間傳輸模式(即TRANSPORT_TABLESPACES=Y不被支援),支援的是FULL,OWNER,TABLES匯出方式
    c、不支援QUERY查詢方式,如exp scott/tiger TABLES=emp QUERY=\"WHERE job=\'SALESMAN\' \" 不被支援
    d、直接路徑匯出使用RECORDLENGTH設定一次可以匯出資料的量,取代傳統路徑使用buffer的設定
    e、直接路徑匯出要求NLS_LANG環境參數等於資料庫字元集,負責收到EXP-41警告及EXP-0終止錯誤

5、示範兩種方式效能差異

a、傳統路徑匯出與直接路徑匯出效能對比
#下面直接進行日誌對比
robin@SZDB:/u02/database/SYBO2SZ/BNR/dump> more dump1.log
Start to dump at Fri Jun 21 15:32:57 CST 2013 ....

Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
Export done in US7ASCII character set and UTF8 NCHAR character set
server uses UTF8 character set (possible charset conversion)

About to export specified tables via Conventional Path ...#這個地方是關鍵描述資訊,指明了匯出方式
. . exporting table          TRADE_CLIENT_TBL_ARC    1395093 rows exported #資料139萬行
Export terminated successfully with warnings.

End dump at Fri Jun 21 15:34:31 CST 2013 .    #耗用時間15:34:31-15:32:57=不到2min

# Author : Robinson

robin@SZDB:/u02/database/SYBO2SZ/BNR/dump> more dump2.log
Start to dump at Fri Jun 21 15:37:13 CST 2013 ....

Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
Export done in US7ASCII character set and UTF8 NCHAR character set
server uses UTF8 character set (possible charset conversion)

About to export specified tables via Direct Path ...#這個地方是關鍵描述資訊,指明了匯出方式
. . exporting table          TRADE_CLIENT_TBL_ARC    1395093 rows exported
Export terminated successfully with warnings.

End dump at Fri Jun 21 15:37:30 CST 2013 .  #耗用時間15:37:30-15:37:13 =17s

b、示範對lob資料類型的支援
scott@SYBO2SZ> create table scott.testtab2 (nr number, txt clob);

Table created.

scott@SYBO2SZ> declare
  2  x varchar2(50);
  3  begin
  4  for i in 1..5000 loop
  5  x := 'This is a line with the number: ' || i;
  6  insert into scott.testtab2 values(i,x);
  7  commit;
  8    end loop;
  9  end;
 10  /

PL/SQL procedure successfully completed.

scott@SYBO2SZ> select count(*) from testtab2;

  COUNT(*)
----------
      5000

robin@SZDB:/u02/database/SYBO2SZ/BNR/dump> exp scott/tiger file=exp_testtab2.dmp tables=scott.testtab2 direct=y

Export: Release 10.2.0.3.0 - Production on Fri Jun 21 11:56:37 2013

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


Connected to: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
Export done in US7ASCII character set and UTF8 NCHAR character set
server uses UTF8 character set (possible charset conversion)

About to export specified tables via Direct Path ...
Table TESTTAB2 will be exported in conventional path.
. . exporting table                      TESTTAB2      5000 rows exported
Export terminated successfully without warnings. 

相關文章

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.