前提:在做insert數(shù)據(jù)之前,如果是非生產(chǎn)環(huán)境,請將表的索引和約束去掉,待insert完成后再建索引和約束。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),盂縣企業(yè)網(wǎng)站建設(shè),盂縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,盂縣網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,盂縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
insert into tab1 select * from tab2; commit;
這是最基礎(chǔ)的insert語句,我們把tab2表中的數(shù)據(jù)insert到tab1表中。根據(jù)經(jīng)驗,千萬級的數(shù)據(jù)可在1小時內(nèi)完成。但是該方法產(chǎn)生的arch會非常快,需要關(guān)注歸檔的產(chǎn)生量,及時啟動備份軟件,避免arch目錄撐爆。
alter table tab1 nologging;
insert /*+ append */ into tab1 select * from tab2;
commit; alter table tab1 logging;
該方法會使得產(chǎn)生arch大大減少,并且在一定程度上提高時間,根據(jù)經(jīng)驗,千萬級的數(shù)據(jù)可在45分鐘內(nèi)完成。但是請注意,該方法適合單進程的串行方式,如果當有多個進程同時運行時,后發(fā)起的進程會有enqueue的等待。注意此方法千萬不能dataguard上用,不過要是在database已經(jīng)force logging那也是沒有問題的。
insert into tab1 select /*+ parallel */ * from tab2; commit;
對于select之后的語句是全表掃描的情況,我們可以加parallel的hint來提高其并發(fā),這里需要注意的是最大并發(fā)度受到初始化參數(shù)parallel_max_servers的限制,并發(fā)的進程可以通過v$px_session查看,或者ps -ef |grep ora_p查看。
alter session enable parallel dml;
insert /*+ parallel */ into tab1 select * from tab2; commit;
其他方法:
并發(fā)的insert,尚未比較和方法2哪個效率更高(偶估計是方法2快),有測試過的朋友歡迎補充。
insert into tab1 select * from tab2 partition (p1);
insert into tab1 select * from tab2 partition (p2);
insert into tab1 select * from tab2 partition (p3);
insert into tab1 select * from tab2 partition (p4);
對于分區(qū)表可以利用tab1進行多個進程的并發(fā)insert,分區(qū)越多,可以啟動的進程越多。我曾經(jīng)試過insert 2.6億行記錄的一個表,8個分區(qū),8個進程,如果用方法2,單個進程完成可能要40分鐘,但是由于是有8個分區(qū)8個進程,后發(fā)進程有enqueue,所以因此需要的時間為40分鐘×8;但是如果用方法5,雖然單個進程需要110分鐘,但是由于能夠并發(fā)進程執(zhí)行,所以總共需要的時間就約為110分鐘了。
DECLARE TYPE dtarray IS TABLE OF VARCHAR2(20)
INDEX BY BINARY_INTEGER;
v_col1 dtarray; v_col2 dtarray; v_col3 dtarray;
BEGIN SELECT col1, col2, col3 BULK COLLECT INTO v_col1, v_col2, v_col3
FROM tab2;
FORALL i IN 1 .. v_col1.COUNT insert into tab1
WHERE tab1.col1 = v_col1;
END;
用批量綁定(bulk binding)的方式。當循環(huán)執(zhí)行一個綁定變量的sql語句時候,在PL/SQL 和SQL引擎(engines)中,會發(fā)生大量的上下文切換(context switches)。使用bulk binding,能將數(shù)據(jù)批量的從plsql引擎?zhèn)鞯絪ql引擎,從而減少上下文切換過程,提升效率。該方法比較適合于在線處理,不必停機。
sqlplus -s user/pwd runlog.txt set copycommit 2;
set arraysize 5000;
copy from user/pwd@sid - to user/pwd@sid - insert tab1 using
select * from tab2; exit EOF
用copy的方法進行插入,注意此處insert沒有into關(guān)鍵字。該方法的好處是可以設(shè)置copycommit和arrarysize來一起控制commit的頻率,上面的方法是每10000行commit一次。
一個是建立表空間時創(chuàng)建多個數(shù)據(jù)文件
CREATE ? TABLESPACE ? tablespace_name
DATAFILE
data1...
data2...
另外就是新增數(shù)據(jù)文件到現(xiàn)有的表空間下
ALTER TABLESPACE tablespace_name ADD
DATAFILE
data3...
1、首先點擊桌面左下角的開始菜單按鈕在打開的選擇窗口中找到圖中的選項,點擊打開窗口界面即可。
2、然后在如圖所示的界面中選擇創(chuàng)建數(shù)據(jù)庫的選項,再點擊next即可即可。
3、然后打開圖中的設(shè)置窗口,選擇第一項使用默認的配置然后按照提示輸入對應(yīng)的選項和驗證信息即可。
4、這里是剛剛設(shè)置的信息選項,可以檢查一些主要的信息確認后即可點擊next按鈕繼續(xù)就是說開始創(chuàng)建了。
5、等待即可,中途不需要手動設(shè)置修改。數(shù)據(jù)庫創(chuàng)建完成后,點擊關(guān)閉按鈕關(guān)閉創(chuàng)建向?qū)Ы缑妫纯尚陆ㄒ粋€數(shù)據(jù)庫。
工具/材料:電腦,oracle數(shù)據(jù)庫表
1.例test表中有如下數(shù)據(jù)。
2.插入一條id為6,name為楊七的數(shù)據(jù)。insert into testvalues (6,'楊七');commit。
3.向表中復(fù)制一條目前表中id為1的數(shù)據(jù),可用如下語句:insert into test select * from test where id=1;commit;在執(zhí)行insert語句后,必須提交,即commit,否則不成功。
新聞名稱:oracle如何新增數(shù)據(jù),oracle 新增數(shù)據(jù)
轉(zhuǎn)載來源:http://chinadenli.net/article33/dsegdss.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、營銷型網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、微信公眾號、手機網(wǎng)站建設(shè)、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)