export 導出資料,dmp檔案,其實就是select。
import 導入資料,其實就是insert
缺陷:導出的時候需要全表導出,速度慢,不是實時,而且是邏輯備份
1:EXP
exp導出分為一下幾種模式
表模式: 導出某個使用者下指定的表
使用者模式: 導出某個使用者下所有的對象
資料庫模式: 導出除sys以外資料庫裡所有的對象,exp_full_database權限
可傳輸表空間: 導出某個表空間所有對象
exp語句使用幫助:$ exp help=y
1.1:導出某個使用者下指定的表
$ exp doiido/doiido file=doiido.dmp tables=(doiido,boy) log=doiido.log
1.2:導出某個使用者下所有的對象
$ exp doiido/[email protected] file=doiido.dmp owner=doiido log=doiido.log
1.3:導出整個資料庫(除了sys使用者下的資料字典)
SQL> grant exp_full_database to doiido;
$ exp doiido/doiido file=doiido.dmp full=y log=doiido.log
1.4:導出表空間
$ exp system/[email protected] file=doiido.dmp tablespaces=(doiido)
1.5:在windows下遠端導出
C:\Windows\system32>exp doiido/[email protected]:1521/doiido file=d:\doiido.dmp tables=boy log=d:\doiido.log
導出的兩種方式
傳統路徑:使用SQL語句查詢方式,需要經過緩存
直接路徑:使用資料塊抽取方式,direct=y
2:IMP導入
1:導入某個使用者指定的表
$ imp doiido/doiido file=doiido.dmp tables=(doiido,boy) log=doiido.log
2:導入使用者test所有的對象到doiido
$ imp doiido/doiido file=doiido.dmp fromuser=test touser=doiido log=doiido.log
執行導入的順序
建立表結構
導入表的資料
建立相關索引
導入觸發器
對導入的表啟用完整性限制
建立所有位圖、函數以及其他索引
imp的時候如果導入的表已經存在
ignore=y ##表示導入的時候忽略同名對象,導入的操作是追加
3:其他
(1)導入導出的過程可以更換使用者,但是必須有相同的表空間在,這樣導入才能夠成功
(2)導出的時候會有wainings是正常的,因為有些索引或主外鍵之類的沒有被導出
(3)導入導出的時候還需要注意字元集的必須是相同或者是子集