新聞中心
在數(shù)據(jù)庫管理領(lǐng)域,數(shù)據(jù)庫遷移是一項重要的任務(wù)。它涉及到將一個或多個數(shù)據(jù)庫或應(yīng)用程序從一個環(huán)境轉(zhuǎn)移到另一個環(huán)境,通常是遷移基礎(chǔ)架構(gòu)或托管提供商、更新版本或平臺或合并數(shù)據(jù)庫。雖然Oracle數(shù)據(jù)庫遷移是一項繁瑣的任務(wù),但必須完成此任務(wù),既確保數(shù)據(jù)的完整性,又確保數(shù)據(jù)的安全性。在本文中,我們將分享一些Oracle數(shù)據(jù)庫遷移的技巧,以幫助您在遷移過程中快速移動數(shù)據(jù)。

成都創(chuàng)新互聯(lián)公司專注于汕尾網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供汕尾營銷型網(wǎng)站建設(shè),汕尾網(wǎng)站制作、汕尾網(wǎng)頁設(shè)計、汕尾網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造汕尾網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供汕尾網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
準(zhǔn)備工作
在開始Oracle數(shù)據(jù)庫遷移之前,必須先進(jìn)行一些準(zhǔn)備工作。這些準(zhǔn)備工作包括:
1.存儲備份和日志文件
在遷移過程中,您需要備份整個數(shù)據(jù)庫和日志文件。因此,您需要有足夠的存儲空間,以便存儲這些文件。備份數(shù)據(jù)庫和日志文件可以幫助您在遷移過程中避免數(shù)據(jù)丟失。
2.確認(rèn)遷移目標(biāo)環(huán)境
在遷移之前,您需要確認(rèn)目標(biāo)數(shù)據(jù)庫環(huán)境是否符合要求。目標(biāo)環(huán)境需要具有足夠的存儲空間、性能和安全性,以保持新數(shù)據(jù)庫的平穩(wěn)運行。此外,新環(huán)境必須具有足夠的權(quán)限,以允許您完成遷移。
3.創(chuàng)建遷移計劃
創(chuàng)建遷移計劃可以幫助您規(guī)劃遷移過程的步驟和時間。此外,遷移計劃還應(yīng)包括備份和還原方案、驗證和測試計劃以及后續(xù)支持和維護(hù)計劃。
快速move數(shù)據(jù)的技巧
1.使用Oracle Data Pump
Oracle Data Pump是一種快速移動數(shù)據(jù)的工具,它允許將數(shù)據(jù)以二進(jìn)制格式從源數(shù)據(jù)庫導(dǎo)出并導(dǎo)入到目標(biāo)數(shù)據(jù)庫。使用Data Pump可以大大加快數(shù)據(jù)的遷移速度。此外,Data Pump還可以將數(shù)據(jù)導(dǎo)出到平面文件中,以便在遷移過程中進(jìn)行手動處理。
2.使用Oracle GoldenGate
Oracle GoldenGate是一種高性能、高可用性的數(shù)據(jù)復(fù)制和同步工具,它允許在不影響源數(shù)據(jù)庫的情況下將數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)庫。GoldenGate可以在不同的操作系統(tǒng)、數(shù)據(jù)庫版本和架構(gòu)之間進(jìn)行復(fù)制。使用GoldenGate可以減少數(shù)據(jù)遷移的停機時間,并提高遷移的效率。
3.使用Oracle Transportable Tablespaces
Oracle Transportable Tablespaces允許在同一操作系統(tǒng)上的不同Oracle數(shù)據(jù)庫之間移動數(shù)據(jù)。使用Transportable Tablespaces可以避免在目標(biāo)數(shù)據(jù)庫中重新創(chuàng)建表和索引,并減少數(shù)據(jù)遷移的時間。此外,Transportable Tablespaces還可以使遷移過程更加容易,因為您不必重新安裝任何軟件或創(chuàng)建新的數(shù)據(jù)庫實例。
4.使用Oracle RMAN
Oracle Recovery Manager(RMAN)是一種備份和還原數(shù)據(jù)庫的工具。使用RMAN可以將整個數(shù)據(jù)庫備份到磁盤或磁帶,并快速還原到目標(biāo)數(shù)據(jù)庫中。此外,使用RMAN還可以在備份和還原過程中對數(shù)據(jù)進(jìn)行壓縮,從而減少數(shù)據(jù)遷移的時間和存儲空間。
在Oracle數(shù)據(jù)庫遷移過程中,快速移動數(shù)據(jù)是至關(guān)重要的。使用Oracle Data Pump、Oracle GoldenGate、Oracle Transportable Tablespaces和Oracle RMAN等工具可以大大加快數(shù)據(jù)的遷移速度。此外,在啟動遷移之前做好充分的準(zhǔn)備工作和規(guī)劃,可以幫助您避免中斷和數(shù)據(jù)丟失,并確保數(shù)據(jù)庫遷移的安全和完整性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
學(xué)習(xí)oracle視頻,看到指定表空間數(shù)據(jù)文件移動到指定位置遇到問題,host move執(zhí)行無任何效果
我今天學(xué)習(xí)oracle也到這兒,發(fā)現(xiàn)敲了命令,在相應(yīng)的磁盤沒看到dbf文件,此時我用的是pl/sql developer 里的命令窗口
后來銷山仔我使用虧汪sqlplus來進(jìn)行同樣的操作,發(fā)現(xiàn)在相應(yīng)的磁盤中找到了dbf文件,我覺得可能是使用工具的問題。
自己的一點心得,不知道對與否,希望對你有幫唯碼助
是能移走的棗肆鉛呀,不應(yīng)該沒反映的。記雹洞得移走之后還要rename datafile.
例如:
SQL> select file_name from dba_data_files;
FILE_NAME
/u01/oracle/oradata/oradb/users01.dbf
/u01/oracle/oradata/oradb/undotbs01.dbf
/u01/oracle/oradata/oradb/sysaux01.dbf
/u01/oracle/oradata/oradb/system01.dbf
/u01/oracle/oradata/oradb/encrypted_ts01.dbf
SQL> alter tablespace users offline;
Tablespace altered.
SQL> alter tablespace users rename datafile ‘/u01/凳好oracle/oradata/oradb/users01.dbf’ to ‘/u01/oracle/users02.dbf’;
Tablespace altered.
SQL> alter tablespace users online;
Tablespace altered.
SQL> select file_name from dba_data_files;
FILE_NAME
/u01/oracle/users02.dbf
/u01/oracle/oradata/oradb/undotbs01.dbf
/u01/oracle/oradata/oradb/sysaux01.dbf
/u01/oracle/oradata/oradb/system01.dbf
/u01/oracle/oradata/oradb/encrypted_ts01.dbf
SQL> !ls -a /u01/oracle/users02.dbf
/u01/oracle/users02.dbf
SQL> !ls -a /u01/oracle/oradata/oradb/users01.dbf
ls: /u01/oracle/oradata/oradb/users01.dbf: No such file or directory
我倒,host命緩中令就是在sql/plus中執(zhí)迅哪攜行操作系統(tǒng)的命令,如果被移動的表空間文件處于在在線狀畝伏態(tài),當(dāng)然不能讓你移動了!這個時候你可以把表空間文件設(shè)置為冷備份狀態(tài),這個時候可以移動。
我也遇到這個問凱雹芹題,后來發(fā)現(xiàn)是因為在PL/SQL developer中運盯畢行這條肆備命令就無效,在sqlplus中運行才有效
如何重建LOB類型的索引和LOB段
當(dāng)我們想重建LOB類型的索引的時候,就會出現(xiàn)報錯,重現(xiàn)如下:
create table test
( id int,
txt clob
);
SQL> select * from user_segments;
SEGMENT_NAMEPARTITION_NAME SEGMENT_TYPETABLESPACE_NAME
BYTES BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE FREELISTS FREELIST_GROUPS BUFFER_POOL
—
–
TESTTABLEUSERS
DEFAULT
SYS_ILC00002$$ LOBINDEXUSERS
DEFAULT
SYS_LOBC00002$$ LOBSEGMENTUSERS
DEFAULT
alter index SYS_ILC00002$$ rebuild tablespace users ONLINE NOLOGGING
ORA-02327: 無法以數(shù)據(jù)類型 LOB 的型伍表達(dá)式創(chuàng)建索引
我們先回憶一下相關(guān)辯伏知識,以下來自O(shè)RACLE 9I&10G編程藝術(shù)
lobindex和lobsegment,它們做什么用?創(chuàng)建這些段是為了支持我們的LOB列。我們的實際LOB數(shù)據(jù)就存儲在lobsegment中(確實,LOB數(shù)據(jù)也有可能存儲在表T中,不過稍后討論
ENABLE STORAGE IN ROW子句時還會更詳細(xì)地說明這個內(nèi)容)。lobindex用卜灶或于執(zhí)行LOB的導(dǎo)航,來找出其中的某些部分。創(chuàng)建一個LOB列時,一般來說,存儲在行中的這是一個指針(
pointer),或LOB定位器(LOB locator)。我們的應(yīng)用所獲取的就是這個LOB定位器。當(dāng)請求得到LOB的“12.000~2,000字節(jié)”時,將對lobindex使用LOB定位器來找出這些字節(jié)存
儲在哪里,然后再訪問lobsegment??梢杂胠obindex很容易地找到LOB的各個部分。由此說來,可以把LOB想成是一種主/明細(xì)關(guān)系。
表中的LOB實際上只是指向lobindex,lobindex再指向LOB本身的各個部分。為了得到LOB中的N~M字節(jié),要對表中的指針(LOB定位器)解除引用,遍歷lobindex結(jié)構(gòu)來找到所需的
數(shù)據(jù)庫(chunk),然后按順序訪問。這使得隨機訪問LOB的任何部分都能同樣迅速,你可以用同樣快的速度得到LOB的最前面、中間或最后面的部分,因為無需再從頭開始遍歷LOB
。
ORACLE也說:The LOB index is an internal structure that is strongly associated with the LOB storage. 也就是說不讓直接重建
但是我覺得可以明確INDEX是用來確定LOBSEGMENT的位置,如果經(jīng)常對表中的行進(jìn)行DML或者對大字段進(jìn)行DML,我覺得重建還是用必要的。
既然是索引就要遵守索引的原則。大量的DML必然使索引的頁節(jié)點越來越多,深度越來越大,但是其中包含了空閑空間。
ORACLE METALINK 說 Use the ALTER TABLE … MOVE command which will rebuild the indexes ,也就是使用ALTER TABLE MOVE語句來進(jìn)行REBUILD索引。
下面就測試一下:
首先理解幾個概念,才能了解實驗結(jié)果:
1、IN ROW 默認(rèn)的這個子句是(ENABLE STORAGE IN ROW),也就是小于4000字節(jié)就存儲在表段中,如果大于4000字節(jié)就存儲在lob段中,同時使用LOBINDEX來指定位置,我這里使
用DISABLE STORAGE IN ROW,也就是不管多大都存在LOBSEGMENT中。
2、CHUNK 表示最小LOGSEGMENT最小的存儲單元,而且一個CHUNK只限于一個SEGMENT行使用,如果一個CHUNK設(shè)置為32K,你的SEGMENT行只有2K那就要浪費30k。
3、CACHE 表示是否把讀取寫入LOGSEGMENT記錄到緩存,默認(rèn)是NOCACHE,可以是CACHE和CACHE READS,前者讀寫都保存,后者讀保存,寫是直接寫。而NOCACHE,就是直接讀寫。
下面是我建立表的語句。
CREATE TABLE “PPTEST”.”TEST2″
( “ID” NUMBER(*,0),
“TXT” CLOB
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIALNEXTMINEXTENTS 1 MAXEXTENTS
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE “USERS”
LOB (“TXT”) STORE AS (
TABLESPACE “USERS” DISABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10
NOCACHE
STORAGE(INITIALNEXTMINEXTENTS 1 MAXEXTENTS
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))
我這里DISABLE STORAGE IN ROW CHUNK 8192,CHUNK是8K。
現(xiàn)在我插入數(shù)據(jù)
SQL> insert into test2
2 select * from test;
rows inserted
這里有58W多行,計算一下SEGMENTS占用空間。589824*8K=4.5G
查看一下:
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SYS_ILC00002$$ LOBINDEX. 3968
SYS_LOBC00002$$LOBSEGMENT.95328
TESTTABLE0. 2432
確實我們的LOGSEGMENT是4.5G。
現(xiàn)在我們收集統(tǒng)計信息,并且對索引進(jìn)行分析如下:
SQL> execute dbms_stats.gather_schema_stats(ownname => ‘PPTEST’,cascade => true);
PL/SQL procedure successfully completed
yze index SYS_ILC00002$$ validate structure;
yze index SYS_ILC00002$$ compute statistics;
過后查看都沒有發(fā)現(xiàn)LOGINDEX的結(jié)構(gòu)信息,不知道為何。
但是考慮進(jìn)行了大量的DML夠后進(jìn)行REBULIDING索引的大小肯定會減少。
現(xiàn)在我們來進(jìn)行REBULDING實驗。
首先模擬大量刪除插入,
delete test2;
insert into test2
select id,txt from (select rownum rn, id, txt from test) where mod(rn, 8) = 0;
先全部刪除,然后再插入1/8的數(shù)據(jù)。(過程巨慢)
SQL> delete test2;
rows deleted
查看
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SYS_ILC00002$$ LOBINDEX.240
SYS_LOBC00002$$LOBSEGMENT.03520
TESTTABLE0. 2432
索引的塊大量增加,占用空間也大量增加,這里我也不太明白為何大量增加。這時其實沒有任何數(shù)據(jù)了。
然后進(jìn)行了插入。
SQL> insert into test2
2 select id,txt from (select rownum rn, id, txt from test) where mod(rn, 8) = 0;
73728 rows inserted
查看
select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SYS_ILC00002$$ LOBINDEX.1264
SYS_LOBC00002$$LOBSEGMENT.69056
TESTTABLE0. 2432
其實這個時候數(shù)據(jù)只是以前的1/8 但是LOGSEGMENT和LOBINDEX 卻更大。所以有大量的浪費空間。
我們直接重建TEST2表
SQL> alter table test2 move tablespace users;
查看
SYS_ILC00002$$ LOBINDEX.1264
SYS_LOBC00002$$LOBSEGMENT.69056
TESTTABLE0. 384
只是重建了TEST2段
使用語句
ALTER TABLE test2 MOVE
TABLESPACE users
LOB (TXT) STORE AS lobsegment
(TABLESPACE users );
進(jìn)行重建
重建期間可以看到臨時對象如下:
4.TEMPORARY. 80
4.TEMPORARY.7408
4.TEMPORARY. 128
顯然表本身,LOBSEGMENT和LOBINDEX都再重建
然后查看
SQL> select SEGMENT_NAME,SEGMENT_TYPE,BYTES/1024/1024/1024 gb,BLOCKS from user_segments;
SEGMENT_NAMESEGMENT_TYPE GB BLOCKS
TESTTABLE0. 384
LOBSEGMENT LOBSEGMENT.74496
SYS_ILC00002$$ LOBINDEX. 512
因為我這里使用 lobsegment所以以前的SYS_LOBC00002$$ 變?yōu)榱薒OBSEGMENT,可以看到這個時候容量正常了。0.56G剛好是以前的1/8.
如果想單獨重建會報錯。METALINK上記錄如下:
Explanation
The ‘ALTER TABLE foo MODIFY LOB (lobcol) …’ syntax does not allow
for a change of tablespace
ALTER TABLE my_lob
MODIFY LOB (a_lob)
(TABLESPACE new_tbsp);
(TABLESPACE new_tbsp)
*
ORA-22853: invalid LOB storage option specification
You have to use the MOVE keyword instead as shown in the examples.
結(jié)論:
1、LOGSEGMENT不會重用HWM以下的空間,所以大量DML會不斷增加它的大小。
2、進(jìn)行LOBsegment和LOBINDEX重建很有必要,使用語法如下:
ALTER TABLE test2 MOVE
TABLESPACE users
LOB (TXT) STORE AS lobsegment
(TABLESPACE users );
必須和表一起重建,單獨重建LOBSEGMENT或者LOGINDEX沒有辦法。
分兩種情況,一種是移動普簡桐通索引,另一種是移動分區(qū)索引。
oracle移動普通索引到其他表空間語法:攔饑坦
alter index 索引名 rebuild tablespace 其他表空間;
oracle移動分區(qū)索引到其他表空間語法:
alter table 表名 move partition 分區(qū)名 tablespace 其他表空間肢弊;
oracle數(shù)據(jù)庫 move的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于oracle數(shù)據(jù)庫 move,Oracle數(shù)據(jù)庫遷移指南:快速move數(shù)據(jù)的技巧,學(xué)習(xí)oracle視頻,看到指定表空間數(shù)據(jù)文件移動到指定位置遇到問題,host move執(zhí)行無任何效果,如何重建LOB類型的索引和LOB段的信息別忘了在本站進(jìn)行查找喔。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機租用。成都機房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價值。
分享名稱:Oracle數(shù)據(jù)庫遷移指南:快速move數(shù)據(jù)的技巧(oracle數(shù)據(jù)庫move)
分享地址:http://www.dlmjj.cn/article/dpiepcs.html


咨詢
建站咨詢
