簡單導出數據(Export)和導入數據(Import)
Oracle支持三種方式類型的輸出:
(1)、表方式(T方式),將指定表的數據導出。
(2)、用戶方式(U方式),將指定用戶的所有對象及數據導出。
(3)、全庫方式(Full方式),瘵數據庫中的所有對象導出。
數據導入(Import)的過程是數據導出(Export)的逆過程,分別將數據文件導入數據庫和將數據庫數據導出到數據文件。
將數據庫TEST完全導出,用戶名zna 密碼zna 導出到D:\exp.dmp中 exp zna/znar@zna file=c:\exp.dmp full=y
將數據庫中system用戶與sys用戶的表導出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
將數據庫中的表table1 、table2導出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
將數據庫中的表table1中的字段filed1以”00″打頭的數據導出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\” where filed1 like '00%'\”
將D:\daochu.dmp 中的數據導入 TEST數據庫中。 imp system/manager@TEST file=d:\daochu.dmp
上面可能有點問題,因爲有的表已經存在,然後它就報錯,對該表就不進行導入。 在後面加上 ignore=y 就可以了。
將d:\daochu.dmp中的表table1 導入 imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
以上是基本的導入和導出的命令,如果你想把數據庫從這臺服務器遷移到另一臺服務器,但是發現另一臺服務器上有同樣的環境的時候怎麼辦呢?
唯一的辦法就是刪除掉對應的用戶空間,和用戶對象,導入的時候重建。
刪除的方法:
drop tablespace XXXX INCLUDING CONTENTS;
drop user XXXX cascade;
刪除完以後,進行以下的重建操作:
//創建臨時表空間 create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserver\test_temp01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local; //創建數據表空間 create tablespace test_data logging datafile 'E:\oracle\product\10.2.0\oradata\testserver\test_data01.dbf' size 32m autoextend on next 32m maxsize 2048m extent management local; //創建用戶並指定表空間 create user testserver_user identified by testserver_user default tablespace test_data temporary tablespace test_temp; //給用戶授予權限 grant connect,resource to testserver_user;
# 對用戶授權 grant create session,dba to angeos; CREATE SESSION是一個系統特權,它可以爲用戶提供連接數據庫的能力。 DBA是一個具有超過120個系統特權的角色,所以它可以讓用戶在數據庫中完成幾乎任何工作。
以上的操作均以sysdba的身份進行,完成建立用戶和授權以後,就可以採用imp的方式,把所有的對象信息都一併導入了。