欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)遷移完整解決步驟

 更新時(shí)間:2024年02月23日 16:50:04   作者:程序員儲(chǔ)物箱  
我們常常需要對(duì)數(shù)據(jù)進(jìn)行遷移,遷移到更性能配置更高級(jí)的主機(jī)OS上、遷移到遠(yuǎn)程的機(jī)房、遷移到不同的平臺(tái)下,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)遷移的相關(guān)資料,需要的朋友可以參考下

問(wèn)題描述:

oracle數(shù)據(jù)庫(kù)的所有表結(jié)構(gòu)、數(shù)據(jù)、索引等需要需從測(cè)試庫(kù)遷移到正式庫(kù)。

解決步驟:

oracle數(shù)據(jù)庫(kù)遷移,主要通過(guò)expdp從測(cè)試庫(kù)所在的源服務(wù)器將指定的數(shù)據(jù)表或數(shù)據(jù)源導(dǎo)出為一個(gè)或多個(gè)數(shù)據(jù)文件(.dmp文件),導(dǎo)出的數(shù)據(jù)可以在正式庫(kù)中通過(guò)impdp數(shù)據(jù)導(dǎo)入工具進(jìn)行導(dǎo)入。

前提:服務(wù)器為linux系統(tǒng)。

1、源服務(wù)器操作

(1)創(chuàng)建目錄

在源服務(wù)器上創(chuàng)建一個(gè)目錄對(duì)象,用于指定導(dǎo)入數(shù)據(jù)文件的路徑。可以使用以下命令創(chuàng)建目錄對(duì)象:

# su - oracle
# sqlplus / as sysdba
SQL> create or replace directory tmpDir as '/tempFile'

tmpDir是目錄對(duì)象的名稱,/tempFile是導(dǎo)入數(shù)據(jù)文件的路徑。

(2)使用expdp導(dǎo)出數(shù)據(jù)表

# su - oracle
# expdp username/password@Ip:port/database schemas=dbTest directory=tmpDir dumpfile=export.dmp logfile=export.log
  • username/password@Ip:port/database:指定要導(dǎo)出的數(shù)據(jù)庫(kù)用戶及其密碼、數(shù)據(jù)庫(kù)ip、端口、數(shù)據(jù)庫(kù)名稱;如果執(zhí)行命令的服務(wù)器就是該數(shù)據(jù)庫(kù)的服務(wù)器,則ip地址和數(shù)據(jù)庫(kù)默認(rèn)端口可以省略。
  •  schemas=dbTest:指定要導(dǎo)出的數(shù)據(jù)庫(kù)用戶名稱;
  •  directory=tmpDir:指定導(dǎo)出的數(shù)據(jù)文件路徑,這里的tmpDir是預(yù)先定義的一個(gè)目錄對(duì)象;
  • dumpfile=export.dmp:指定導(dǎo)出的數(shù)據(jù)文件名稱,這里的export.dmp是數(shù)據(jù)導(dǎo)出時(shí)生成的數(shù)據(jù)文件;
  • logfile=export.log:指定導(dǎo)出日志文件名稱。

擴(kuò)展:

導(dǎo)出單個(gè)表的語(yǔ)句:

# expdp username/password@Ip:port/database directory=tmpDir dumpfile=export.dmp tables=student,school,teacher 

其中,tables是要導(dǎo)入的數(shù)據(jù)表名稱,多個(gè)數(shù)據(jù)表之間使用逗號(hào)分隔

(3)復(fù)制dmp文件到目標(biāo)服務(wù)器

# scp -P 2222 /tempFile/export.dmp name@xxx.xxx.xxx.xxx:/home/tempFile

輸入目標(biāo)服務(wù)器密碼,按回車,文件就會(huì)自動(dòng)傳輸?shù)侥繕?biāo)服務(wù)器中指定的文件夾中。

其中,name@xxx.xxx.xxx.xxx中name為目標(biāo)服務(wù)器登陸賬號(hào),xxx.xxx.xxx.xxx為目標(biāo)服務(wù)器ip地址。2222是目標(biāo)服務(wù)器的端口號(hào)。

如果目標(biāo)服務(wù)器部署22端口或者目標(biāo)服務(wù)器與源服務(wù)器端口不一致,則需要用【-P 端口】指定目標(biāo)服務(wù)器端口。

2、目標(biāo)服務(wù)器操作

(1)創(chuàng)建目錄

在目標(biāo)服務(wù)器上創(chuàng)建一個(gè)目錄對(duì)象,用于指定導(dǎo)入數(shù)據(jù)文件的路徑??梢允褂靡韵旅顒?chuàng)建目錄對(duì)象:

# su - oracle
# sqlplus / as sysdba
SQL> create or replace directory tmpDir as '/tempFile'

tmpDir是目錄對(duì)象的名稱,/tempFile是導(dǎo)入數(shù)據(jù)文件的路徑。

(2)使用impdp導(dǎo)入數(shù)據(jù)表

# su - oracle
# impdp username/password@Ip:port/database schemas=dbTest directory=tmpDir dumpfile=export.dmp job_name=myjob
  • username/password@Ip:port/database:指定要導(dǎo)入的數(shù)據(jù)庫(kù)用戶及其密碼、數(shù)據(jù)庫(kù)ip、端口、數(shù)據(jù)庫(kù)名稱;
  • schemas=dbTest:指定要導(dǎo)入的數(shù)據(jù)庫(kù)用戶名稱;
  • directory=tmpDir:指定導(dǎo)入的數(shù)據(jù)文件路徑,這里的tmpDir是預(yù)先定義的一個(gè)目錄對(duì)象;
  • dumpfile=export.dmp:指定導(dǎo)入的數(shù)據(jù)文件名稱,這里的export.dmp是數(shù)據(jù)導(dǎo)出時(shí)生成的數(shù)據(jù)文件;
  • job_name=myjob:指定導(dǎo)入任務(wù)的名稱,這里的myjob是自定義的任務(wù)名稱。

如果源表對(duì)象和目標(biāo)表對(duì)象不一致則需要用remap_schema,重新對(duì)應(yīng)遷移原表對(duì)象和目標(biāo)表對(duì)象。

# impdp username/password@Ip:port/database remap_schema=dbTest:oprection directory=tmpDir dumpfile=export.dmp job_name=myjob

注意:

remap_schema=dbTest:oprection中格式為dmp文件所在的schema:目標(biāo)服務(wù)器數(shù)據(jù)庫(kù)的schema。

擴(kuò)展

(1)單表導(dǎo)入:

# impdp username/password@Ip:port/database directory=tmpDir dumpfile=export.dmp tables=student,school,teacher

需要注意的是,在導(dǎo)入數(shù)據(jù)表時(shí),如果目標(biāo)數(shù)據(jù)庫(kù)中已經(jīng)存在同名的數(shù)據(jù)表,需要使用REMAP_TABLE選項(xiàng)將數(shù)據(jù)表重新映射到新的表名或者新的表空間中,例如:

# impdp username/password@database_schema tables=table1,table2 directory=tmpDir dumpfile=export.dmp logfile=import.log REMAP_TABLE=table1:new_table1,table2:new_table2

替換已存在的表需加上:table_exists_action=replace

報(bào)錯(cuò)處理:

1、權(quán)限問(wèn)題

導(dǎo)入的dmp文件需要設(shè)置下權(quán)限,然后重新進(jìn)行導(dǎo)入操作。

#  chmod 777 /home/tempFile/export.dmp

2、expdp命令導(dǎo)出報(bào)錯(cuò)UDE-00010:multiple job modes requested, schema and tables

當(dāng)使用expdp命令導(dǎo)出單個(gè)數(shù)據(jù)表時(shí),需要指定TABLES選項(xiàng)來(lái)指定要導(dǎo)出的表名,同時(shí)也需要指定SCHEMAS選項(xiàng)來(lái)指定要導(dǎo)出的數(shù)據(jù)庫(kù)用戶。如果同時(shí)指定了TABLES和SCHEMAS選項(xiàng),可能會(huì)出現(xiàn)UDE-00010錯(cuò)誤,提示“multiple job modes requested, schema and tables”。

解決這個(gè)問(wèn)題,可以在導(dǎo)出命令中只指定TABLES選項(xiàng),不指定SCHEMAS選項(xiàng)。例如:

#  expdp username/password@database_schema tables=table_name directory=data_pump_dir dumpfile=export.dmp

如果需要導(dǎo)出多個(gè)表,可以在TABLES選項(xiàng)中使用逗號(hào)分隔多個(gè)表名

3、主鍵插入失敗

導(dǎo)出測(cè)試庫(kù)的時(shí)候數(shù)據(jù)在更新,導(dǎo)致了dmp文件中設(shè)備主鍵的值有重復(fù)的,需要?jiǎng)h除數(shù)據(jù)后,手動(dòng)新建主鍵。

總結(jié)

到此這篇關(guān)于Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)遷移完整解決步驟的文章就介紹到這了,更多相關(guān)Oracle數(shù)據(jù)遷移內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論