Ⅰ oracle中exp命令怎樣使用
exp三種用法:
1、exp 導出某個用戶全部資料庫
格式:exp ywxy/ywxy@ORCL file=d:/chu1.dmp full=y;
ywxy/ywxy@ORCL 是用戶名/密碼@資料庫名
file=d:/chu1.dmp 是導出的路徑
full=y 是導出全庫
2、exp 導出某個用戶的某個庫
格式:exp ywxy/ywxy@ORCL file=d:/chu1.dmp owner=system;
ywxy/ywxy@ORCL 是用戶名/密碼@資料庫名
file=d:/chu1.dmp 是導出的路徑
owner=system 是要導出的庫
3、exp 導出某個用戶的某個表
格式:exp ywxy/ywxy@ORCL file=d:/chu1.dmp tables=C_ZX_QYJC;
ywxy/ywxy@ORCL 是用戶名/密碼@資料庫名
file=d:/chu1.dmp 是導出的路徑
tables=C_ZX_QYJC 是導出的表名字,多個表名則 (table1,table2)形式
(1)exp壓縮導出擴展閱讀:
常用選項:
1、FULL,用於導出整個資料庫,在ROWS=N一起使用時,可以導出整個資料庫的結構。
2、OWNER和TABLE,這兩個選項用於定義EXP的對象。OWNER定義導出指定用戶的對象,TABLE指定EXP的table名稱。
⒊BUFFER和FEEDBACK,在導出比較多的數據時,考慮設置這兩個參數。
⒋FILE和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括文件名和目錄。
⒌COMPRESS參數不壓縮導出數據的內容。用來控制導出對象的storage語句如何產生。默認值為Y,使用默認值,對象的存儲語句的init extent等於當前導出對象的extent的總和。推薦使用COMPRESS=N。
⒍ FILESIZE該選項在8i中可用。如果導出的dmp文件過大時,最好使用FILESIZE參數,限制文件大小不要超過2G。
Ⅱ 怎麼使用expdp 壓縮導出oracle數據
EXPDP導出
一:導出前期准備:
1.創建目錄對象:
CREATE DIRECTORY mp_dir AS 'c:\mp';
2.在操作系統上創建相應的目錄。
3.把目錄的讀寫許可權給用戶:
GRANT READ, WRITE ON DIRECTORY mp_dir TO scott;二:導出的模型
1.導出表
Expdp scott/tiger DIRECTORY=mp_dir DUMPFILE=tab.dmp logfile=testexpdp.log TABLES=dept, emp2.導出方案(用戶)
Expdp scott/tiger DIRECTORY=mp_dir DUMPFILE=schema.dmp logfile=testexpdp.log SCHEMAS=system,scott3.導出表空間
Expdp system/manager DIRECTORY=mp_dir logfile=testexpdp.log DUMPFILE=tablespace.dmpTABLESPACES=user01,user02
4.導出資料庫
Expdp system/manager DIRECTORY=mp_dir DUMPFILE=full.dmp logfile=testexpdp.log FULL=Y三:EXPDP命令行選項:
1. ATTACH
該選項用於在客戶會話與已存在導出作用之間建立關聯.語法如下ATTACH=[schema_name.]job_name
Schema_name用於指定方案名,job_name用於指定導出作業名.注意,如果使用ATTACH選項,在命令行除了連接字元串和ATTACH選項外,不能指定任何其他選項,示例如下:
Expdp scott/tiger ATTACH=scott.export_job2. CONTENT
該選項用於指定要導出的內容.默認值為ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
當設置CONTENT為ALL 時,將導出對象定義及其所有數據.為DATA_ONLY時,只導出對象數據,為METADATA_ONLY時,只導出對象定義Expdp scott/tiger DIRECTORY=mp DUMPFILE=a.mpCONTENT=METADATA_ONLY
3. DIRECTORY
指定轉儲文件和日誌文件所在的目錄
DIRECTORY=directory_object
Directory_object用於指定目錄對象名稱.需要注意,目錄對象是使用CREATE DIRECTORY語句建立的對象,而不是OS 目錄Expdp scott/tiger DIRECTORY=mp DUMPFILE=a.mp建立目錄:
CREATE
查詢創建了那些子目錄:
SELECT * FROM dba_directories;
4. DUMPFILE
用於指定轉儲文件的名稱,默認名稱為expdat.dmpDUMPFILE=[directory_object:]file_name [,….]
Directory_object用於指定目錄對象名,file_name用於指定轉儲文件名.需要注意,如果不指定directory_object,導出工具會自動使用DIRECTORY選項指定的目錄對象Expdp scott/tiger DIRECTORY=mp1 DUMPFILE=mp2:a.dmp5. ESTIMATE
指定估算被導出表所佔用磁碟空間分方法.默認值是BLOCKSEXTIMATE={BLOCKS | STATISTICS}
設置為BLOCKS時,oracle會按照目標對象所佔用的數據塊個數乘以數據塊尺寸估算對象佔用的空間,設置為STATISTICS時,根據最近統計值估算對象佔用空間Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICSDIRECTORY=mp DUMPFILE=a.mp
6. EXTIMATE_ONLY
指定是否只估算導出作業所佔用的磁碟空間,默認值為NEXTIMATE_ONLY={Y | N}
設置為Y時,導出作用只估算對象所佔用的磁碟空間,而不會執行導出作業,為N時,不僅估算對象所佔用的磁碟空間,還會執行導出操作.
Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y7. EXCLUDE
該選項用於指定執行操作時釋放要排除對象類型或相關對象EXCLUDE=object_type[:name_clause] [,….]
Object_type用於指定要排除的對象類型,name_clause用於指定要排除的具體對象.EXCLUDE和INCLUDE不能同時使用Expdp scott/tiger DIRECTORY=mp DUMPFILE=a.p EXCLUDE=VIEW8. FILESIZE
指定導出文件的最大尺寸,默認為0,(表示文件尺寸沒有限制)9. FLASHBACK_SCN
指定導出特定SCN時刻的表數據
FLASHBACK_SCN=scn_value
Scn_value用於標識SCN值.FLASHBACK_SCN和FLASHBACK_TIME不能同時使用Expdp scott/tiger DIRECTORY=mp DUMPFILE=a.dmpFLASHBACK_SCN=358523
10. FLASHBACK_TIME
指定導出特定時間點的表數據
FLASHBACK_TIME=」TO_TIMESTAMP(time_value)」
Expdp scott/tiger DIRECTORY=mp DUMPFILE=a.dmp FLASHBACK_TIME=「TO_TIMESTAMP(』25-08-2004 14:35:00』,』DD-MM-YYYY HH24:MI:SS』)」
11. FULL
指定資料庫模式導出,默認為N
FULL={Y | N}
為Y時,標識執行資料庫導出.
12. HELP
指定是否顯示EXPDP命令行選項的幫助信息,默認為N當設置為Y時,會顯示導出選項的幫助信息.
Expdp help=y
13. INCLUDE
指定導出時要包含的對象類型及相關對象
INCLUDE = object_type[:name_clause] [,… ]
14. JOB_NAME
指定要導出作用的名稱,默認為SYS_XXX
JOB_NAME=jobname_string
15. LOGFILE
指定導出日誌文件文件的名稱,默認名稱為export.logLOGFILE=[directory_object:]file_name
Directory_object用於指定目錄對象名稱,file_name用於指定導出日誌文件名.如果不指定directory_object.導出作用會自動使用DIRECTORY的相應選項值.
Expdp scott/tiger DIRECTORY=mp DUMPFILE=a.dmp logfile=a.log16. NETWORK_LINK
指定資料庫鏈名,如果要將遠程資料庫對象導出到本地常式的轉儲文件中,必須設置該選項.
17. NOLOGFILE
該選項用於指定禁止生成導出日誌文件,默認值為N.
18. PARALLEL
指定執行導出操作的並行進程個數,默認值為1
19. PARFILE
指定導出參數文件的名稱
PARFILE=[directory_path] file_name
20. QUERY
用於指定過濾導出數據的where條件
QUERY=[schema.] [table_name:] query_clauseSchema用於指定方案名,table_name用於指定表名,query_clause用於指定條件限制子句.QUERY選項不能與CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等選項同時使用.
Expdp scott/tiger directory=mp mpfiel=a.dmpTables=emp query=』WHERE deptno=20』
21. SCHEMAS
該方案用於指定執行方案模式導出,默認為當前用戶方案.
22. STATUS
指定顯示導出作用進程的詳細狀態,默認值為0
23. TABLES
指定表模式導出
TABLES=[schema_name.]table_name[:partition_name][,…]
Schema_name用於指定方案名,table_name用於指定導出的表名,partition_name用於指定要導出的分區名.
24. TABLESPACES
指定要導出表空間列表
25. TRANSPORT_FULL_CHECK
該選項用於指定被搬移表空間和未搬移表空間關聯關系的檢查方式,默認為N.
當設置為Y時,導出作用會檢查表空間直接的完整關聯關系,如果表空間所在表空間或其索引所在的表空間只有一個表空間被搬移,將顯示錯誤信息.當設置為N時,導出作用只檢查單端依賴,如果搬移索引所在表空間,但未搬移表所在表空間,將顯示出錯信息,如果搬移表所在表空間,未搬移索引所在表空間,則不會顯示錯誤信息.
26. TRANSPORT_TABLESPACES
指定執行表空間模式導出
27. VERSION
指定被導出對象的資料庫版本,默認值為COMPATIBLE.
VERSION={COMPATIBLE | LATEST | version_string}
為COMPATIBLE時,會根據初始化參數COMPATIBLE生成對象元數據;為LATEST時,會根據資料庫的實際版本生成對象元數據.version_string用於指定資料庫版本字元串.
Ⅲ exp是什麼意思
1、exp(語言函數)
exp,高等數學里以自然常數e為底的指數函數,它同時又是航模名詞,全稱Exponential(指數曲線)。在醫葯說明中,EXP是指使用期限,即Expiry date(Exp date) 。
除此之外,EXP(Expedition) 是世界著名項目管理軟體供應商美國Primavera公司的主要產品之一,是國際規范的施工管理和合同及建設信息管理軟體。exp還指行業軟體的高級專家版,在靈活性和功能上比專業版(pro)更加強大,也更加復雜。
(3)exp壓縮導出擴展閱讀
常用選項
1、FULL,這個用於導出整個資料庫,在ROWS=N一起使用時,可以導出整個資料庫的結構。例如:
exp userid=test/test file=./db_str.dmplog=./db_str.log full=y rows=n compress=y direct=y
2、OWNER和TABLE,這兩個選項用於定義EXP的對象。OWNER定義導出指定用戶的對象;TABLE指定EXP的table名稱,例如:
exp userid=test/test file=./db_str.dmplog=./db_str.log owner=anl
exp userid=test/test file=./db_str.dmp log=./db_str.logtable=nc_data,fi_arap
3、BUFFER和FEEDBACK,在導出比較多的數據時,我會考慮設置這兩個參數。例如:
exp userid=test/test file=yw97_2003.dmplog=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT
4、FILE和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括文件名和目錄,例子見上面。
5、COMPRESS參數不壓縮導出數據的內容。用來控制導出對象的storage語句如何產生。默認值為Y,使用默認值,對象的存儲語句的init extent等於當前導出對象的extent的總和。推薦使用COMPRESS=N。
6、FILESIZE該選項在8i中可用。如果導出的dmp文件過大時,最好使用FILESIZE參數,限制文件大小不要超過2G。如:
exp userid=anl/anl file=f1,f2,f3,f4,f5filesize=2G owner=scott
這樣將創建f1.dmp,f2.dmp等一系列文件,每個大小都為2G,如果導出的總量小於10GEXP不必創建f5.dmp。
Ⅳ 求傻子也能用的打開exp文件的辦法
exp,樓主說的是神馬東西呢,是打開你說的cnext.exe文件所在的位置么,這個很容易,比如:X:\Dassault Systemes\B0x\intel_a\code\bin\CNEXT.exe,你就在電腦的資源管理器欄上把前面的內容(X:\Dassault Systemes\B0x\intel_a\code\bin\)復制進去,敲下回車就找到這個文件所在的位置了
不知道樓主說的是神馬,exp的用處很多的,下面是一些例子,還有很多日常用品的生產日期也用exp來表示,樓主說的是工程軟體用的exp文件么
在CS中,開啟經驗收集攻能,系統將記錄最常出沒的地點,並生成.exp文件
它是操作系統下一個可執行的文件 存放目錄/ORACLE_HOME/bin
exp導出工具將資料庫中數據備份壓縮成一個二進制系統文件.可以在不同OS間遷移
它有三種模式:
a. 用戶模式:導出用戶所有對象以及對象中的數據;
b. 表模式:導出用戶所有表或者指定的表;
c. 整個資料庫:導出資料庫中所有對象。
exp文件好象是圖紙文件 用sfpro2004工具和CATIA工程軟體可打開
Ⅳ 如何寫exp和imp腳本命令
EXP/IMP備份(導出/導入備份)
exp hely=y 說明:
USERID 用戶名/口令
FULL 導出整個文件 (N)
BUFFER 數據緩沖區的大小
OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 導入一個范圍 (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 行 (0) 的進度
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表
imp hely=y 說明:
USERID 用戶名/口令
FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小
FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP)
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 行 (0) 的進度
TOID_NOVALIDATE 跳過指定類型 id 的校驗
FILESIZE 各轉儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到資料庫的表空間
DATAFILES 將要傳輸到資料庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
導入注意事項:
(1) 資料庫對象已經存在
一般情況, 導入數據前應該徹底刪除目標數據下的表, 序列, 函數/過程,觸發器等;
資料庫對象已經存在, 按預設的imp參數, 則會導入失敗
如果用了參數ignore=y, 會把exp文件內的數據內容導入
如果表有唯一關鍵字的約束條件, 不合條件將不被導入
如果表沒有唯一關鍵字的約束條件, 將引起記錄重復
(2) 資料庫對象有主外鍵約束
不符合主外鍵約束時, 數據會導入失敗
解決辦法: 先導入主表, 再導入依存表
disable目標導入對象的主外鍵約束, 導入數據後, 再enable它們
(3) 許可權不夠
如果要把A用戶的數據導入B用戶下, A用戶需要有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.普通資料庫全部導出和導入
exp 用戶/密碼@dbName file=路徑.dmp full=y --還有其他的參數,看需要進行填寫
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=y commit=y ignore=y --全部導出
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2 --全部導入
2.指定用戶全部導出
/home/oracle/proct/9.2.0.4/bin/exp userid=用戶/密碼 --說明:本地的資料庫登入(可以指定其他資料庫,則需添加@dbName)
owner=導出的用戶名 file=導出路徑存放目錄.dmp log=導出的日誌信息.log --主要:這是不能使用full=y或則會出錯(默認該用戶全導出)
3.文件參數導出
$ exp parfile=username.par // 在參數文件中輸入所需的參數
參數文件username.par 內容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
file=/oracle/test.dmp
full=y
4.制定表導出(分區表導出及條件表導出)
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2 --或tables(table1,table2,.....)
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=(T1: table1,T2: table2,.....) --T1是分區表
$ exp scott/tiger tables=emp query=/"where job=/'salesman/' and sal/<1600/" file=/directory/scott2.dmp 或根據參數文件進行導出
5.導入(一張或多張表)
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=(table1,table2) fromuser=dbuser
touser=dbuser2 commit=y ignore=y
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
commit=y ignore=y
6.只導出數據對象不導出數據
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n --rows=n/y說明是否導出數據行
7.分割多個文件導出和導入
$ exp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m log=xxx.log full=y
$ imp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=xxx fromuser=dbuser
touser=dbuser2 commit=y ignore=y
8.增量導出和導入
a.完全增量導出(inctype=complete) // 備份整個資料庫
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete
b.增量型增量導出 導出上一次備份後改變的數據(inctype=incremental)。
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=incremental
c.累計型增量導出(Cumulative) 只導出自上次"完全"導出之後資料庫中變化的信息。
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=cumulative
d.增量導入:
$ imp usr/pwd FULL=y inctype=system/restore/inctype --(SYSTEM: 導入系統對象,RESTORE: 導入所有用戶對象)
9.使用sysdba進行導出和導入
1. 命令行方式:
A: Windows平台:
C:/> exp 'sys/sys@instance as sysdba' tables=scott.emp file=e:/emp.dmp
B: Unix & linux平台(這時的"'"需要用到轉義字元"/"):
$ exp /'sys/change_on_install@instance as sysdba/' tables=scott.emp file=/home/oracle/emp.dmp
C: 表空間導入和導出
$ imp /'usr/pwd@instance as sysdba/' tablespaces=xx transport_tablespace=y
file=xxx.dmp datafiles=xxx.dbf
2. 交互輸入方式:
exp tables=scott.emp --不輸入連接字元串,直接回車
Export: Release 10.2.0.3.0 - Proction on Fri Jun 25 07:39:46 2004 Copyright (c) 1982, 2005, Oracle. All rights reserved.
Username: sys/change_on_install@instance as sysdba --輸入連接字元串.
3.如果是寫在參數文件中,則連接字元串需要用雙引號了:USERID="sys/change_on_install@instance as sysdba"
10.表空間傳輸(建議:10g以上使用,但我試了在9i沒有找到相對應的檢查表空是否傳輸的語句,10g 支持跨平台的表空間傳輸)
注意:
l.索引在待傳輸表空間集中而表卻不在。(注意,如果表在待傳輸表空間集中,而索引不在並不違反自包含原則,當然如果你堅持這樣傳輸的話,會造成目標庫中該表索引丟失)。
2.分區表中只有部分分區在待傳輸表空間集(對於分區表,要麼全部包含在待傳輸表空間集中,要麼全不包含)。
3.待傳輸表空間中,對於引用完整性約束,如果約束指向的表不在待傳輸表空間集,則違反自包含約束;但如果不傳輸該約束,則與約束指向無關。
4.對於包含LOB列的表,如果表在待傳輸表空間集中,而Lob列不在,也是違反自包含原則的。
a.查看錶空間包含那些XML文件
select distinct p.tablespace_name
from dba_tablespaces p, dba_xml_tables x, dba_users u, all_all_tables t
where t.table_name = x.table_name
and t.tablespace_name = p.tablespace_name
and x.owner = u.username
b.檢測一個表空間是否符合傳輸標準的方法:
SQL > exec sys.dbms_tts.transport_set_check('tablespace_name',true);
SQL > select * from sys.transport_set_violations;
c.簡要使用步驟
1.設置表空間為只讀(假定表空間名字為APP_Data 和APP_Index)
SQL > alter tablespace app_data read only;
SQL > alter tablespace app_index read only;
2.發出EXP 命令
SQL> host exp userid='''sys/password as sysdba''' transport_tablespace=y
tablespaces=(app_data, app_index)
以上需要注意的是:(或則參考我自己寫的 表空間導入和導出例題)
·為了在SQL中執行EXP,USERID 必須用三個引號,在UNIX 中也必須注意避免"/"的使用
·在816 和以後,必須使用sysdba 才能操作
·這個命令在SQL中必須放置在一行(這里是因為顯示問題放在了兩行)
3.拷貝.dbf數據文件(以及.dmp 文件)到另一個地點,即目標資料庫可以是cp(unix)或(windows)或通過ftp 傳輸文件(一定要在bin方式)
4.把本地的表空間設置為讀寫
$ alter tablespace app_data read write;
$ alter tablespace app_index read write;
5.在目標資料庫附加該數據文件 (直接指定數據文件名)
(表空間不能存在,必須建立相應用戶名或者用fromuser/touser)
$ imp file=expdat.dmp userid=」」」sys/password as sysdba」」」
transport_tablespace=y datafiles=(「c:/app_data.dbf,c:/app_index.dbf」)
tablespaces=app_data,app_index tts_owners=hr,oe
6.設置目標資料庫表空間為讀寫
$ alter tablespace app_data read write;
$ alter tablespace app_index read write;
11.優化IMP/EXP的速度(修改參數配置文件)
EXP:
加大large_pool_size,可以提高exp 的速度
採用直接路徑的方式(direct=y),數據不需要經過內存進行整合和檢查.
設置較大的buffer,如果導出大對象,小buffer 會失敗。
export文件不在ORACLE 使用的驅動器上,不要export到NFS 文件系統
UNIX環境:用管道模式直接導入導出來提高imp/exp 的性能
IMP:
建立一個indexfile,在數據import完成後在建立索引
將import 文件放在不同的驅動器上
增加DB_BLOCK_BUFFERS
增加LOG_BUFFER
用非歸檔方式運行ORACLE:ALTER DATABASE NOARCHIVELOG;
建立大的表空間和回滾段,OFFLINE 其他回滾段,回滾段的大小為最大表的1/2
使用 COMMIT=N
使用ANALYZE=N
單用戶模式導入
UNIX環境:用管道模式直接導入導出來提高imp/exp 的性能
12.通過unix/Linux PIPE管道加快exp/imp速度
步驟如下:
通過管道導出數據:
1.通過mknod -p 建立管道
$ mknod /home/exppipe p // 在目錄/home下建立一個管道exppipe注意參數p
2.通過exp 和gzip 導出數據到建立的管道並壓縮
$ exp test/test file=/home/exppipe & gzip < /home/exppipe > exp.dmp.gz
$ exp test/test tables=bitmap file=/home/newsys/test.pipe &
gzip < /home/newsys/test.pipe > bitmap.dmp.gz
3.導出成功完成之後刪除建立的管道
$ rm -rf /home/exppipe
4.shell腳本可以這樣寫(我只是寫主要的)
unix下:
mkfifo /home/exp.pipe
chmod a+rw exp.pipe
compress < exp.pipe > exp.dmp.Z &
su -u oracle -c "exp userid=ll/ll file=/home/exp.pipe full=y buffer=20000000"
rm exp.pipe
linux下:
mknod /home/exppipe p
$ imp test/test file=/home/exppipe fromuser=test touser=macro &
gunzip < exp.dmp.gz > /home/exppipe
$ rm –fr /home/exppipe
Ⅵ 如何在Oracle中使用exp和imp導出,導入dmp資料庫文件
1、首先進入命令行,點擊開始,輸入cmd。
Ⅶ 求教linux 下oracle數據的導入導出方法詳細步驟
求教linux 下oracle數據的導入導出方法詳細步驟
一. 導出工具 exp
1. 它是操作系統下一個可執行的文件 存放目錄/ORACLE_HOME/bin
exp導出工具將資料庫中數據備份壓縮成一個二進制系統文件.可以在不同OS間遷移
它有三種模式:
a. 用戶模式: 導出用戶所有對象以及對象中的數據;
b. 表模式: 導出用戶所有表或者指定的表;
c. 整個資料庫: 導出資料庫中所有對象。
2. 導出工具exp互動式命令行方式的使用的例子
$exp test/test123@appdb
Enter array fetch buffer size: 4096 > 回車
Export file: expdat.dmp > m.dmp 生成導出的文件名
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3
Export table data (yes/no): yes > 回車
Compress extents (yes/no): yes > 回車
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified tables via Conventional Path ...
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > cmamenu 要導出的表名
. . exporting table CMAMENU 4336 rows exported
Table(T) or Partition(T:P) to be exported: (RETURN to quit) >要導出的表名n
Table(T) or Partition(T:P) to be exported: (RETURN to quit) > 回車
Export terminated successfully without warnings.
3. 導出工具exp非互動式命令行方式的例子
$exp scott/tiger tables=(emp,dept) file=/directory/scott.dmp grants=y
說明:把scott用戶里兩個表emp,dept導出到文件/directory/scott.dmp
$exp scott/tiger tables=emp query=\"where job=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp
說明:在exp裡面加上導出emp的查詢條件job='salesman' and sal<1600
(但我個人很少這樣用,還是把滿足條件的記錄生成臨時表後,再exp會方便一些)
$exp parfile=username.par
file=/directory1/username_1.dmp,/directory1/username_2.dmp
filesize=2000M log=/directory2/username_exp.log
參數文件username.par內容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
說明:username.par為導出工具exp用的參數文件,裡面具體參數可以根據需要去修改
filesize指定生成的二進制備份文件的最大位元組數
(可用來解決某些OS下2G物理文件的限制及加快壓縮速度和方便刻歷史數據光碟等)
二.導入工具 imp
1. 它是操作系統下一個可執行的文件 存放目錄/ORACLE_HOME/bin
imp導入工具將EXP形成的二進制系統文件導入到資料庫中.
它有三種模式:
a. 用戶模式: 導出用戶所有對象以及對象中的數據;
b. 表模式: 導出用戶所有表或者指定的表;
c. 整個資料庫: 導出資料庫中所有對象。
只有擁有IMP_FULL_DATABASE和DBA許可權的用戶才能做整個資料庫導入
imp步驟:
(1) create table (2) insert data (3) create index (4) create triggers,constraints
2.導入工具imp互動式命令行方式的例子
$ imp
Import: Release 8.1.6.0.0 - Proction on 星期五 12月 7 17:01:08 2001
(c) Copyright 1999 Oracle Corporation. All rights reserved.
用戶名: test
口令:****
連接到: Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Proction
With the Partitioning option
JServer Release 8.1.6.0.0 - Proction
導入文件: expdat.dmp> /tmp/m.dmp
輸入插入緩沖區大小(最小為 8192 ) 30720>
經由常規路徑導出由EXPORT:V08.01.06創建的文件
警告: 此對象由 TEST 導出, 而不是當前用戶
已經完成ZHS16GBK字元集和ZHS16GBK NCHAR 字元集中的導入
只列出導入文件的內容(yes/no):no>
由於對象已存在, 忽略創建錯誤(yes/no):no> yes
導入許可權(yes/no):yes>
導入表數據(yes/no):yes>
導入整個導出文件(yes/no):no> yes
. 正在將TEST的對象導入到 SCOTT
. . 正在導入表 "CMAMENU" 4336行被導入
成功終止導入,但出現警告。
3.導入工具imp非互動式命令行方式的例子
$ imp system/manager fromuser=jones tables=(accts)
$ imp system/manager fromuser=scott tables=(emp,dept)
$ imp system/manager fromuser=scott touser=joe tables=emp
$ imp scott/tiger file = expdat.dmp full=y
$ imp scott/tiger file = /mnt1/t1.dmp show=n buffer=2048000 ignore=n
commit=y grants=y full=y log=/oracle_backup/log/imp_scott.log
$ imp system/manager parfile=params.dat
params.dat 內容
file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)
4.導入工具imp可能出現的問題
(1) 資料庫對象已經存在
一般情況, 導入數據前應該徹底刪除目標數據下的表, 序列, 函數/過程,觸發器等;
資料庫對象已經存在, 按預設的imp參數, 則會導入失敗
如果用了參數ignore=y, 會把exp文件內的數據內容導入
如果表有唯一關鍵字的約束條件, 不合條件將不被導入
如果表沒有唯一關鍵字的約束條件, 將引起記錄重復
(2) 資料庫對象有主外鍵約束
不符合主外鍵約束時, 數據會導入失敗
解決辦法: 先導入主表, 再導入依存表
disable目標導入對象的主外鍵約束, 導入數據後, 再enable它們
(3) 許可權不夠
如果要把A用戶的數據導入B用戶下, A用戶需要有imp_full_database許可權
(4) 導入大表( 大於80M ) 時, 存儲分配失敗
默認的EXP時, compress = Y, 也就是把所有的數據壓縮在一個數據塊上.
導入時, 如果不存在連續一個大數據塊, 則會導入失敗.
導出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤.
(5) imp和exp使用的字元集不同
如果字元集不同, 導入會失敗, 可以改變unix環境變數或者NT注冊表裡NLS_LANG相關信息.
導入完成後再改回來.
(6) imp和exp版本不能往上兼容
imp可以成功導入低版本exp生成的文件, 不能導入高版本exp生成的文件
根據情況我們可以用
$ imp username/password@connect_string
說明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
定義的本地或者遠端資料庫的名稱
注意事項:
UNIX: /etc/hosts 要定義本地或者遠端資料庫伺服器的主機名
win98: windows\hosts 和IP地址的對應關系
win2000: winnt\system32\drivers\etc\hosts
Ⅷ 我想把資料庫的通過exp語句導出,並壓縮成zip格式存放。高分求解答
這有何難啊,你直接寫個使命: exp user/password owner=username file=filename.dmp log=logname.log zip filename.zip filename.dmp 然後放在一個shell文件里,後綴為.sh,然後運行這個文件就行啦!
Ⅸ Oracle數據導入導出imp/exp命令 10g以上expdp/impdp命令 詳細的 詳細的 謝謝
這個網路上一搜一大把,都說的很詳細,樓主沒搜過,
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:chu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:chu.dmp tables=(table1) query=" where filed1 like '00%'"
上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。
數據的導入
1 將D:chu.dmp 中的數據導入 TEST資料庫中。
imp system/manager@TEST file=d:chu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:chu.dmp中的表table1 導入
imp system/manager@TEST file=d:chu.dmp tables=(table1)
基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。
當然,上面的方法在導出數據時可能會導出很大的包,那是因為你的用戶可能在授權的時候授予了DBA的許可權,所以可以採用下面方法來進行資料庫備份:
資料庫備份
建議系統過渡後,每周進行一次備份。或者在數據表發生重大改變前,對要改變的數據表進行備份。
執行以下步驟,進行備份。
在命令行里,敲入「cmd」,回車,進入命令行窗口。
在窗口中,輸入:
exp mas/123456@mas
系統提示:輸入數組提取緩沖區大小: 4096 >
可以直接回車;
系統提示:導出文件: EXPDAT.DMP>
此處輸入導出文件的位置,其路徑必須存在,Oracle在這里不會自動建立路徑,但可以建立文件名。備份文件以dmp作為後綴。
輸入內容如:e:\work\mas_db_090925v1.dmp 回車
系統提示: (1)E(完整的資料庫),(2)U(用戶) 或 (3)T(表): (2)U > u
此處可以輸入u,也可以直接回車,因為系統此時默認的是U
系統提示:導出許可權(yes/no):yes>回車
系統提示:導出表數據(yes/no):yes>回車
系統提示:壓縮區(yes/no):yes>回車
系統提示:要導出的用戶: (RETURN 以退出) > mas
系統提示:要導出的用戶: (RETURN 以退出) > 回車
此時系統會自動進行備份
本文對Oracle數據的導入導出 imp ,exp 兩個命令進行了介紹, 並對其相應的參數進行了說明,然後通過一些示例進行演練,加深理解.
文章最後對運用這兩個命令可能出現的問題(如許可權不夠,不同oracle版本)進行了探討,並提出了相應的解決方案;
本文部分內容摘錄自網路,感謝網友的經驗總結;
一.說明
oracle 的exp/imp命令用於實現對資料庫的導出/導入操作;
exp命令用於把數據從遠程資料庫伺服器導出至本地,生成dmp文件;
imp命令用於把本地的資料庫dmp文件從本地導入到遠程的Oracle資料庫中。
二.語法
可以通過在命令行輸入 imp help=y 獲取imp的語法信息:
=============================================================================
C:\Documents and Settings\auser>imp help=y
Import: Release 9.0.1.1.1 - Proction on 星期二 5月 20 18:21:57 2008
(c) Copyright 2001 Oracle Corporation. All rights reserved.
可以通過輸入 IMP 命令和您的用戶名/口令
後接用戶名/口令的命令:
常式: IMP SCOTT/TIGER
或者, 可以通過輸入 IMP 命令和各種參數來控制「導入」
按照不同參數。要指定參數,您可以使用關鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
常式: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字 說明(默認) 關鍵字 說明(默認)
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小 FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP) 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)
FEEDBACK 每 x 行顯示進度 (0)
TOID_NOVALIDATE 跳過指定類型 ID 的驗證
FILESIZE 每個轉儲文件的最大大小
STATISTICS 始終導入預計算的統計信息
RESUMABLE 遇到與空格有關的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字元串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
COMPILE 編譯過程, 程序包和函數 (Y)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到資料庫的表空間
DATAFILES 將要傳輸到資料庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶
==============================================
同樣可以通過輸入 exp help=y 獲取exp的語法信息
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\auser>exp help=y
Export: Release 9.0.1.1.1 - Proction on 星期二 5月 20 18:26:34 2008
(c) Copyright 2001 Oracle Corporation. 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 交叉表一致性 CONSTRAINTS 導出約束條件 (Y)
FEEDBACK 每 x 行顯示進度 (0)
FILESIZE 每個轉儲文件的最大大小
FLASHBACK_SCN 用於回調會話快照的 SCN
FLASHBACK_TIME 用來獲得最接近於指定時間的 SCN 的時間
QUERY 用來導出表的子集的選擇子句
RESUMABLE 遇到與空格有關的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字元串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
TTS_FULL_CHECK 對 TTS 執行完全或部分相關性檢查
TABLESPACES 要導出的表空間列表
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TEMPLATE 調用 iAS 模式導出的模板名稱
三.使用示例
3.1 數據導出:
1 將資料庫SampleDB完全導出,用戶名system 密碼manager 導出到E:\SampleDB.dmp中
exp system/manager@TestDB file=E:\sampleDB.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TestDB file=E:\sampleDB.dmp owner=(system,sys)
3 將資料庫中的表 TableA,TableB 導出
exp system/manager@TestDB file=E:\sampleDB.dmp tables=(TableA,TableB)
4 將資料庫中的表tableA中的欄位filed1 值為 "王五" 的數據導出
exp system/manager@TestDB file=E:\sampleDB.dmp tables=(tableA) query=' where filed1='王五'
如果想對dmp文件進行壓縮,可以在上面命令後面 加上 compress=y 來實現。
3.2 數據的導入
1 將備份資料庫文件中的數據導入指定的資料庫SampleDB 中,如果 SampleDB 已存在該表,則不再導入;
imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y
2 將d:\chu.dmp中的表table1 導入
imp system/manager@TEST file=E:\sampleDB.dmp tables=(table1)
3. 導入一個完整資料庫
imp system/manager file=bible_db log=dible_db full=y ignore=y
4. 導入一個或一組指定用戶所屬的全部表、索引和其他對象
imp system/manager file=seapark log=seapark fromuser=seapark imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
5. 將一個用戶所屬的數據導入另一個用戶
imp system/manager file=tank log=tank fromuser=seapark touser=seapark_
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
6. 導入一個表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
7. 從多個文件導入
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
8. 使用參數文件
imp system/manager parfile=bible_tables.par
bible_tables.par參數文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_ file=seapark log=seapark_import
參數文件示例見附錄
9. 增量導入
imp system./manager inctype= RECTORE FULL=Y FILE=A
不少情況下要先將表徹底刪除,然後導入。
四.參數說明
4.1、8i EXP常用選項
1、FULL,這個用於導出整個資料庫,在ROWS=N一起使用時,可以導出整個資料庫的結構。例如:
exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y
2、BUFFER和FEEDBACK,在導出比較多的數據時,我會考慮設置這兩個參數。例如:
exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT
3、FILL和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括文件名和目錄,例子見上面。
需要說明的是,EXP可以直接備份到磁帶中,即使用FILE=/dev/rmt0(磁帶設備名),但是一般我們都不這么做,原因有二:一、這樣做的速度會慢很多,二、現在一般都是使用磁帶庫的,不建議直接對磁帶進行操作。至於沒有使用磁帶庫的朋友可以考慮和UNIX的TAR結合使用。
如果你真想使用EXP直接到磁帶,你可以參考Metalink文章「EXPORTING TO TAPE ON UNIX SYSTEMS」(文檔號:30428.1),該文中有詳細解釋。
4、COMPRESS參數將在導出的同時合並碎塊,盡量把數據壓縮到initial的EXTENT里,默認是N,一般建議使用。DIRECT參數將告訴EXP直接讀取數據,而不像傳統的EXP那樣,使用SELECT來讀取表中的數據,這樣就減少了SQL語句處理過程。一般也建議使用。不過有些情況下DIRECT參數是無法使用的。
5、如何使用SYSDBA執行EXP/IMP?
這是一個很現實的問題,有時候我們需要使用SYSDBA來執行EXP/IMP,如進行傳輸表空間的EXP/IMP,以及在9i下用SYS用戶來執行EXP/IMP時,都需要使用SYSDBA才可。我們可以使用下面方式連入EXP/IMP:
exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n
6、QUERY參數後面跟的是where條件,值得注意的是,整個where子句需要使用""括起來,where子句的寫法和SELECT中相同,如果是UNIX平台所有"和'都需要使用\u26469屏蔽它們的特殊含義:
exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"
如果是windows平台,則使用下面的格式:
exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""
4.2、8i IMP常用選項
1、FROMUSER和TOUSER,使用它們實現將數據從一個SCHEMA中導入到另外一個SCHEMA中。
2、IGNORE、GRANTS和INDEXES,其中IGNORE參數將忽略表的存在,繼續導入,這個對於需要調整表的存儲參數時很有用,我們可以先根據實際情況用合理的存儲參數建好表,然後直接導入數據。而GRANTS和INDEXES則表示是否導入授權和索引,如果想使用新的存儲參數重建索引,或者為了加快到入速度,我們可以考慮將INDEXES設為N,而GRANTS一般都是Y。
另外一個EXP/IMP都有的參數是PARFILE,它是用來定義EXP/IMP的參數文件,也就是說,上面的參數都可以寫在一個參數文件中,但我們一般很少使用。
4.4、Oracle9i EXP功能描述
Oracle9i EXP在原有的基礎上新增了部分新的參數,按功能主要分為以下幾個部分:
1、OBJECT_CONSISTENT - 用於設置EXP對象為只讀以保持對象的一致性。默認是N。
2、FLASHBACK_SCN和FLASHBACK_TIME - 用於支持FLASHBACK功能而新增。
3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用於支持RESUMABLE空間分配而新增。
4、TTS_FULL_CHECK - 用於在傳輸表空間時使用依賴性檢查。
5、TEMPLATE - 用於支持iAS。
6、TABLESPACES - 設置表空間導出模式。個人覺得對於一般用戶而言,這個才是新增參數中最實用的一個,可以讓用戶在原來的FULL、OWNER、TABLES的基礎上多了一種選擇,使得EXP更加靈活。
五、不同版本的EXP/IMP問題?
一般來說,從低版本導入到高版本問題不大,麻煩的是將高版本的數據導入到低版本中,在Oracle9i之前,不同版本Oracle之間的EXP/IMP可以通過下面的方法來解決:
1、在高版本資料庫上運行底版本的catexp.sql;
2、使用低版本的EXP來導出高版本的數據;
3、使用低版本的IMP將資料庫導入到底版本資料庫中;
4、在高版本資料庫上重新運行高版本的catexp.sql腳本。
但在9i中,上面的方法並不能解決問題。如果直接使用底版本EXP/IMP會出現如下錯誤:
EXP-00008: ORACLE error %lu encountered
ORA-00904: invalid column name
這已經是一個公布的BUG,需要等到Oracle10.0才能解決,BUG號為2261,你可以到METALINK上去查看有關此BUG的詳細信息。
BUG歸BUG,我們的工作還是要做,在沒有Oracle的支持之前,我們就自己解決。在Oracle9i中執行下面的SQL重建exu81rls視圖即可。
CREATE OR REPLACE view exu81rls
(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)
AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,
decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')
|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')
|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')
|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),
r.check_opt, r.enable_flag,
DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)
from user$ u, obj$ o, rls$ r
where u.user# = o.owner#
and r.obj# = o.obj#
and (uid = 0 or
uid = o.owner# or
exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')
)
/
grant select on sys.exu81rls to public;
/
六、其他問題
本文只討論了Oracle8i和9i中的EXP/IMP的一些情況,對於之前的版本,在8.0.X中,除了QUERY參數不能用外,其它差別不大。針對沒有QUERY的情況,我們可以先在資料庫中使用查詢條件建立臨時中間表,然後使用EXP導出這個中間表即可。至於Oracle7因為目前使用的人較少,gototop不打算在此做詳細解釋了,如果讀者朋友有需求,你可以參考Metalink文檔:「Overview of Export and Import in Oracle7」(文檔號:61949.1)。關於EXP/IMP的詳細參數信息你可以通過EXP/IMP HELP=Y來獲得。
另外關於傳輸表空間的更多信息可以參考下面的Metelink文檔,本文不再詳述。
[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.
[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.
在進行並行EXP/IMP的時候,如果IMP過程建索引的話不建議同時運行5個以上的IMP,如果你想加快速度,可以在IMP的時候不建索引,這樣只要內存允許,可以多跑幾個,然後是SQL腳本創建需要的索引。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫是否可以連上, 可以用tnsping TestDB 來獲得資料庫 TestDB 能否連上。
附錄一:
給用戶增加導入數據許可權的操作
第一, 啟動sql*puls
第二,以system/manager登陸
第三,create user 用戶名 IDENTIFIED BY 密碼(如果已經創建過用戶,這步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用戶名字
第五, 運行-cmd-進入dmp文件所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
附錄二:
Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.
先建立import9.par,
然後,使用時命令如下:imp parfile=/filepath/import9.par
例 import9.par 內容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的用戶可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log