1、匯出工具的參數詳解
- [Oracle@linux exp]$ exp help=y
-
- Export: Release 10.2.0.4.0 - Production on 星期三 10月 5 15:08:57 2011
-
- Copyright (c) 1982, 2007, Oracle. All rights reserved.
-
-
-
- 通過輸入 EXP 命令和您的使用者名稱/口令, 匯出
- 操作將提示您輸入參數:
-
- 例如: EXP SCOTT/TIGER
-
- 或者, 您也可以通過輸入跟有各種參數的 EXP 命令來控制匯出
- 的運行方式。要指定參數, 您可以使用關鍵字:
-
- 格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
- 例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
- 或 TABLES=(T1:P1,T1:P2), 如果 T1 是分區表
-
- USERID 必須是命令列中的第一個參數。
-
- 關鍵字 說明 (預設值) 關鍵字 說明 (預設值)
- --------------------------------------------------------------------------
- USERID 使用者名稱/口令 FULL 匯出整個檔案 (N)
- BUFFER 資料緩衝區大小 OWNER 所有者使用者名稱列表
- FILE 輸出檔案 (EXPDAT.DMP) TABLES 表名列表
- COMPRESS 匯入到一個區 (Y) RECORDLENGTH IO 記錄的長度
- GRANTS 匯出許可權 (Y) INCTYPE 增量匯出類型
- INDEXES 匯出索引 (Y) RECORD 跟蹤增量匯出 (Y)
- DIRECT 直接路徑 (N) TRIGGERS 匯出觸發器 (Y)
- LOG 螢幕輸出的記錄檔 STATISTICS 分析對象 (ESTIMATE)
- ROWS 匯出資料行 (Y) PARFILE 參數檔案名稱
- CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 匯出的約束條件 (Y)
-
- OBJECT_CONSISTENT 只在對象匯出期間設定為唯讀交易處理 (N)
- FEEDBACK 每 x 行顯示進度 (0)
- FILESIZE 每個轉儲檔案的最大大小
- FLASHBACK_SCN 用於將會話快照設定回以前狀態的 SCN
- FLASHBACK_TIME 用於擷取最接近指定時間的 SCN 的時間
- QUERY 用於匯出表的子集的 select 子句
- RESUMABLE 遇到與空格相關的錯誤時掛起 (N)
- RESUMABLE_NAME 用於標識可恢複語句的文本字串
- RESUMABLE_TIMEOUT RESUMABLE 的等待時間
- TTS_FULL_CHECK 對 TTS 執行完整或部分相關性檢查
- VOLSIZE 寫入每個磁帶卷的位元組數
- TABLESPACES 要匯出的資料表空間列表
- TRANSPORT_TABLESPACE 匯出可傳輸的資料表空間中繼資料 (N)
- TEMPLATE 調用 iAS 模式匯出的模板名
-
- 成功終止匯出, 沒有出現警告。
2、常用匯出命令
完全模式匯出(整個資料庫)
- exp system/oracle@orcl full=y file=demo1.dmp log=demo1.log
使用者模式匯出(匯出使用者ing下面的所有對象)
- exp system/oracle owner=ing file=demo2.dmp log=demo2.log
表模式匯出(匯出使用者ing下的dept表)
- exp system/oracle tables=ing.dept file=demo3.dmp log=demo3.log
帶where條件的匯出(匯出使用者ing下dept表的前兩行)
- exp system/oracle tables=ing.dept query=\"where rownum \< 3\" file=demo4.dmp log=demo4.log
模糊匯出(匯出使用者ing下以de開頭的表)
- exp system/oracle@orcl tables=ing.de% file=demo5.dmp log=demo5.log
3、通過dmp檔案察看Oracle字元集
首先通過UE等編輯軟體開啟dmp檔案或者在Linux下執行如下然後察看第二、三位元組。如果dmp檔案很大,比如有2G以上(這也是最常見的情況),用文字編輯器開啟很慢或者完全打不開,可以用以下命令(在linux主機上):
- [oracle@linux exp]$ cat demo5.dmp | od -x | head -1 | awk '{print $2 $3}' | cut -c 3-6
- 0345
- SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
-
- NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX'
- ----------------------------------------
- ZHS16GBK
4、匯出許可權問題
如果是普通使用者匯出、匯入,需要授予許可權
- SQL> grant exp_full_database,imp_full_database to ing;
-
- 授權成功。
5、字元集問題
在匯出的時候最還設定用戶端的字元集和資料庫一樣。
- [oracle@linux exp]$ echo $NLS_LANG
- SIMPLIFIED CHINESE_CHINA.ZHS16GBK