導入dmp文件分為三大步:創建表空間、創建用戶、導入dmp文件
一、創建表空間:
點擊new,新建一個sql window
語句為:
create tablespace "表空間名" datafile 'D:\app\*****\oradata\orcl\表空間名.dbf' size 50M default storage (initial 500K Next 500K minextents 1 maxextents unlimited pctincrease 0);
如:
create tablespace CDP datafile 'D:\app\LBD\virtual\oradata\orcl\CDP.dbf' size 2000M;
其中,CDP代表表空間名字,datafile后面的目錄地址代表本地ORACLE的安裝目錄,為方便查看我這里將表空間的文件名設置為表空間的名字。
運行之后我們就能看到自己的表空間啦
這一步的常見報錯有:
ora-01119錯誤 原因:該錯誤的主要問題是在於創建表空間的文件目錄地址沒有指定正確。
ORACLE-01537錯誤 原因:表空間'CDP'或者文件名'CDP.dbf'已經被使用。
二、創建用戶
使用數據庫 dba 用戶創建用戶並賦予相應的導入導出等權限。
1.選擇new--user
2.點選General標簽。選擇第一步創建的表空間,並填寫用戶名密碼
3.點選Role Privileges標簽。Role選擇connect,勾選“Default”。
4.點選System Privileges標簽。選擇“create any table”、“create any type”、“create any sequence”,右側不勾選。
5.點選Quotas標簽。tablespace中選擇“users”表空間,勾選“Unlimited”(無限權限)。
6.點擊APPLY。退出plsql重新登陸。到這里,我們就可以使用剛剛創建的用戶以普通用戶(Normal)的身份登錄了
三、導入dmp文件
導入dmp文件有兩種方式:1)使用plsql導入;2)用命令行導入。
*應盡量避免使用plsql進行導入,因為會出現很多會產生各種靈異問題。比如:1)導入的時候一閃而過,顯示導入成功,但數據庫里找不到任何數據。2)選擇From User、To User時顯示“Not logged on”問題。
1,plsql導入簡介(避免使用):
第一步:使用創建的用戶登錄
第三步:選擇tools(工具)菜單下的import tables..(導入表);
第四步:在oracle import選項卡界面勾選相應的選項;
第五步:選擇buffer size(緩沖池大小);
第六步:填寫from user導出dmp文件的用戶;
第七步:填寫to user導入dmp文件的用戶,即當前登錄的用戶;
第八步:import executable選擇默認;
第九步:選擇dmp文件;
第十步:import(導入)。
2,Windows自帶的命令行導入:
導入前注意:
1、導入前同樣需要創建表空間。
2、設置表空間的自動增長(否則導入數據大於表空間的存儲量會導入失敗)。
設置表空間:
ALTER DATABASE DATAFILE ' F:\app\root\oradata\orcl\HF_PMC_NEW.dbf ' AUTOEXTEND ON;//打開自動增長
ALTER DATABASE DATAFILE ' F:\app\root\oradata\orcl\HF_PMC_NEW.dbf ' AUTOEXTEND ON NEXT 200M ;//每次自動增長200m
ALTER DATABASE DATAFILE ' F:\app\root\oradata\orcl\HF_PMC_NEW.dbf ' AUTOEXTEND ON NEXT 200M MAXSIZE 1024M;//每次自動增長200m,數據表最大不超過1G
給用戶賦予dba權限:
1, plsql上用有dba權限的賬號登錄;
2, 運行GRANT DBA TO MYCDP;
導入dmp命令行:
*注意要用windows自帶的命令行導入(win+r)
例1:
imp system/123@127.0.0.1:1521/orcl file=C:\pmc20190722.dmp log=D:\test.log fromuser=root touser=system constraints=N ignore=y
例2:
imp MYCDP/MYCDP@ORCL file=D:\umecmycim20200425.dmp full=y;
這一步的常見報錯有:
IMP-00013: 只有 DBA 才能導入由其他 DBA 導出的文件。 原因:沒有給創建的用戶賦權限 ,要用超級管理員賬號登陸, 運行GRANT DBA TO MYCDP;賦予dba權限之后才可以導入。
IMP-00002: 無法打開 C:\****.dmp進行讀取 。 原因:檢查sql語句最后是不是少了分號“;”,或者沒有加: full=y,這些都會引起無法讀取。
IMP-00034:警告:在導出文件中未找到FromUser"root "
注意: 導出時的賬號是什么,導進去的賬號是什么。注意設置,最好一致!