日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle数据库数据导入导出步骤(入门)

發布時間:2025/7/14 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle数据库数据导入导出步骤(入门) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

oracle數據庫數據導入導出步驟(入門)

說明:?
1.數據庫數據導入導出方法有多種,可以通過exp/imp命令導入導出,也可以用第三方工具導出,如:PLSQL?
2.如果熟悉命令,建議用exp/imp命令導入導出,避免第三方工具版本差異引起的問題,同時效率更高,但特別注意:采用命令時要注意所使用的用戶及其權限等細節。?
3.在目標數據庫導入時需要創建與導出時相同的用戶名(盡量一致),并賦予不低于導出時用戶的權限;同時還需創建與原數據庫相同的表空間名,若本地數據庫已存在相同的表空間,則只能進行表空間擴充。

一、導入前準備工作(在目標數據庫操作)

知識補充:?
表空間?
? Oracle數據庫是通過表空間來存儲物理表的,一個數據庫實例可以有N個表空間,一個表空間下可以有N張表。?
? 表空間(tablespace)是數據庫的邏輯劃分,每個數據庫至少有一個表空間(稱作SYSTEM表空間)。為了便于管理和提高運行效率,可以使用一些附加表空間來劃分用戶和應用程序。例如:USER表空間供一般用戶使用,RBS表空間供回滾段使用。一個表空間只能屬于一個數據庫。

1. 登錄服務器

?用Xshell或者secureCRT工具都可

2. 查詢磁盤空間是否足夠大

?執行df -h或者df -H命令進行查詢,若可用空間不足則更換新的目標環境再繼續其他操作。

[oracle@orac ~]$ df -h
  • 1

3. 查詢表空間詳情

?①使用終端登錄,依次執行命令:?
[oracle@orac ~]$ su - oracle (切換到oracle用戶(linux的一個用戶名))?

?在/home/oracle/app/oradata 目錄下新建一個文件夾,后面創建表空間需要用到,該路徑不唯一,根據目標數據庫存放數據文件位置而定。

[oracle@orac ~]$ /home/oracle/app/oradata [oracle@orac ~]$ mkdir snail
  • 1
  • 2

? ②登錄數據庫

(注意/與as之間要有空格)[oracle@orac ~]$ sqlplus / as sysdba
  • 1
  • 2
  • 3

? ?執行sql語句

SQL> select a.tablespace_name,a.bytes/1024/1024 "sum MB", (a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB",round (((a.bytes-b.bytes)/a.bytes)*100,2) "used%" from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes,max (bytes) largest from dba_free_space group by tablespace_name)b where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc;
  • 1

即可得到當前數據庫的表空間情況,如下圖:

? 也可以通過第三方工具登錄數據庫執行上述sql語句(以下幾步也同樣可以)?
??*注:如果要導入的數據庫表空間名與當前已有表空間名相同,則無需新建表空間(也不可以再建),但是必須確定已有表空間大小充足,或者已經設置為自動增加并且自動增加的最大值足夠大,那么就不需要進行表空間擴充,直接使用該表空間級即可,跳過第四步。?
?反之如果沒有該名稱的表空間,或者表空間大小不足以存放要導入的數據時,需要對該表空間進行擴充,執行第四步。

4. 表空間擴充

?對表空間進行擴充有多種方法,簡單介紹其中幾個常用方法:?
?① 直接增大表空間的大小:?
? ?先查看表空間中數據文件存放的位置

SQL> select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
  • 1

??確定數據文件位置后,執行命令:?
??alter database datafile ‘數據文件路徑’ resize 要增大的大小?
??例如:

SQL> alter database datafile '/home/oracle/oradata/SPS_DATA.DBF' resize 4000m
  • 1

???注意:此法在增大存在表數據的表空間時會報錯,提示增加失敗,建議用下一種方法?
?② 增加數據文件的個數?
??alter tablespace 表空間名 add datafile ‘新增加的數據文件路徑’ size 數據文件的大小?
??例如:

SQL> alter tablespace SPS_DATA add datafile '/home/oracle/app/oradata/snail/SPS_DATA02.dbf' size 2000m
  • 1

?③ 設置表空間自動擴展?
??alter database datafile ‘要擴展的表空間’ autoextend on next 擴展單元大小 maxsize 最大擴展大小?
??例如:

SQL> alter database datafile '/home/oracle/app/oradata/snail/SPS_DATA.dbf' autoextend on next 100m maxsize 10000m
  • 1

?備注:方法可以結合使用,尤其當不確定導入文件最終大小時建議使用,如:

SQL> alter tablespace SPS_DATA add datafile '/home/oracle/app/oradata/snail/SPS_DATA02.dbf' size 2000m autoextend on next 200M maxsize 12000M;
  • 1
  • 2

??對表空間擴充之后可再次執行3.步中查看表空間大小的sql,確認表空間擴充成功。

5. 創建臨時表空間與數據表空間

?創建用戶前必須要先創建臨時表空間和數據庫表空間兩個表空間,否則用系統默認的表空間,會引起其他問題。?
?①創建臨時表空間?
??create temporary tablespace 臨時表空間名 tempfile ‘臨時表空間位置’ size 臨時表空間大小autoextend on next 100m maxsize 10240m extent management local;?
??例如:

SQL> create temporary tablespace SPS_DATA_temp tempfile'/home/oracle/app/oradata/snail/SPS_DATA_temp.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;
  • 1

?②創建數據表空間?
??參數大致同創建臨時表空間?
??例如:

SQL> create tablespace SPS_DATA logging datafile'/home/oracle/app/oradata/snail/SPS_DATA01.dbf' size 1024m autoextend on next 100m maxsize 10240m extent management local;
  • 1

??注意:如果是執行4.步之后,即表空間為擴充而來而不是新建的,則不需要創建數據表空間(但是臨時表空間還需要創建——個人觀點)

6. 創建數據庫用戶并指定表空間

??該用戶用于管理即將導入的數據,導入時也切換到該用戶進行導入操作(如果用imp命令進行導入,最好此用戶名與導出時采用的用戶名為同樣的用戶名,不同的話可能還需要做映射),格式為:?
??create user 用戶名identified by 用戶密碼default tablespace 所指定的表空間名 temporary tablespace 臨時表空間名;?
??例如:

SQL> create user abc identified by ABC default tablespace SPS_DATA temporary tablespace SPS_DATA_temp;
  • 1

7. 賦予用戶權限

?因為要用該用戶進行導入操作,故應給予用戶的權限至少包括dba、IMP_FULL_DATABASE權限,也有人建議應與導出數據庫數據時用戶的權限一致。?
?授權sql:(視具體情況而定)

grant dba,imp_full_database,exp_full_database,connect,resource,create session to 用戶名;
  • 1

?例如:

SQL> grant create user,drop user,alter user ,create any view ,drop any view,exp_full_database,imp_full_database,dba,connect,resource,read,write,create session to abc;
  • 1

二、采用exp/imp命令

知識擴充:?
?數據泵導出導入(EXPDP和IMPDP)的作用?
? 1、實現邏輯備份和邏輯恢復。?
? 2、在數據庫用戶之間移動對象。?
? 3、在數據庫之間移動對象?
? 4、實現表空間搬移。?
?數據泵導出導入與傳統導出導入的區別:?
??在10g之前,傳統的導出和導入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了數據泵導出導入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項:?
??EXP和IMP是客戶段工具程序,它們既可以在客戶端使用,也可以在服務器段使用。?
?? EXPDP和IMPDP是服務端的工具程序,他們只能在ORACLE服務端使用,不能在客戶端使用?
??IMP只適用于EXP導出文件,不適用于EXPDP導出文件;IMPDP只適用于EXPDP導出文件,而不適用于EXP導出文件。

1. 導出命令

?導出與導入分別都有三種方式:?
?①完全模式導出(導入):?
??將整個數據庫內容導出,但是操作時需要有特殊權限,?
??exp 用戶名/密碼buffer=32000file=導出的目錄 full=y?
??例如:

exp system/manager buffer=32000 file=d:\iom.dmp full=y
  • 1

?②用戶模式導出(導入)?
??將指定用戶的所有對象進行導出,例如:

exp iom/iom buffer=32000 file=d:\iom.dmp owner=iom
  • 1

?③表模式導出(導入)?
??將用戶的所有表數據進行導出,例如:

exp iom/iom buffer=32000 file=d:\iom.dmp owner=iom tables=(iom)
  • 1

?備注:可以執行exp help=y、imp help=y查看幫助命令,以及執行exp或者imp查看對應版本號。

?導出步驟:?
?首先切換到oracle用戶(數據庫超級管理員)

[oracle@orac ~]$ su - oracle
  • 1

?根據所需要采用的導出模式進行導出

[oracle@orac~]$exp iom/iom file=iom.dmp log=oradb.log full=y compress=y direct=y
  • 1

??COMPRESS參數將在導出的同時合并碎塊,盡量把數據壓縮到initial的EXTENT里,默認是N,一般建議使用。DIRECT參數將告訴EXP直接讀取數據,而不像傳統的EXP那樣,使用SELECT來讀取表中的數據,這樣就減少了SQL語句處理過程。一般也建議使用。不過有些情況下DIRECT參數是無法使用的。?
其他參數可參照幫助命令,或者其他資料進行學習。在此不一一贅述。

2. 導入命令

?登錄服務器,切換到oracle用戶。

[oracle@orac ~]$ su - oracle
  • 1

?執行導入命令:?
??導入時需要用準備工作中創建的新用戶,如:用戶名abc,密碼ABC?
??imp 用戶名/密碼 file=dmp文件路徑 log=輸出日志路徑full=y ignore=y;?
??例如:

[oracle@orac ~]$imp abc/ABC file=/home/oracle/iom.dmp log=/home/oracle/iom.log full=y ignore=y;
  • 1

?溫馨提示:采用數據泵導入過程經常會遇到問題,建議多查閱資料,總有方法解決。相信每一件事物都有它存在的必要性,問題只是暫時的,成功才是必然的!

三、采用第三方工具(以PLSQL為例)

1. 導出格式介紹

?① Dmp格式:.dmp是二進制文件,可跨平臺,還能包含權限,效率好,?
?② Sql格式:.sql格式的文件,可用文本編輯器查看,通用性比較好,效率不如第一種,適合小數據量導入導出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,會報錯?
?③ Pde格式:.pde格式的文件,.pde為PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具導入導出,不能用文本編輯器查看。?
?備注:雖然dmp格式為最優選,但是不容易實現,原因有倆點:首先此格式需要安裝oracle完整版,因為導出時需要選擇對應exp.exe與imp.exe,而且導出是安裝的版本要與要導出數據的數據庫版本一致,同理導入時也要對應,否則會出現版本不一致的問題(查閱資料中介紹的,個人沒有證實);其次此格式的導出經常會遇到導出過程一閃而過,但是導出不成功的情況,原因未知(可以查閱環境變量配置ORACLE_HOME配置正確,個人嘗試多次,仍有問題,最后無奈選取導出為pde格式)。

2. 導出方法

登錄plsql工具,所使用用戶為源數據庫有導出權限(exp_full_database,dba等)的用戶。?
?①導出建表語句(包括存儲結構)?
?導出步驟tools ->export user object,選擇要導出的對象,導出.sql文件,如下圖:?

??等待導出完成

?②導出數據文件?
??導出步驟tools ->export tables,選擇要導出的表及導出的格式進行導出。?
??導出為dmp格式,如下圖:?
??

??
??導出為sql格式,如下圖:?
??

??
??導出為pde格式,如下圖:?
??

?備注:采用第三方工具導出導入整個數據庫的話,耗時較長,一定要有足夠的時間來操作(數據量大的話需要好幾個小時)

3. 導入方法

登錄plsql工具,使用之前準備工作所創建的用戶。?
?步驟類似導出方法?
?①導入建表語句?
??導入步驟tools->import tables->SQL Inserts 導入.sql文件?
?②導入數據?
?? tools->import talbes,然后再根據導出的數據格式選擇導入dmp文件,或者sql文件,或者pde文件。?
??備注:導入之前最好把以前的表刪除,當然導入另外數據庫除外。?
?????另外導入時當發現進度條一直卡在一個點,而且導出的文件不再增大時,甚至是提示程序未響應,千萬不要以為程序卡死了,這個導入導出就是比較緩慢,只要沒有提示報錯,或者導入完成就不要停止程序。?
??
??
??
??
?

參考文獻:

  • Oracle - 數據庫的實例、表空間、用戶、表之間關系:?
    ?http://www.cnblogs.com/adforce/p/3312252.html?
    2.PL/SQL Developer導入導出數據庫方法:?
    ?http://jingyan.baidu.com/article/d5a880eb69ff7313f047cc5f.html?
    3.linux下創建oracle表空間:?
    ?http://blog.sina.com.cn/s/blog_62192aed01018aep.html?
    4.plsql連接64位數據庫及plsql導出表閃現錯誤:?
    ?http://201405221449.iteye.com/blog/2241714?
    5.oracle安裝包官網下載:?
    ?http://www.oracle.com/technetwork/topics/winsoft-085727.html?
    6.ORACLE 表空間擴展方法:?
    ?http://www.2cto.com/database/201110/109669.html?
    7.Exp/imp命令詳解:?
    ?http://blog.csdn.net/caijing3210/article/details/7528788?
    ?http://www.cnblogs.com/yugen/archive/2010/07/25/1784763.html?
    ?http://www.cnblogs.com/whsa/p/3975817.html
  • ??
    ?

    備注:該博客為學習交流之用,有內容為參考其他博客,如有侵權請速與本人聯系,本人將第一時間處理,謝謝合作!

    ?

    版權聲明:本文為博主原創文章,轉載需要注明出處 https://blog.csdn.net/Cow_cz/article/details/70229929

    轉載于:https://www.cnblogs.com/alsodzy/p/8675935.html

    總結

    以上是生活随笔為你收集整理的oracle数据库数据导入导出步骤(入门)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。