最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle數(shù)據(jù)IMP和EXP命令用法詳解

 更新時間:2023年11月25日 11:03:51   作者:沒有實現(xiàn)不了的夢  
這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)IMP和EXP命令用法詳解的相關資料,我們可以使用Oracle自帶的exp、imp命令來進行數(shù)據(jù)庫備份,imp和exp稱之為導入導出,這種方式也能快速的導入導出table或數(shù)據(jù)庫,需要的朋友可以參考下

前言

Oracle 的 EXP(Export)和 IMP(Import)是兩個非常重要的命令,它們用于數(shù)據(jù)庫的備份和恢復。下面我們將詳細介紹這兩個命令及其參數(shù)的用法。

1. EXP(Export)

EXP命令可以看作是一個搬運工人,他的工作就是將你指定的物品(數(shù)據(jù))從Oracle數(shù)據(jù)庫搬出,并打包成一個 .dmp 文件。這個過程就像是你要搬家,需要將你的所有物品打包好,準備搬到新家。

以下是EXP命令的一般格式和常用參數(shù):

exp userid=<用戶名>/<密碼>@<數(shù)據(jù)庫連接> file=<導出文件的路徑和名稱> owner=<要導出的用戶名稱> tables=<要導出的表名稱> full=<是否全庫導出>
  • userid:這是告訴搬運工人鑰匙在哪(數(shù)據(jù)庫連接信息),以及如何開門(用戶名和密碼)。

  • file:這是告訴搬運工人將物品搬到哪個箱子里(即導出文件的路徑和名稱)。

  • owner:這是指定要導出哪個公司的物品(即用戶名稱)。如果沒有指定,那么搬運工人將打包你擁有權(quán)限的所有物品。

  • tables:這是指定要搬運哪些特定的物品(即表名稱)。如果沒有指定,那么就搬運全部的物品。

  • full:這是告訴搬運工人是否要打包整棟樓的物品(即是否全庫導出)。如果設置為 y,則不論你是否擁有權(quán)限,只要能搬走的,他都會搬。

舉例

假設我們有一個用戶名為scott,密碼為tiger,在數(shù)據(jù)庫orcl中,我們想導出該用戶下的所有表,并保存到D:\backup\scott.dmp。

exp scott/tiger@orcl file=D:\backup\scott.dmp owner=scott

在這個命令中:

  • 必須的參數(shù):userid(在這里是scott/tiger@orcl),file(在這里是D:\backup\scott.dmp
  • 可選的參數(shù):owner,tables,full

2. IMP(Import)

IMP命令就像是EXP的反向操作,是另一位搬運工人,他的工作是從 .dmp 文件中取出物品(數(shù)據(jù))并將它們放入Oracle數(shù)據(jù)庫。這個過程就像是你搬到新家后,需要將你的物品從箱子中取出并放置到合適的位置。

以下是IMP命令的一般格式和常用參數(shù):

imp userid=<用戶名>/<密碼>@<數(shù)據(jù)庫連接> file=<導入文件的路徑和名稱> fromuser=<原用戶> touser=<新用戶> tables=<要導入的表名稱> full=<是否全庫導入> ignore=<是否忽略錯誤>
  • userid:這是告訴搬運工人鑰匙在哪(數(shù)據(jù)庫連接信息),以及如何開門(用戶名和密碼)。

  • file:這是告訴搬運工人在哪個箱子里取物品(即導入文件的路徑和名稱)。

  • fromuser:這是告訴搬運工人原來的物品是屬于哪個公司的(即原用戶)。

  • touser:這是告訴搬運工人將物品放到新公司的哪個地方(即新用戶)。

  • tables:這是指定搬運工人取出箱子中的哪些特定物品(即表名稱)。如果沒有指定,那么就取出全部的物品。

  • full:這是告訴搬運工人是否要把箱子里的所有物品都取出并放到新家(即是否全庫導入)。如果設置為 y,則不論是否需要,只要箱子里有,他都會取出來。

  • ignore=y:如果目標表已存在,將忽略錯誤,繼續(xù)將數(shù)據(jù)導入到已存在的表中。

舉例

假設我們想將上面導出的文件D:\backup\scott.dmp導入到用戶scott,密碼為tiger在數(shù)據(jù)庫orcl中。

命令如下:

imp scott/tiger@orcl file=D:\backup\scott.dmp fromuser=scott touser=scott

在這個命令中:

  • 必須的參數(shù):userid(在這里是scott/tiger@orcl),file(在這里是D:\backup\scott.dmp
  • 可選的參數(shù):fromusertouser,tables,full希望以上的解釋能幫助你理解EXP和IMP命令的工作方式。

使用導入工具imp時可能出現(xiàn)的問題 :

(1) 數(shù)據(jù)庫對象已經(jīng)存在

一般情況, 導入數(shù)據(jù)前應該徹底刪除目標數(shù)據(jù)下的表, 序列, 函數(shù)/過程,觸發(fā)器等;

數(shù)據(jù)庫對象已經(jīng)存在, 按缺省的imp參數(shù), 則會導入失敗

如果用了參數(shù)ignore=y, 會把exp文件內(nèi)的數(shù)據(jù)內(nèi)容導入

如果表有唯一關鍵字的約束條件, 不合條件將不被導入

如果表沒有唯一關鍵字的約束條件, 將引起記錄重復

(2) 數(shù)據(jù)庫對象有主外鍵約束

不符合主外鍵約束時, 數(shù)據(jù)會導入失敗

解決辦法: 先導入主表, 再導入依存表

disable目標導入對象的主外鍵約束, 導入數(shù)據(jù)后, 再enable它們

(3) 權(quán)限不夠

如果要把A用戶的數(shù)據(jù)導入B用戶下, A用戶需要有imp_full_database權(quán)限

(4) 導入大表( 大于80M ) 時, 存儲分配失敗

默認的EXP時, compress = Y, 也就是把所有的數(shù)據(jù)壓縮在一個數(shù)據(jù)塊上

導入時, 如果不存在連續(xù)一個大數(shù)據(jù)塊, 則會導入失敗

導出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤

(5) imp和exp使用的字符集不同

如果字符集不同, 導入會失敗, 可以注冊表里NLS_LANG相關信息

導入完成后再改回來

--查詢當前系統(tǒng)所使用的字符集
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
--查詢所有有關字符集的參數(shù)
select * from v$nls_parameters; 

修改系統(tǒng)的字符集:

在oracle8之前,可以用直接修改數(shù)據(jù)字典表props$ 來改變數(shù)據(jù)庫的字符集,但oracle8之后,至少有三張系統(tǒng)表記錄了數(shù)據(jù)庫字符集的信息,只改props$表并不完全,可能引起嚴重的后果。正確的修改方法如下

若此時數(shù)據(jù)庫服務器已啟動,則先執(zhí)行SHUTDOWN IMMEDIATE命令關閉數(shù)據(jù)庫服務器,然后執(zhí)行以下命令:

SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; //跳過超子集檢測  AL32UTF8;
SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;AL32UTF8;

流程為:關庫,啟動數(shù)據(jù)庫到mount狀態(tài),進入數(shù)據(jù)庫維護模式,此時只有system和sys用戶可登錄數(shù)據(jù)庫。關閉DBMS調(diào)度程序和DBMS調(diào)度任務,關閉自動任務啟動,跳過字符超子集檢查,設定系統(tǒng)字符集,關庫,重新啟動數(shù)據(jù)庫。

(6) imp和exp版本不能往上兼容

imp可以成功導入低版本exp生成的文件, 不能導入高版本exp生成的文件

根據(jù)情況我們可以用

exp和imp與數(shù)據(jù)泵expdp和impdp的區(qū)別:

1、exp和imp是客戶端工具程序,它們既可以在客戶端使用,也可以在服務端使用。exp在客戶端使用,要受到網(wǎng)速的影響,因此會比較慢。
2、expdp和impdp是服務端的工具程序,他們只能在Oracle服務端使用,不能在客戶端使用。
3、imp只適用于exp導出的文件,不適用于expdp導出文件;impdp只適用于expdp導出的文件,而不適用于exp導出文件。
4、對于10g以上的服務器,使用exp通常不能導出0行數(shù)據(jù)的空表,而此時必須使用expdp導出。
5、數(shù)據(jù)泵expdp和impdp導出可以使用parallel屬性指定并行任務導出,parallel=2就是并行2個任務導出。當然,這個并不是越多越好,需要考慮服務器的性能和cpu的個數(shù)等等因素。還可以通過導出多個文件的方式提高性能,即使用dumpfile=expdp.dp1,expdp.dp2這種方式提高性能。需要用戶根據(jù)實際情況設置
6、exp導出時讀取的是sql,通過加載sql查詢結(jié)果到緩存,然后在寫進目標文件,而expdp是直接讀取的數(shù)據(jù)塊,直接從數(shù)據(jù)塊寫進目標文件。

總結(jié) 

到此這篇關于Oracle數(shù)據(jù)IMP和EXP命令用法詳解的文章就介紹到這了,更多相關Oracle IMP和EXP命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

博乐市| 阜平县| 福清市| 石门县| 蒙城县| 仙桃市| 宿松县| 商南县| 正宁县| 阿巴嘎旗| 淮安市| 成安县| 那曲县| 城口县| 江孜县| 定陶县| 顺平县| 平安县| 保山市| 龙口市| 屏东市| 新邵县| 汾阳市| 岑溪市| 武川县| 临沭县| 沽源县| 衡阳县| 五家渠市| 紫阳县| 海盐县| 自贡市| 桃园县| 新田县| 平泉县| 沾化县| 堆龙德庆县| 新乐市| 金华市| 祥云县| 曲松县|