溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

oracle數(shù)據(jù)庫中exp/imp之初次使用

發(fā)布時間:2020-07-15 20:10:15 來源:網(wǎng)絡(luò) 閱讀:6770 作者:wangcchui314 欄目:數(shù)據(jù)庫

    最近使用oracle9i時,遇到了數(shù)據(jù)庫備份和恢復(fù)的問題,很多時候與exp和imp的命令使用有關(guān)。針對遇到的問題,簡單的總結(jié)。

    問題的背景,就是需要對某張表導入和導出。數(shù)據(jù)庫database1,dateabase2在數(shù)據(jù)庫中涉及的用戶主要是 user1,user2,備份的對象主要是表table1。

    對于exp和Imp命令的內(nèi)容網(wǎng)上較多的解說,這里主要解決具體的問題,使用的只是常用的命令項。

1.從database2中導出表 table1

     exp userid=system/mypawd@dateabase2 tables=(user1.table1) rows=y  log=d:\log.txt file=d:\table1.dmp 

     這個一般沒有什么問題,最好是在命令行窗口中運行。把database2數(shù)據(jù)庫中user1方案中的table1導出。導出似乎有一個原則,哪個方案(用戶)的表,只有擁有者可以執(zhí)行。也就是說,雖然使用的是system用戶,但是在exp時,數(shù)據(jù)庫會把用戶切換為user1,就是table1的擁有者,在開始exp。不過一般導出時還是使用權(quán)限相對高一些的用戶比如sysem。

exp userid=lj/ljjtw@hmis1 full=n tables=(CT231) rows=y  log=d:\log1.txt file=d:\ct2311.dmp 


2. 在Imp時,遇到的問題如下:

  1)權(quán)限對等的用戶才可以執(zhí)行導入。

如果這樣寫命令,imp user2/mypawd@dateabase1 tables=(table1) rows=y  log=d:\log.txt file=d:\table1.dmp 

提示:有dba權(quán)限的用戶導出,導入也要是用同等權(quán)限的用戶導入。就是要導入的用戶user2,不具有dba的權(quán)限,不允許導入

 2)IMP-00033: 警告: 在導出文件中未找到表

    imp system/mypasswd@database2 rows=y  log=d:\log.txt file=d:\table1.dmp 

     --IMP-00033: 警告: 在導出文件中未找到表 

    通過查詢相關(guān)資料,應(yīng)該是沒有指定方案的備份對象,就在命令中加入了touser=user2,運行問題還是存在,imp system/mypasswd@database2 rows=y  log=d:\log.txt file=d:\table1.dmp touser=user2 --IMP-00033: 警告: 在導出文件中未找到表 

    又思考是不是必須在database1中建立一個與user2不同命的方案,又創(chuàng)建了user3方案,還是同樣的問題。imp system/mypasswd@database2 rows=y  log=d:\log.txt file=d:\table1.dmp touser=user3 --user3實在database2 數(shù)據(jù)庫中建立的用戶(方案)不同于database1中user1。

    在繼續(xù)的查閱中,很多人都指出了一個問題,就是命令在使用的時候,必須要保證最低的完整,就是方案,擁有者要指明,也就是fromuser=user1 ,touser=user2 要給出。問題就解決了。

    imp system/mypasswd@database2 fromuser=user1 touser=user2 rows=y  log=d:\log.txt file=d:\table1.dmp

    其實touser也可以指明在目標數(shù)據(jù)庫中的不同名用戶,不僅可以是user2,還可以是其他的用戶,這樣table1在目標數(shù)據(jù)庫中的擁有者就變換成指明的用戶。這樣就可以更改某一張表的owner,在Oracle數(shù)據(jù)庫中通常數(shù)據(jù)對象的所有者是不能更改的。

    數(shù)據(jù)表的導入導出可以多張表。一般是很難保證表約束和創(chuàng)建的其他對象的完整。如果指明是owner=(),就是說要導出某個方案,此時就不能指定tables=(),這樣會有沖突。

    整個數(shù)據(jù)庫導入導出也是可以的。當然也可以全庫導出,只導入需要的部分方案,只需修改命令參數(shù)使用。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI