日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 不同用户之间 大量数据转移的方法测试

發(fā)布時間:2025/6/17 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 不同用户之间 大量数据转移的方法测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?????? 上個星期,一個朋友問我,同一個實例上,將某張表從A用戶下移動到B用戶。 表有1+條記錄。 表很大。 當時說的方法的是用create table name as select * from B .tbname.

?

?????? 因為記錄比較多,也不知道用這種方法的效率怎么樣。 之前本本上有2dump的測試庫。 上次一不小心刪了一個dump文件。 現(xiàn)在就剩一個。 剛才導入了一下。最大的分區(qū)表記錄1200w. 數(shù)據(jù)量沒有朋友的那個生產(chǎn)庫大。 不過可以測試一下。

?

?????? 這里測試的同一個實例下的。 如果是不同實例間,可以采用數(shù)據(jù)泵+并行, 這樣速度也會很快。 具體參考:

?????? Oracle 插入大量數(shù)據(jù)

?????? http://blog.csdn.net/tianlesoftware/archive/2009/10/29/4745144.aspx

?

?????? exp/imp expdp/impdp 對比 及使用中的一些優(yōu)化事項

?????? http://blog.csdn.net/tianlesoftware/archive/2010/12/23/6093973.aspx

?

?

先看表的信息:

SQL> select sum(bytes)/1024/1024/1024 "GB" from dba_extents where SEGMENT_NAME='TAGENTOPRINFO' and owner='ICD';

?

??????? GB

----------

?? 1.03125

--單張分區(qū)表1G

?

SQL> select count(*) from TAGENTOPRINFO;

?

? COUNT(*)

----------

? 12172500

-- 表中記錄1200w

?

方法一: create table as select * from

SQL> set timing on

SQL> create table ta as select * from TAGENTOPRINFO;

表已創(chuàng)建。

已用時間:? 00: 01: 04.01

SQL> select count(*) from ta;

? COUNT(*)

----------

? 12172500

已用時間:? 00: 00: 21.11

SQL>

?

注意: 新建的表沒有原來表的索引和默認值, 只有非空(not null)的約束素條件可以繼承過來,其它的約束條件或索引需要重新建立. 如果原始表是分區(qū)表,采用這種方式創(chuàng)建的是非分區(qū)表。

?

?

方法二:insert /*+APPEND */ into tbname select * from

?

--先創(chuàng)建表結(jié)構(gòu)

SQL> create table tb as select * from TAGENTOPRINFO where 1=0;

表已創(chuàng)建。

已用時間:? 00: 00: 00.05

SQL> select count(*) from tb;

? COUNT(*)

----------

? 0

已用時間:? 00: 00: 00.00

?

--insert data

SQL> insert /*+APPEND */ into tb select * from TAGENTOPRINFO;

已創(chuàng)建12172500行。

已用時間:? 00: 00: 55.43

SQL> commit;

提交完成。

已用時間:? 00: 00: 06.57

?

在這里再嘗試用nologing模式,看看這次需要多長時間:

SQL> alter table tb nologging;

表已更改。

已用時間:? 00: 00: 00.14

SQL> insert /*+APPEND */ into tb select * from TAGENTOPRINFO;

已創(chuàng)建12172500行。

已用時間:? 00: 01: 13.78?

SQL> commit;

提交完成。

已用時間:? 00: 00: 06.57

SQL> alter table tb logging;

表已更改。

已用時間:? 00: 00: 00.58

?

注意:

?????? INSERT /*+ APPEND */ 的方法會對目標表(這里的TB)產(chǎn)生級別為6的獨占鎖,如果運行此命令時還有對TBDML操作會排隊在它后面。

?

?

?????? 通過上面2個測試,時間都差不多。我還是在我的本本上測試的。 硬盤的讀寫能力比服務器硬盤還要差很多。 所以,如果在服務器上進行這種操作,還應該會快一點。

?

?

?

?

?

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

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

網(wǎng)上資源: http://tianlesoftware.download.csdn.net

相關視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

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

DBA3 群:62697850?? DBA 超級群:63306533;????

聊天 群:40132017

--加群需要在備注說明Oracle表空間和數(shù)據(jù)文件的關系,否則拒絕申請

轉(zhuǎn)載于:https://www.cnblogs.com/springside-example/archive/2011/01/24/2529813.html

總結(jié)

以上是生活随笔為你收集整理的Oracle 不同用户之间 大量数据转移的方法测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。