oracle默认导出路径linux,传统路径导出 VS 直接路径导出(oracle exp direct=y)
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.
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的oracle默认导出路径linux,传统路径导出 VS 直接路径导出(oracle exp direct=y)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gitee如何搭建mysql_MySQL
- 下一篇: python协程等待执行完成_当循环运行