oracle11g數據庫導入導出方法教程


oracle11g數據庫導入導出:

①:傳統方式——exp(導出)和(imp)導入:
②:數據泵方式——expdp導出和(impdp)導入;
③:第三方工具——PL/sql Develpoer;


一、什么是數據庫導入導出?
oracle11g數據庫的導入/導出,就是我們通常所說的oracle數據的還原/備份。
數據庫導入:把.dmp 格式文件從本地導入到數據庫服務器中(本地oracle測試數據庫中);
數據庫導出:把數據庫服務器中的數據(本地oracle測試數據庫中的數據),導出到本地生成.dmp格式文件。
.dmp 格式文件:就是oracle數據的文件格式(比如視頻是.mp4 格式,音樂是.mp3 格式);


二、二者優缺點描述:
1.exp/imp:
優點:代碼書寫簡單易懂,從本地即可直接導入,不用在服務器中操作,降低難度,減少服務器上的操作也就保證了服務器上數據文件的安全性。
缺點:這種導入導出的速度相對較慢,合適數據庫數據較少的時候。如果文件超過幾個G,大眾性能的電腦,至少需要4~5個小時左右。
2.expdp/impdp:
優點:導入導出速度相對較快,幾個G的數據文件一般在1~2小時左右。
缺點:代碼相對不易理解,要想實現導入導出的操作,必須在服務器上創建邏輯目錄(不是真正的目錄)。我們都知道數據庫服務器的重要性,所以在上面的操作必須慎重。所以這種方式一般由專業的程序人員來完成(不一定是DBA(數據庫管理員)來干,中小公司可能沒有DBA)。
3.PL/sql Develpoer:
優點:封裝了導入導出命令,無需每次都手動輸入命令。方便快捷,提高效率。
缺點:長時間應用會對其產生依賴,降低對代碼執行原理的理解。


三、特別強調:
目標數據庫:數據即將導入的數據庫(一般是項目上正式數據庫);
源數據庫:數據導出的數據庫(一般是項目上的測試數據庫);
1.目標數據庫要與源數據庫有着名稱相同的表空間。
2.目標數據在進行導入時,用戶名盡量相同(這樣保證用戶的權限級別相同)。
3.目標數據庫每次在進行數據導入前,應做好數據備份,以防數據丟失。
4.使用數據泵時,一定要現在服務器端建立可用的邏輯目錄,並檢查是否可用。
5.弄清是導入導出到相同版本還是不同版本(oracle10g版本與oracle11g版本)。
6.目標數據導入前,弄清楚是數據覆蓋(替換),還是僅插入新數據或替換部分數據表。
7.確定目標數據庫磁盤空間是否足夠容納新數據,是否需要擴充表空間。
8.導入導出時注意字符集是否相同,一般Oracle數據庫的字符集只有一個,並且固定,一般不改變。
9.導出格式介紹:
   Dmp格式:.dmp是二進制文件,可跨平台,還能包含權限,效率好; 
   Sql格式:.sql格式的文件,可用文本編輯器查看,通用性比較好,效率不如第一種,
適合小數據量導入導出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,會報錯; 
   Pde格式:.pde格式的文件,.pde為PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具
導入導出,不能用文本編輯器查看;
10.確定操作者的賬號權限。

 

原諒色走一波...... 

 

四、二者的導入導出方法:
1、傳統方法:

dmp文件的導出

首先,我們先了解dmp文件的導出

dmp文件導出一般用的比較多的是三種,分別是: 導出整個數據庫實例的所有數據,導出指定用戶的所有的表,導出指定表.

我們以自己的數據庫為例,假設我們的數據庫的實例為"Oracle"

可以通過"任務管理器---->服務"中查看自己的數據庫實例   

一般信息是 已啟用  自動 本地系統

打開cmd命令行  :  

1: 將數據庫Oracle完全導出,用戶名system密碼manager導出到 c:\daochu.dmp中  

exp system/manager@Oracle file=c:\daochu.dmp full=y

2: 將數據庫中RFD用戶與,JYZGCX用戶的表導出

exp system/manager@ORACLE  file=d:\daochu.dmp owner=(RFD,JYZGCX)

3: 將數據庫中的表T_USER,T_ROLE導出

 ystem為用戶名,manager為密碼,ORACLE為數據庫實例名,其實不一定非的用system用戶,只要是擁有管理員權限的用戶都可以

exp JYZGCX/JYZGCX@Oracle file = d:\data\newsmgnt.dmp tables = (T_USER,T_ROLE)

 

dmp文件的導入 

步驟如下: 

機器環境是windows7,其實也無所謂,命令行不都是樣的么

1. 打開"開始" --->輸入cmd,打開cmd命令窗口,輸入: sqlplus/as sysdba; 然后使用conn / as sysdba;這樣就可以以超級管理員的最高權限登錄,當然這決定於init.ora文件中的數據庫初始化參數.

2. 上面sysdba登錄后,就可以創建表空間和用戶了. 

  (打開"開始"-->輸入cmd-->sqlplus/nolog; 輸入conn/as sysdba 管理員賬戶登錄;)

由於我們已經有dmp文件了,可以用notepad++ 打開dmp文件,進去按ctrl+f 去查找tablespace,可以找到這個dmp文件對應的表空間,然后根據表空間的信息去創建表空間,這樣才能導入dmp文件.

  然后就是創建表空間,命令如下:

create tablespace USERS logging datefile 'D:\oracle\product\10.2.0\oradata\orcl\USERS.dbf' size 32m autoxtend on
next 32m maxsize 2048m extend management local;

 創建test用戶,密碼也是test222,使用上面創建的表空間

create user test identifiles by test222 default tablespace USERS

 給創建的test用戶分配權限,為了方便可以直接分配dba權限

grant dba to test;

 這樣一來,我們前期的准備工作就完成了,然后就可以關掉剛剛的命令窗口了.

   打開"開始" --->輸入cmd(是cmd窗口不是sqlplus窗口)

由於上面的步驟中,創建了test用戶,所以我們往test用戶去導入數據

直接輸入如下的語句:

imp test/test222@localhost/orcl file="C:\Users\xiejiachen\Desktop\test20190630.DMP" full =y;

 下面解釋一下上面的語句:

  test是上面創建的登錄數據庫的用戶名

  test222是上面的登錄數據庫的密碼

  localhost: 代表你的數據庫是本機還是遠程導入,需要的可以隨時替換ip地址

  orcl: 是實例的名稱

  file: 后面是你的dmp的文件路徑

  full=y :  全部導入

以上就是oracle數據庫導出和導入dmp文件的兩種方法.   

 

 

2、數據泵方法:
創建directory:

expdp(impdp) username/password@SERVICENAME:1521 
schemas=username dumpfile=file1.dmp logfile=file1.log
directory=testdata1 remap_schema=test:test;


數據庫導出舉例:

expdp xinxiaoyong/123456@127.0.0.1:1521 schemas=xinxiaoyong dumpfile=test.dmp logfile=test.log directory=testdata1;

exp:導出命令,導出時必寫。
imp:導入命令,導入時必寫,每次操作,二者只能選擇一個執行。
username:導出數據的用戶名,必寫;
password:導出數據的密碼,必寫;
@:地址符號,必寫;
SERVICENAME:Oracle的服務名,必寫;
1521:端口號,1521是默認的可以不寫,非默認要寫;
schemas:導出操作的用戶名;
dumpfile:導出的文件;
logfile:導出的日志文件,可以不寫;
directory:創建的文件夾名稱;
remap_schema=源數據庫用戶名:目標數據庫用戶名,二者不同時必寫,相同可以省略;
1.查看表空間:

select * from dba_tablespaces;

2.查看管理理員目錄(同時查看操作系統是否存在,因為Oracle並不關心該目錄是否存在,如果不存在,則出錯)。

select * from dba_directories;

3.創建邏輯目錄,該命令不會在操作系統創建真正的目錄,最好以system等管理員創建。 

create directory testdata1 as 'd:\test\dump';

4.給xinxiaoyong用戶賦予在指定目錄的操作權限,最好以system等管理員賦予。
//xinxiaoyong 是用戶名(123456是用戶密碼)

grant read,write on directory testdata1 to xinxiaoyong;


5.導出數據

1)按用戶導 

expdp xinxiaoyong/123456@orcl schemas=xinxiaoyong dumpfile=expdp.dmp directory=testdata1;

2)並行進程

parallel expdp xinxiaoyong/123456@orcl 
directory=testdata1 dumpfile=xinxiaoyong3.dmp parallel=40 job_name=xinxiaoyong3

3)按表名導 

expdp xinxiaoyong/123456@orcl tables=emp,dept dumpfile=expdp.dmp directory=testdata1;

4)按查詢條件導 

expdp xinxiaoyong/123456@orcl 
directory=testdata1 dumpfile=expdp.dmp tables=emp query='WHERE deptno=20';

5)按表空間導 

expdp system/manager directory=testdata1 dumpfile=tablespace.dmp tablespaces=temp,example;

6)導整個數據庫 

expdp system/manager directory=testdata1 dumpfile=full.dmp FULL=y;

 

6.還原數據
1)導到指定用戶下

 impdp xinxiaoyong/123456 directory=testdata1 dumpfile=expdp.dmp schemas=xinxiaoyong;

2)改變表的

owner impdp system/manager 
directory=testdata1 dumpfile=expdp.dmp tables=xinxiaoyong.dept remap_schema =xinxiaoyong:system;

3)導入表空間 

impdp system/manager directory=testdata1 dumpfile=tablespace.dmp tablespaces=example;

4)導入數據庫 

impdb system/manager directory=dump_dir dumpfile=full.dmp FULL=y;

5)追加數據 

impdp system/manager 
directory=testdata1 dumpfile=expdp.dmp schemas=system table_exists_action;

 


3、PLSQL方法:
登錄plsql工具,所使用用戶為源數據庫有導出權限(exp_full_database,dba等)的用戶。 
  1.導出建表語句(包括存儲結構) 

  導出步驟tools ->export user object,選擇要導出的對象,導出.sql格式文件並等待導出完成,如 下圖:

      

 

導出數據文件 ;
   2.導出步驟tools ->export tables,選擇要導出的表及導出的格式進行導出。 

   導出為dmp格式,如下圖:

導出為sql格式,如下圖: 

導出為pde格式,如下圖: 

 提示說明:采用第三方工具導出導入整個數據庫的話,耗時較長,一定要有足夠

 的時間來操作(數據量大的話需要好幾個小時)。

 

3.導入建表語句 
   導入步驟tools->import tables->SQL Inserts 導入.sql文件 
4.導入數據; 
   tools->import talbes,然后再根據導出的數據格式選擇導入dmp文件,或者sql文件,
或者pde文件。 
   提示說明:導入之前最好把以前的表刪除,當然導入另外數據庫除外。 
      另外導入時當發現進度條一直卡在一個點,而且導出的文件不再增大時,甚至是提示程序
未響應,千萬不要以為程序卡死了,這個導入導出就是比較緩慢,只要沒有提示報錯,

或者導入完成就不要停止程序。

 

 

 

 

 

 

  

 


免責聲明!

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



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