導入/導出是ORACLE幸存的最古老的兩個命令行工具
如何使exp的幫助以不同的字符集顯示
EXP的所有參數(括號中為參數的默認值)
USERID 用戶名/口令 如
FULL 導出整個數據庫 (N)
BUFFER 數據緩沖區的大小
OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT
TABLES 表名列表
COMPRESS 導入一個extent (Y)
RECORDLENGTH IO 記錄的長度
GRANTS 導出權限 (Y)
INCTYPE 增量導出類型
INDEXES 導出索引 (Y)
RECORD 跟蹤增量導出 (Y)
ROWS 導出數據行 (Y)
PARFILE 參數文件名
CONSTRAINTS 導出約束 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕輸出的日志文件
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 導出觸發器 (Y)
FEEDBACK 顯示每 x 行 (
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表
IMP的所有參數(括號中為參數的默認值)
USERID 用戶名/口令
FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小
FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT
TOUSER 用戶名列表
SHOW 只列出文件內容 (N)
TABLES 表名列表
IGNORE 忽略創建錯誤 (N)
RECORDLENGTH IO 記錄的長度
GRANTS 導入權限 (Y)
INCTYPE 增量導入類型
INDEXES 導入索引 (Y)
COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y)
PARFILE 參數文件名
LOG 屏幕輸出的日志文件
CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
ANALYZE 執行轉儲文件中的 ANALYZE 語句 (Y)
FEEDBACK 顯示每 x 行 (
TOID_NOVALIDATE 跳過指定類型 id 的校驗
FILESIZE 各轉儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到數據庫的表空間
DATAFILES 將要傳輸到數據庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
關於增量參數的說明
使用方法
Exp parameter_name=value or Exp parameter_name=(value
只要輸入參數help=y就可以看到所有幫助
EXP常用選項
exp userid=test/test file=
注
exp test/test file=
exp userid=test/test file=
注:有的時候我們可能會遇到只導出單表的情況
exp userid=test/test file=
exp userid=test/test file=yw
exp userid=duanl/duanl file=f
這樣將創建f
EXP不必創建f
IMP常用選項
imp userid=test
表空間傳輸
表空間傳輸是
關於傳輸表空間有一些規則
·源數據庫和目標數據庫必須運行在相同的硬件平台上
·源數據庫與目標數據庫必須使用相同的字符集
·源數據庫與目標數據庫一定要有相同大小的數據塊
·目標數據庫不能有與遷移表空間同名的表空間
·SYS的對象不能遷移
·必須傳輸自包含的對象集
·有一些對象
可以用以下的方法來檢測一個表空間或一套表空間是否符合傳輸標准
exec sys
select * from sys
如果沒有行選擇
以下為簡要使用步驟
alter tablespace app_data read only;
alter tablespace app_index read only;
SQL>host exp userid=”””sys/password as sysdba”””
transport_tablespace=y tablespace=(app_data
以上需要注意的是
·為了在SQL中執行EXP
·在
·這個命令在SQL中必須放置在一行(這裡是因為顯示問題放在了兩行)
可以是cp(unix)或copy(windows)或通過ftp傳輸文件(一定要在bin方式)
imp file=expdat
alter tablespace app_data read write;
alter tablespace app_index read write;
優化EXP/IMP的方法
當需要exp/imp的數據量比較大時
exp:使用直接路徑 direct=y
oracle會避開sql語句處理引擎
可以在導出日志中觀察到: exp
如果沒有使用直接路徑
有一些參數於direct=y不兼容
當導入導出的數據庫運行在不同的os下時
imp:通過以下幾個途徑優化
將sort_area_size設置為一個較大的值
增加重做日志組的數量
比如將log_buffer容量擴大
commit = y
注意:陣列方式不能處理包含LOB和LONG類型的表
在導入時指定參數indexes=n
導出/導入與字符集
進行數據的導入導出時
我們首先需要查看這四個字符集參數
查看數據庫的字符集的信息
SQL> select * from nls_database_parameters;
PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS
NLS_CHARACTERSET ZHS
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH
NLS_TIMESTAMP_FORMAT DD
NLS_TIME_TZ_FORMAT HH
NLS_TIMESTAMP_TZ_FORMAT DD
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_NCHAR_CHARACTERSET ZHS
NLS_RDBMS_VERSION
NLS_CHARACTERSET
我們再來查看客戶端的字符集信息
客戶端字符集的參數NLS_LANG=_< territory >
language
Territory
Characterset
在windows中
HKEY_LOCAL_MACHINESOFTWAREOracleHOMExx
xx指存在多個Oracle_HOME時的系統編號
在unix中
$ env|grep NLS_LANG
NLS_LANG=simplified chinese_china
修改可用
$ export NLS_LANG=AMERICAN_AMERICA
通常在導出時最好把客戶端字符集設置得和數據庫端相同
(
這時
(
先將導出端客戶端的NLS_LANG設置成和導出端的數據庫字符集一致
這種情況下
不同版本的EXP/IMP問題
一般來說
但在
EXP
orA
這已經是一個公布的BUG
BUG歸BUG
Create or REPLACE view exu
(objown
AS select u
decode(bitand(r
|| decode(bitand(r
|| decode(bitand(r
|| decode(bitand(r
r
DECODE(BITAND(r
from user$ u
where u
and r
and (uid =
uid = o
exists ( select * from session_roles where role=
)
/
grant select on sys
/
可以跨版本的使用EXP/IMP
From:http://tw.wingwit.com/Article/program/Oracle/201311/19071.html