Oracle11gr2資料泵新特性(四)
Oracle的11gr2版本中,並沒有對資料泵做出多大的改動,主要是增加了對原始版本引數的支援,並且去掉了一些小的限制。
這一篇介紹資料泵匯入新增的DATA_OPTIONS引數。
Oracle11gr2資料泵新特性(一):http://yangtingkun.itpub.net/post/468/491243
Oracle11gr2資料泵新特性(二):http://yangtingkun.itpub.net/post/468/491323
Oracle11gr2資料泵新特性(三):http://yangtingkun.itpub.net/post/468/491371
在11.2之前,資料泵的匯入只提供了一個DATA_OPTIONS——SKIP_CONSTRAINT_ERRORS,而在11.2中,DATA_OPTIONS又增加了一個可用的值:DIABLE_APPEND_HINT。
一般來說我們希望資料泵使用直接路徑的方式匯入,因為匯入的效率會很高。但是有的時候,我們並不需要採用直接路徑的方式,因為這種方式對目標表的併發訪問有很大的影響,而DIABLE_APPEND_HINT則將掌握權交給了我們。
SQL> create table t_append (id number, name varchar2(30));
表已建立。
SQL> insert into t_append
2 select rownum, object_name
3 from all_objects;
已建立55625行。
SQL> commit;
提交完成。
建立了一個測試表,下面透過資料泵方式匯出這個表:
[oracle@bjtest ~]$ expdp test/test dumpfile=t_append.dp directory=d_output tables=t_append
Export: Release 11.2.0.1.0 - Production on 星期三 9月 9 19:05:32 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
啟動 "TEST"."SYS_EXPORT_TABLE_01": test/******** dumpfile=t_append.dp directory=d_output tables=t_append
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 3 MB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
. . 匯出了 "TEST"."T_APPEND" 1.839 MB 55625 行
已成功載入/解除安裝了主表 "TEST"."SYS_EXPORT_TABLE_01"
******************************************************************************
TEST.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
/home/oracle/t_append.dp
作業 "TEST"."SYS_EXPORT_TABLE_01" 已於 19:05:41 成功完成
下面採用預設的匯入方式:
[oracle@bjtest ~]$ impdp test/test dumpfile=t_append.dp directory=d_output tables=t_append content=data_only
Import: Release 11.2.0.1.0 - Production on 星期三 9月 9 19:27:49 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
已成功載入/解除安裝了主表 "TEST"."SYS_IMPORT_TABLE_01"
啟動 "TEST"."SYS_IMPORT_TABLE_01": test/******** dumpfile=t_append.dp directory=d_output tables=t_append content=data_only
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "TEST"."T_APPEND" 1.839 MB 55625 行
作業 "TEST"."SYS_IMPORT_TABLE_01" 已於 19:27:53 成功完成
預設的APPEND方式只需要4秒,就可以把資料載入進去。但是這種方式需要所表,如果同時有其他人在操作,會導致併發問題:
SQL> update t_append set name = lower(name) where id = 1;
已更新2行。
在一個會話中執行了UPDATE操作,啟動另一個會話更新不同的記錄:
SQL> set sqlp 'SQL2> '
SQL2> update t_append set name = lower(name) where id = 2;
已更新2行。
可以看到由於更新不同的記錄,因此兩個會話更新都可以執行,下面回滾會話2的操作:
SQL2> rollback;
回退已完成。
現在會話1的UPDATE仍然持有鎖,下面執行預設的匯入操作:
[oracle@bjtest ~]$ impdp test/test dumpfile=t_append.dp directory=d_output tables=t_append content=data_only
Import: Release 11.2.0.1.0 - Production on 星期三 9月 9 20:20:45 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
已成功載入/解除安裝了主表 "TEST"."SYS_IMPORT_TABLE_01"
啟動 "TEST"."SYS_IMPORT_TABLE_01": test/******** dumpfile=t_append.dp directory=d_output tables=t_append content=data_only
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
由於使用直接路徑匯入方式,因此匯入進行被鎖,檢查資料庫的鎖資訊:
SQL2> conn yangtk/yangtk
已連線。
SQL2> select sid, type, id1, id2, lmode, request, ctime, block
2 from v$lock
3 where id1 =
4 (select object_id
5 from dba_objects
6 where wner = 'TEST'
7 and object_name = 'T_APPEND');
SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------- -- ---------- ---------- ---------- ---------- ---------- ----------
130 TM 73846 0 3 0 3214 1
210 TM 73846 0 0 6 178 0
SQL2> select sid, program
2 from v$session
3 where sid = 210;
SID PROGRAM
---------- ------------------------------------------------
210 oracle@bjtest (DW00)
SQL2> select sid, event
2 from v$session_wait
3 where sid = 210;
SID EVENT
---------- ----------------------------------------------------------------
210 enq: TM - contention
可以看到,資料泵的直接路徑裝載被其他會話的修改鎖住。
同時,這個直接路徑匯入還會鎖住其他使用者對這個物件的修改操作:
SQL2> conn test/test
已連線。
SQL2> update t_append set name = lower(name) where id = 2;
剛才可以順利執行的更新操作,由於直接路徑的存在,已經被鎖定了。
在會話1提交或回滾操作:
SQL> commit;
提交完成。
直接路徑匯入也隨即完成:
. . 匯入了 "TEST"."T_APPEND" 1.839 MB 55625 行
作業 "TEST"."SYS_IMPORT_TABLE_01" 已於 20:33:59 成功完成
會話2的update操作也執行完成:
已更新3行。
SQL2> commit;
提交完成。
從更新的數量上就可以看到,更新操作是發生在匯入操作之後。
上面的例子不難看出,對於需要同時訪問的物件,採用直接路徑匯入存在嚴重的併發問題,這時可以利用新功能DISABLE_APPEND_HINT。
在會話1,仍然執行UPDATE操作,並保持鎖:
SQL> update t_append set name = lower(name) where id = 1;
已更新3行。
然後再次執行資料泵的匯入,不過這次採用DATA_OPTIONS=DISABLE_APPEND_HINT引數進行匯入:
[oracle@bjtest ~]$ impdp test/test dumpfile=t_append.dp directory=d_output tables=t_append content=data_only data_options=disable_append_hint
Import: Release 11.2.0.1.0 - Production on 星期三 9月 9 20:39:36 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
已成功載入/解除安裝了主表 "TEST"."SYS_IMPORT_TABLE_01"
啟動 "TEST"."SYS_IMPORT_TABLE_01": test/******** dumpfile=t_append.dp directory=d_output tables=t_append content=data_only data_options=disable_append_hint
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
. . 匯入了 "TEST"."T_APPEND" 1.839 MB 55625 行
作業 "TEST"."SYS_IMPORT_TABLE_01" 已於 20:39:40 成功完成
其他使用者對T_APPEND表的修改並沒有鎖定匯入操作,同樣匯入操作也不會鎖定其他使用者的訪問。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-614407/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle11gr2資料泵新特性(五)Oracle
- Oracle11gr2資料泵新特性(三)Oracle
- Oracle11gr2資料泵新特性(二)Oracle
- Oracle11gr2資料泵新特性(一)Oracle
- Oracle 12C 資料泵新特性測試Oracle
- Oracle 12C新特性-資料泵新引數(LOGTIME)Oracle
- Oracle 12C新特性-資料泵新引數(VIEWS_AS_TABLES)OracleView
- 10G新特性筆記之資料泵技術筆記
- oracle10G新特性之資料泵匯出/匯入Oracle
- Oracle11新特性——PLSQL新特性(四)OracleSQL
- Oracle12c中資料泵新特性之功能增強(expdp, impdp)Oracle
- 資料泵
- Oracle12c功能增強新特性之維護&升級&恢復&資料泵等Oracle
- Oracle11gr2分析函式新特性(三)Oracle函式
- Oracle11gr2分析函式新特性(二)Oracle函式
- Oracle11gr2分析函式新特性(一)Oracle函式
- 資料泵不同工作方式效能比較(四)
- 【MySQL】5.7新特性之四MySql
- 資料庫ACDI四大特性資料庫
- ORACLE 資料泵Oracle
- oracle資料泵Oracle
- 對比資料泵與原始匯入匯出工具(四)
- Oracle 12c 新特性(四)Oracle
- oracle資料庫事物四大特性Oracle資料庫
- 資料質量的四大特性
- 殺停資料泵
- oracle 資料泵解析Oracle
- 資料泵的使用
- 資料泵 impdp 操作
- 資料泵檔案
- 資料泵小bug
- oracle之資料泵Oracle
- 資料泵匯入分割槽表統計資訊報錯(四)
- 資料泵引數檔案用於執行資料泵命令
- 【12C】資料泵新特性(DISABLE_ARCHIVE_LOGGING+VIEWS_AS_TABLES匯出檢視+LOGTIME)HiveView
- 10g資料泵和匯入匯出效能對比(四)
- 資料庫升級之-資料泵資料庫
- 使用資料泵impdp匯入資料