Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)遷移完整解決步驟
問(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)文章
通過(guò)sql準(zhǔn)確查出一天數(shù)據(jù)的方法
之前做一個(gè)項(xiàng)目的時(shí)候想用sql查出某人一天做的數(shù)據(jù),但怎么查都沒(méi)有準(zhǔn)確查出。最近通過(guò)查閱萬(wàn)卷書籍終于知道了如何準(zhǔn)確查出一天的數(shù)據(jù)。所以想著總結(jié)出來(lái)分享給大家,或許對(duì)有需要的朋友們能帶來(lái)一定的幫助,下面來(lái)一起看看吧。2016-12-12Windows下編寫批處理腳本來(lái)啟動(dòng)和重置Oracle數(shù)據(jù)庫(kù)
這篇文章主要介紹了Windows下編寫cmd腳本來(lái)對(duì)Oracle數(shù)據(jù)庫(kù)執(zhí)行啟動(dòng)和重置的方法,只需在bat文件中保存cmd shell之后就可以雙擊使用,簡(jiǎn)單粗暴,需要的朋友可以參考下2016-03-03Oracle 數(shù)據(jù)庫(kù)忘記sys與system管理員密碼重置操作方法
這篇文章主要介紹了Oracle 數(shù)據(jù)庫(kù)忘記sys與system管理員密碼重置操作,需要的朋友可以參考下2017-06-06Oracle新建用戶、角色,授權(quán),建表空間的sql語(yǔ)句
Oracle創(chuàng)建用戶操作相信大家都不陌生,下面就為您介紹Oracle創(chuàng)建用戶的語(yǔ)法的相關(guān)知識(shí),希望對(duì)您學(xué)習(xí)Oracle創(chuàng)建用戶的方面能有所幫助2012-07-07解決Oracle ORA-01017:invalid username/password:logon
這篇文章主要介紹了解決Oracle ORA-01017:invalid username/password:logon denied的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Win11系統(tǒng)下Oracle11g數(shù)據(jù)庫(kù)下載與安裝使用詳細(xì)教程(圖解)
Oracle11g是Oracle公司出的一個(gè)比較輕量版的數(shù)據(jù)庫(kù),在window系統(tǒng)上安裝比較方便,這篇文章主要給大家介紹了關(guān)于Win11系統(tǒng)下Oracle11g數(shù)據(jù)庫(kù)下載與安裝使用的相關(guān)資料,需要的朋友可以參考下2023-12-12Oracle字段根據(jù)逗號(hào)分割查詢數(shù)據(jù)的方法
項(xiàng)目需求是這樣的表里的某個(gè)字段存儲(chǔ)的值是以逗號(hào)分隔開來(lái)的,要求根據(jù)分隔的每一個(gè)值都能查出來(lái)數(shù)據(jù),但是不能使用like查詢。這篇文章主要介紹了Oracle字段根據(jù)逗號(hào)分割查詢數(shù)據(jù),需要的朋友可以參考下2018-08-08oracle安裝出現(xiàn)亂碼等相關(guān)問(wèn)題
oracle安裝過(guò)程中出現(xiàn)亂碼等一系列相關(guān)問(wèn)題,本文將介紹如何解決,需要了解的朋友可以參考下2012-11-11EXISTS關(guān)鍵字在Oracle中的簡(jiǎn)單使用例子
在Oracle中IN和EXISTS都是用于子查詢的比較運(yùn)算符,但它們的使用方式和操作結(jié)果有所不同,這篇文章主要給大家介紹了關(guān)于EXISTS關(guān)鍵字在Oracle中的簡(jiǎn)單使用,需要的朋友可以參考下2024-04-04