柚子快報激活碼778899分享:數(shù)據(jù)庫 Oracle數(shù)據(jù)遷移
柚子快報激活碼778899分享:數(shù)據(jù)庫 Oracle數(shù)據(jù)遷移
問題描述:
? ? ? ? oracle數(shù)據(jù)庫的所有表結(jié)構(gòu)、數(shù)據(jù)、索引等需要需從測試庫遷移到正式庫。
解決步驟:
? ? ? ? oracle數(shù)據(jù)庫遷移,主要通過expdp從測試庫所在的源服務(wù)器將指定的數(shù)據(jù)表或數(shù)據(jù)源導(dǎo)出為一個或多個數(shù)據(jù)文件(.dmp文件),導(dǎo)出的數(shù)據(jù)可以在正式庫中通過impdp數(shù)據(jù)導(dǎo)入工具進(jìn)行導(dǎo)入。
????????前提:服務(wù)器為linux系統(tǒng)。
1、源服務(wù)器操作
(1)創(chuàng)建目錄
????????在源服務(wù)器上創(chuàng)建一個目錄對象,用于指定導(dǎo)入數(shù)據(jù)文件的路徑??梢允褂靡韵旅顒?chuàng)建目錄對象:
# su - oracle
# sqlplus / as sysdba
SQL> create or replace directory tmpDir as '/tempFile'
tmpDir是目錄對象的名稱,/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ù)庫用戶及其密碼、數(shù)據(jù)庫ip、端口、數(shù)據(jù)庫名稱;如果執(zhí)行命令的服務(wù)器就是該數(shù)據(jù)庫的服務(wù)器,則ip地址和數(shù)據(jù)庫默認(rèn)端口可以省略。?schemas=dbTest:指定要導(dǎo)出的數(shù)據(jù)庫用戶名稱;?directory=tmpDir:指定導(dǎo)出的數(shù)據(jù)文件路徑,這里的tmpDir是預(yù)先定義的一個目錄對象;dumpfile=export.dmp:指定導(dǎo)出的數(shù)據(jù)文件名稱,這里的export.dmp是數(shù)據(jù)導(dǎo)出時生成的數(shù)據(jù)文件;logfile=export.log:指定導(dǎo)出日志文件名稱。
擴(kuò)展:
導(dǎo)出單個表的語句:
# expdp username/password@Ip:port/database directory=tmpDir dumpfile=export.dmp tables=student,school,teacher?
其中,tables是要導(dǎo)入的數(shù)據(jù)表名稱,多個數(shù)據(jù)表之間使用逗號分隔
(3)復(fù)制dmp文件到目標(biāo)服務(wù)器
# scp -P 2222 /tempFile/export.dmp name@xxx.xxx.xxx.xxx:/home/tempFile
輸入目標(biāo)服務(wù)器密碼,按回車,文件就會自動傳輸?shù)侥繕?biāo)服務(wù)器中指定的文件夾中。
????????其中,name@xxx.xxx.xxx.xxx中name為目標(biāo)服務(wù)器登陸賬號,xxx.xxx.xxx.xxx為目標(biāo)服務(wù)器ip地址。2222是目標(biāo)服務(wù)器的端口號。
????????如果目標(biāo)服務(wù)器部署22端口或者目標(biāo)服務(wù)器與源服務(wù)器端口不一致,則需要用【-P 端口】指定目標(biāo)服務(wù)器端口。
2、目標(biāo)服務(wù)器操作
(1)創(chuàng)建目錄
????????在目標(biāo)服務(wù)器上創(chuàng)建一個目錄對象,用于指定導(dǎo)入數(shù)據(jù)文件的路徑。可以使用以下命令創(chuàng)建目錄對象:
# su - oracle
# sqlplus / as sysdba
SQL> create or replace directory tmpDir as '/tempFile'
tmpDir是目錄對象的名稱,/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ù)庫用戶及其密碼、數(shù)據(jù)庫ip、端口、數(shù)據(jù)庫名稱;schemas=dbTest:指定要導(dǎo)入的數(shù)據(jù)庫用戶名稱;directory=tmpDir:指定導(dǎo)入的數(shù)據(jù)文件路徑,這里的tmpDir是預(yù)先定義的一個目錄對象;dumpfile=export.dmp:指定導(dǎo)入的數(shù)據(jù)文件名稱,這里的export.dmp是數(shù)據(jù)導(dǎo)出時生成的數(shù)據(jù)文件;job_name=myjob:指定導(dǎo)入任務(wù)的名稱,這里的myjob是自定義的任務(wù)名稱。
如果源表對象和目標(biāo)表對象不一致則需要用remap_schema,重新對應(yīng)遷移原表對象和目標(biāo)表對象。
# 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ù)庫的schema。
擴(kuò)展
(1)單表導(dǎo)入:
# impdp username/password@Ip:port/database?directory=tmpDir dumpfile=export.dmp tables=student,school,teacher
需要注意的是,在導(dǎo)入數(shù)據(jù)表時,如果目標(biāo)數(shù)據(jù)庫中已經(jīng)存在同名的數(shù)據(jù)表,需要使用REMAP_TABLE選項將數(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
報錯處理:
1、權(quán)限問題
導(dǎo)入的dmp文件需要設(shè)置下權(quán)限,然后重新進(jìn)行導(dǎo)入操作。
#? chmod 777 /home/tempFile/export.dmp
2、expdp命令導(dǎo)出報錯UDE-00010:multiple job modes requested, schema and tables
當(dāng)使用expdp命令導(dǎo)出單個數(shù)據(jù)表時,需要指定TABLES選項來指定要導(dǎo)出的表名,同時也需要指定SCHEMAS選項來指定要導(dǎo)出的數(shù)據(jù)庫用戶。如果同時指定了TABLES和SCHEMAS選項,可能會出現(xiàn)UDE-00010錯誤,提示“multiple job modes requested, schema and tables”。
解決這個問題,可以在導(dǎo)出命令中只指定TABLES選項,不指定SCHEMAS選項。例如:
# ?expdp username/password@database_schema tables=table_name directory=data_pump_dir dumpfile=export.dmp
如果需要導(dǎo)出多個表,可以在TABLES選項中使用逗號分隔多個表名
3、主鍵插入失敗
導(dǎo)出測試庫的時候數(shù)據(jù)在更新,導(dǎo)致了dmp文件中設(shè)備主鍵的值有重復(fù)的,需要刪除數(shù)據(jù)后,手動新建主鍵。
柚子快報激活碼778899分享:數(shù)據(jù)庫 Oracle數(shù)據(jù)遷移
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。