程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> oracel數據導出導入,oracel數據導出

oracel數據導出導入,oracel數據導出

編輯:Oracle教程

oracel數據導出導入,oracel數據導出


一、導出模式(三種模式)及命令格式

1、 全庫模式

exp 用戶名/密碼@網絡服務名 full=y file=路徑\文件名.dmp log=路徑\文件名.log

2、 用戶模式(一般情況下采用此模式)

exp 用戶名/密碼@網絡服務名 owners=(用戶1,用戶2,用戶3,…) file=路徑\文件名.dmp log=路徑\文件名.log

3、 表模式

exp 用戶名/密碼@網絡服務名 tables=(表名1,表名2,表名3,…)file=路徑\文件名.dmp log=路徑\文件名.log

4、 另外,還可以只導出某個表空間

exp 用戶名/密碼@網絡服務名 tablespaces=(表空間1,表空間2,表空間3,…) file=路徑\文件名.dmp log=路徑\文件名.log

二、導入模式(三種模式)及命令格式

1、 全庫模式

imp 用戶名/密碼@網絡服務名 full=y file=路徑\文件名.dmp log=路徑\ds110.log

2、 用戶模式(一般情況下采用此模式)

imp 用戶名/密碼@網絡服務名 file=路徑\文件名.dmp fromuser=導出的用戶名 touser=導入的用戶名 log=路徑\ds110.log

3、 表模式

imp 用戶名/密碼@網絡服務名 tables=(表名1,表名2,表名3,…)file=路徑\文件名.dmp fromuser=導出的用戶名 touser=導入的用戶名 log=路徑\ds110.log

4、 另外,還可以只導入某個表空間

imp 用戶名/密碼@網絡服務名 tablespaces=(表空間1,表空間2,表空間3,…) file=路徑\文件名.dmp fromuser=導出的用戶名 touser=導入的用戶名 log=路徑\ds110.log

三、導入的命令參數說明

USERID 用戶名/密碼

FULL 是否全庫導入 (Y 或 N),默認為 N

BUFFER 數據緩沖的大小

FROMUSER 導出的用戶列表,即導入文件是從哪個用戶導出的

TOUSER 導入的用戶列表,即要到哪個用戶中

FILE 導入文件,是dmp文件

SHOW 只列出文件內容 (Y 或 N) ,默認為 N 

TABLES 要導入的表名列表

IGNORE 在導入過程中是否忽略錯誤 , 默認為 N

RECORDLENGTH 記錄的長度,默認為operating system-dependent

GRANTS 導入權限 (Y 或 N),默認為Y

INCTYPE 導入的類型是否為遞增(Y 或 N),默認為 N 

INDEXES 導入索引 (Y 或 N) ,默認為Y

COMMIT 在導入過程中,是否導入一行數據,提交一行 (Y 或 N)默認為N,即在每個表導入後,進行提交

ROWS 導入行數據 (Y 或 N) ,默認為 Y

PARFILE 參數文件名

LOG 輸出的日志文件

DESTROY 是否覆蓋表空間上的數據文件 (Y 或 N) 默認為N

INDEXFILE 將表或索引信息寫到指定的文件中

CHARSET 導出文件的字符集,默認為 NLS_LANG

ANALYZE 在導入時執行ANALYZE語句 (Y 或 N) 默認為 Y

FEEDBACK 在導入時每個幾行顯示進度,默認為0

四、導出的命令參數說明

USERID 用戶名/密碼

FULL 是否全庫導入 (Y 或 N),默認為 N

BUFFER 數據緩沖的大小

OWNER 導出的用戶列表

FILE 導出文件,是dmp文件

TABLES 要導出的表名列表

COMPRESS 是否壓縮(Y 或 N), 默認為Y 

RECORDLENGTH 輸入輸出記錄的長度,默認為operating system-dependent

GRANTS 導出權限 (Y 或 N),默認為Y

INCTYPE 導出的類型是否為遞增(Y 或 N),默認為 N 

INDEXES 導出索引 (Y 或 N) ,默認為Y

RECORD 是否在系統SYS.INCEXP, SYS.INCFIL中記錄一個遞增或累計的導出(Y 或 N) , 默認為Y 

ROWS 導出行數據 (Y 或 N) ,默認為 Y

PARFILE 參數文件名

CONSTRAINTS 是否導出約束,(Y 或 N) ,默認為 Y 

CONSISTENT 在執行導出操作時是否加事務(Y 或 N),默認為 N 

LOG 輸出的日志文件

STATISTICS 在導出時執行ANALYZE語句 (Y 或 N) 默認為 Y

DIRECT direct path (N) 

FEEDBACK 在導出時每個幾行顯示進度,默認為0

五、導出的對象

1、 全庫模塊

可以導出除sys用戶擁有的所有數據庫對象,包括:表空間的定義、配置文件、用戶定義、角色、系統權限授權、角色授權、默認角色、resource costs、會滾段的定義、數據庫鏈接、虛列、所有目錄別名、所有外部函數庫、所有對象類型、所有簇定義;對於每個表,還可導出表使用的對象類型定義、表定義、表數據、嵌套表數據、表索引、表約束、表授權、分析表、列和表注釋、審核信息、所有引用的完整性約束、所有同義詞、所有視圖、所有存儲過程、包、函數、所有觸發器、分析簇、快照、job、all refresh groups and children

2、 用戶模塊

對象類型、數據庫鏈路、序列、簇定義,對於每個表,還可導出表使用的對象類型定義、表定義、表數據、嵌套表數據、表索引、表約束、表授權、分析表、列和表注釋、審核信息、屬於當前用戶的表所引用的完整性約束、同義詞、視圖、存儲過程、包、函數、觸發器、分析簇、快照、job、refresh groups

3、 表模式

可導出表使用的對象類型定義、表定義、表數據、嵌套表數據、表索引、表約束、表授權、分析表、列和表注釋、審核信息、表引用的完整性約束、觸發器,還可導出其他用戶擁有的觸發器、其他用戶用戶的索引

六、導入時的順序

1、 字符集

2、 表定義

3、 表數據

4、 表索引

5、 完整性約束、觸發器、bitmap索引

6、 視圖、函數、過程

7、 包

七、高級應用

1、 當把數據加載到一張已存在的表中,必須使用參數IGNORE = Y

2、 如何在導出表時加入條件

Exp 用戶名/密碼@網絡服務名 file=路徑\文件名.dmp tables=(表名) query = \”條件\”

3、

八、全庫導入時包含的系統對象

配置文件profiles

公共數據庫鏈接

同義詞

角色

會滾段的定義

system audit options 

系統權限

表空間定義

tablespace quotas 

用戶定義

目錄別名

九、導入工具imp可能出現的問題

1、數據庫對象已經存在

一般情況, 導入數據前應該徹底刪除目標數據下的表, 序列, 函數/過程,觸發器等;數據庫對象已經存在, 按缺省的imp參數, 則會導入失敗;如果用了參數ignore=y, 會把exp文件內的數據內容導入;如果表有唯一關鍵字的約束條件, 不合條件將不被導入,如果表沒有唯一關鍵字的約束條件, 將引起記錄重復

2、 數據庫對象有主外鍵約束
 這發生在將幾個包含表的DMP文件分別導入數據庫時,不符合主外鍵約束, 數據便會導入失敗;解決辦法: 先導入主表, 再導入依存表;disable目標導入對象的主外鍵約束, 導入數據後, 再enable它們
3、 權限不夠          
如果要把A用戶的數據導入B用戶下, 做導入操作的用戶需要有imp_full_database權限
4、 導入大表( 大於80M ) 時, 存儲分配失敗
默認的EXP時, compress = Y, 也就是把所有的數據壓縮在一個數據塊上,導入時, 如果不存在連續一個大數據塊, 則會導入失敗,導出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤.
5、 imp和exp使用的字符集不同
如果字符集不同, 導入會失敗, 可以改變unix環境變量或者NT注冊表裡NLS_LANG相關信息,導入完成後再改回來.
6、 imp和exp版本不能往上兼容

imp可以成功導入低版本exp生成的文件, 不能導入高版本exp生成的文件

 

十、 從一個賬戶導出,另一個賬戶導入

導出表模式示例:

1 從dbo_pwcdb 賬號導出 PRNBSN_CONTENTTEMPLATE,PRNBSN_RELINFOCONTENT 兩個表,不帶數據

exp dbo_pwcdb/dbo_pwcdb@BSY2-NQQX-IP50 file=d:\daochu_noData.dmp tables=

(PRNBSN_CONTENTTEMPLATE,PRNBSN_RELINFOCONTENT) rows=n;

2  導入 dbo_smydb 賬戶

imp dbo_smydb/dbo_smydb@BSY2-SMY-IP11 full=y file=d:\daochu_noData.dmp  touser=dbo_smydb ignore=y;

 

十一、 借助PL/SQL  Developer 工具 導出導入 觸發器,存儲過程,序列,索引等對象。

1   A賬戶登錄PL/SQL Developer 工具,在菜單中選擇 工具--->導出用戶對象

2 以導出存儲過程為示例,選擇如下圖:

image

 

在procedure 對象中,選擇需要導出的存儲過程對象,設置輸出文件名字,點擊導出。

3 如果在需要導入的oracle庫中,是同一個名字的賬戶,可以直接新建一個命令窗口,然後復制剛才導出fun_proc.sql的內容,粘貼到 命令窗口中,就自動執行了;相當於通過sql腳本進行導入;

  如果需要導入的oracle庫中,是另外一個名字的賬戶,比如B賬戶。那麼需要打開fun_proc.sql 文件,查找所有A賬戶名全部替換為B賬戶,然後再用B賬戶登錄PL/SQL Developer 工具,新建命令窗口,粘貼文件內容,執行。

    注意:生成的存儲過程名字會如下形式 Create procedure   賬戶A.存儲過程名                      所以需要替換為 Create procedure   賬戶B.存儲過程名. 打開看下就明白了。

   其他對象的導入參照存儲過程對象導入方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved