Oracle中exp導出與imp導入的參數(full,owner/formuser/touser)測試


1、exp導出的參數(FULL,OWNER)測試

先知道的一點是full不能與owner共存,還有都是以用戶的方式導出(在這里),其中不僅僅包括表,這可能就是下面報warnings的原因,因為Oracle系統庫里邊有動態的表或其它動態對象。

【A】首先是DBA(system)用戶連接數據庫

1)都不指            -> 僅僅導出system模式。(報了點warnings)
2)owner=test       -> 僅僅導出owner指定的模式(test)。
3)full=y           -> 全庫導出,需注意!!!,因為有DBA權限。(也報了點warnings..)

【B】然后是普通用戶(test)連接數據庫

1)都不指          -> 僅僅導出test模式。
2)owner=test     -> 僅僅導出owner指定的模式(test),如果換成非己模式需要有訪問的權限(可能不一定是DBA,待測試)。
3)full=y         -> 會提示沒有dba權限,然后詢問如下的問題(默認>我選的):
(2)U(sers), or (3)T(ables): (2)U > 2
Export grants (yes/no): yes > yes
Export table data (yes/no): yes > no
Compress extents (yes/no): yes > no
最后也僅僅導出了test,因為這里test用戶只有訪問test模式的權限,(也報了點warnings,但這里報的是無DBA權限)
如果有訪問其他schema的權限的話估計也會導出其他模式(待測試),
如果有dba權限的話會導出全庫(已測試,如【C】)。

【C】再來是普通用戶(test1)擁有DBA權限連接數據庫

1)都不指          -> 僅僅導出test1模式。
2)owner=test     -> 僅僅導出owner指定的模式(test),看好了這里是test不是test1,與【B】上面的一起看就明白。
3)full=y         -> 全庫導出,需注意!!!,因為有DBA權限。(也報了點warnings..)

【D】最后,exp總結

其實不難發現都是權限搞的怪,如果test有dba權限,那就跟system沒啥區別,記住下邊的即可:
1)都不指,導出自己。
2)owner,導出owner所指,需有權限訪問所指,否則報錯退出。
3)full=y,導出全庫,需有DBA權限,否則只會導出自己及所能訪問的模式

2、imp導入的參數(FULL,OWNER變成了FROMUSER/TOUSER)測試

這里full也不能與fromuser/touser共存,只能選一個。

【A】首先是DBA(system)用戶連接數據庫

1)都不指                 -> 不管dmp文件是單個用戶還是多個用戶都會提示Must specify FULL=Y or provide FROMUSER/TOUSER or TABLES arguments。

2)FROMUSER/TOUSER
a)單獨指定FROMUSER        -> 以模式(用戶)的形式導入。
b)兩個都指定              -> 會按順序匹配用戶以非用戶(懟內容)的方式導入,FROMUSER匹配不到TOUSER的則以模式(用戶)形式導入;所以如果需要把內容都導入system,FROMUSER有幾個模式,TOUSER就得寫幾個system。
c)單獨指定TOUSER          -> 又會提示Must specify FULL=Y or provide F....。

3)full=y                -> 如果dmp文件只有一個用戶,所有東西導入到system用戶;多個用戶則以模式(用戶)的形式導入,並非把所有東西導入到system,這里要特別注意!!!

注意的地方:
以用戶的方式導入如果某個用戶已經存在則使用已存在的用戶,某個表已經存在就跳過(不匹配數據,就是說如果表存在但沒有數據時,直接跳過不會插入數據)。

【B】然后是普通用戶(test)連接數據庫

1)都不指                 -> 報warning,不僅僅是Must...這個錯誤,反正就記住這樣導入是不行的就行了。

2)FROMUSER/TOUSER
a)單獨指定FROMUSER        -> 報沒權限錯誤,因為是按用戶導入的。
b)兩個都指定              -> 跟上邊一樣按順序匹配用戶,但是如果dmp文件是以DBA用戶導出的,你怎么導入都是不行的,因為你不配,哈哈哈。
c)單獨指定TOUSER          -> 報錯,非權限錯誤,即使dmp文件不是DBA用戶導出的也會報錯。

3)full=y                -> 跟上邊一樣,如果dmp文件只有一個用戶要注意了,會以內容的方式導入,說第二遍了(還有如果dmp文件是以DBA用戶導出的,你怎么導入都是不行的)。

【C】最后,imp總結

1 看【A】就好,認真看,不然刪表累死你。
2 建議少用full=y,多用FROMUSER/TOUSER,因為你不知道dmp文件有幾個用戶,應該有命令查看的,有空查下資料。
3 而且如果用full=y有些沒必要導入的用戶也導入就不好了,全庫遷移除外。
4 所以imp導入就都指定FROMUSER/TOUSER就行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM