十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
最近使用oracle9i時(shí),遇到了數(shù)據(jù)庫備份和恢復(fù)的問題,很多時(shí)候與exp和imp的命令使用有關(guān)。針對遇到的問題,簡單的總結(jié)。
問題的背景,就是需要對某張表導(dǎo)入和導(dǎo)出。數(shù)據(jù)庫database1,dateabase2在數(shù)據(jù)庫中涉及的用戶主要是 user1,user2,備份的對象主要是表table1。
對于exp和Imp命令的內(nèi)容網(wǎng)上較多的解說,這里主要解決具體的問題,使用的只是常用的命令項(xiàng)。
1.從database2中導(dǎo)出表 table1
exp userid=system/mypawd@dateabase2 tables=(user1.table1) rows=y log=d:\log.txt file=d:\table1.dmp
這個(gè)一般沒有什么問題,最好是在命令行窗口中運(yùn)行。把database2數(shù)據(jù)庫中user1方案中的table1導(dǎo)出。導(dǎo)出似乎有一個(gè)原則,哪個(gè)方案(用戶)的表,只有擁有者可以執(zhí)行。也就是說,雖然使用的是system用戶,但是在exp時(shí),數(shù)據(jù)庫會(huì)把用戶切換為user1,就是table1的擁有者,在開始exp。不過一般導(dǎo)出時(shí)還是使用權(quán)限相對高一些的用戶比如sysem。
exp userid=lj/ljjtw@hmis1 full=n tables=(CT231) rows=y log=d:\log1.txt file=d:\ct2311.dmp
2. 在Imp時(shí),遇到的問題如下:
1)權(quán)限對等的用戶才可以執(zhí)行導(dǎo)入。
如果這樣寫命令,imp user2/mypawd@dateabase1 tables=(table1) rows=y log=d:\log.txt file=d:\table1.dmp
提示:有dba權(quán)限的用戶導(dǎo)出,導(dǎo)入也要是用同等權(quán)限的用戶導(dǎo)入。就是要導(dǎo)入的用戶user2,不具有dba的權(quán)限,不允許導(dǎo)入
2)IMP-00033: 警告: 在導(dǎo)出文件中未找到表
imp system/mypasswd@database2 rows=y log=d:\log.txt file=d:\table1.dmp
--IMP-00033: 警告: 在導(dǎo)出文件中未找到表
通過查詢相關(guān)資料,應(yīng)該是沒有指定方案的備份對象,就在命令中加入了touser=user2,運(yùn)行問題還是存在,imp system/mypasswd@database2 rows=y log=d:\log.txt file=d:\table1.dmp touser=user2 --IMP-00033: 警告: 在導(dǎo)出文件中未找到表
又思考是不是必須在database1中建立一個(gè)與user2不同命的方案,又創(chuàng)建了user3方案,還是同樣的問題。imp system/mypasswd@database2 rows=y log=d:\log.txt file=d:\table1.dmp touser=user3 --user3實(shí)在database2 數(shù)據(jù)庫中建立的用戶(方案)不同于database1中user1。
在繼續(xù)的查閱中,很多人都指出了一個(gè)問題,就是命令在使用的時(shí)候,必須要保證最低的完整,就是方案,擁有者要指明,也就是fromuser=user1 ,touser=user2 要給出。問題就解決了。
imp system/mypasswd@database2 fromuser=user1 touser=user2 rows=y log=d:\log.txt file=d:\table1.dmp
其實(shí)touser也可以指明在目標(biāo)數(shù)據(jù)庫中的不同名用戶,不僅可以是user2,還可以是其他的用戶,這樣table1在目標(biāo)數(shù)據(jù)庫中的擁有者就變換成指明的用戶。這樣就可以更改某一張表的owner,在Oracle數(shù)據(jù)庫中通常數(shù)據(jù)對象的所有者是不能更改的。
數(shù)據(jù)表的導(dǎo)入導(dǎo)出可以多張表。一般是很難保證表約束和創(chuàng)建的其他對象的完整。如果指明是owner=(),就是說要導(dǎo)出某個(gè)方案,此時(shí)就不能指定tables=(),這樣會(huì)有沖突。
整個(gè)數(shù)據(jù)庫導(dǎo)入導(dǎo)出也是可以的。當(dāng)然也可以全庫導(dǎo)出,只導(dǎo)入需要的部分方案,只需修改命令參數(shù)使用。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。