當前位置:首頁 » 數據倉庫 » oracle如何導出整個資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle如何導出整個資料庫

發布時間: 2022-11-27 11:10:52

① oracle怎麼導出數據

Oracle導出導出有兩中方式:一、利用exp imp導出導入;二、利用Oracel數據泵expdp impdp導出導入。
一、利用exp imp導出導入
exp imp 語法如下:
exp:
1) 將資料庫orcl完全導出
exp system/manager@orcl file=d:\orcl_bak.dmp full=y
2) 將資料庫中system用戶的表導出
exp system/manager@orcl file=d:\system_bak.dmp owner=system
3) 將資料庫中表table1,table2導出
exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)
4) 將資料庫中的表customer中的欄位mobile以"139"開頭的數據導出
exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 將備份文件bak.dmp導出資料庫
imp system/manager@orcl file=d:\bak.dmp
如果數據表中表已經存在,會提示錯誤,在後面加上ignore=y就可以了。
2) 將備份文件bak.dmp中的表table1導入
imp system/manager@orcl file=d:\bak.dmp tables=(table1)
exp imp導出導入數據方式的好處是只要你本地安裝了Oracle客戶端,你就可以將伺服器中的數據導出到你本地計算機。同樣也可以將dmp文件從你本地導入到伺服器資料庫中。但是這種方式在Oracle11g版本中會出現一個問題:不能導出空表。Oracle11g新增了一個參數deferred_segment_creation,含義是段延遲創建,默認是true。當你新建了一張表,並且沒用向其中插入數據時,這個表不會立即分配segment。
解決辦法:
1、設置deferred_segment_creation參數為false後,無論是空表,還是非空表,都分配segment。
sqlplus中,執行如下命令:
SQL>alter system set deferred_segment_creation=false;
查看:
SQL>show parameter deferred_segment_creation;
該值設置後,只對後面新增的表起作用,對之前建立的空表不起作用,並且注意要重啟資料庫讓參數生效。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以為資料庫對象分配Extent,語法如下:
alter table table_name allocate extent
構建對空表分配空間的SQL命令:

SQL>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
批量生成要修改的語句。
然後執行這些修改語句,對所有空表分配空間。
此時用exp命令,可將包括空表在內的所有表導出。

二、利用expdp impdp導出導入
在Oracle10g中exp imp被重新設計為Oracle Data Pump(保留了原有的 exp imp工具)

數據泵與傳統導出導入的區別;
1) exp和imp是客戶端工具,他們既可以在客戶端使用,也可以在服務端使用。
2) expdp和impdp是服務端工具,只能在Oracle服務端使用。
3) imp只適用於exp導出文件,impdp只適用於expdp導出文件。

expdp導出數據:
1、為輸出路徑建立一個資料庫的directory對象。
create or replace directory mpdir as 'd:\';
可以通過:select * from dba_directories;查看。
2、給將要進行數據導出的用戶授權訪問
grant read,write on directory mpdir to test_expdp;
3、將數據導出
expdp test_expdp/test_expdp directory=mpdir mpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp
注意:這句話在cmd窗口中運行,並且最後不要加分號,否則會提示錯誤。因為這句話是操作系統命令而不是SQL。
impdp導入數據:
1、給將要進行數據導入的用戶授權訪問。
grant read,write on directory mpdir to test_impdp;
2、將數據導入
impdp test_impdp/impdp directory=mpdir mpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp

② 怎麼導出oracle整個資料庫

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
將資料庫中的表table1
、table2導出
exp
system/manager@TEST
file=d:\chu.dmp
tables=(table1,table2)
4
將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp
system/manager@TEST
file=d:\chu.dmp
tables=(table1)
query=\"
where
filed1
like
'00%'\"
上面是常用的導出,對於壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。
不過在上面命令後面
加上
compress=y
就可以了

③ oracle sql developer如何導出數據

  • 打開oracle sql developer工具,連接上資料庫服務,然後打開表列表,選擇需要導出的表,然後右擊選擇導出

  • 在導出向導頁面,如圖可以看到,是否需要導出DLL,是否美化顯示等選項,可以根據需要進行勾選。最下面選擇編碼和導出的文件目錄

④ oracle導出資料庫

oracle導出資料庫用exp語句。

步驟:

一、win鍵+R鍵,輸入cmd,打開命令提示符。

二、然後根據實際情況選擇不同的exp語句。


exp語句詳解:

1. 獲取幫助

exp help=y

2. 導出一個完整資料庫

exp system/manager file=bible_db log=dible_db full=y

3. 導出資料庫定義而不導出數據

exp system/manager file=bible_db log=dible_db full=y rows=n

4. 導出一個或一組指定用戶所屬的全部表、索引和其他對象

exp system/manager file=seapark log=seapark owner=seapark

exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)

注意:在導出用戶時,盡管已經得到了這個用戶的所有對象,但是還是不能得到這些對象引用的任何同義詞。解決方法是用以下的SQL*Plus命令創建一個腳本文件,運行這個腳本文件可以獲得一個重建seapark所屬對象的全部公共同義詞的可執行腳本,然後在目標資料庫上運行該腳本就可重建同義詞了。

SET LINESIZE 132

SET PAGESIZE 0

SET TRIMSPOOL ON

SPOOL c:seapark.syn

SELECT 'Create public synonym '||synonym_name

||' for '||table_owner||'.'||table_name||';'

FROM dba_synonyms

WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC';

SPOOL OFF

5. 導出一個或多個指定表

exp seapark/seapark file=tank log=tank tables=tank

exp system/manager file=tank log=tank tables=seapark.tank

exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)

6. 估計導出文件的大小

全部表總位元組數:

SELECT sum(bytes)

FROM dba_segments

WHERE segment_type = 'TABLE';

seapark用戶所屬表的總位元組數:

SELECT sum(bytes)

FROM dba_segments

WHERE owner = 'SEAPARK'

AND segment_type = 'TABLE';

seapark用戶下的aquatic_animal表的位元組數:

SELECT sum(bytes)

FROM dba_segments

WHERE owner = 'SEAPARK'

AND segment_type = 'TABLE'

AND segment_name = 'AQUATIC_ANIMAL';

7. 導出表數據的子集(oracle8i以上)

NT系統:

exp system/manager query='Where salad_type='FRUIT'' tables=amy.salad_type

file=fruit log=fruit

UNIX系統:

exp system/manager query="Where salad_type='FRUIT'" tables=amy.salad_type

file=fruit log=fruit

8. 用多個文件分割一個導出文件

exp system/manager

file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

log=paycheck, filesize=1G tables=hr.paycheck

9. 使用參數文件

exp system/manager parfile=bible_tables.par

bible_tables.par參數文件:

#Export the sample tables used for the Oracle8i Database Administrator's Bible.

file=bible_tables

log=bible_tables

tables=(

amy.artist

amy.books

seapark.checkup

seapark.items

)

10. 增量導出

「完全」增量導出(complete),即備份整個資料庫

exp system/manager inctype=complete file=990702.dmp

「增量型」增量導出(incremental),即備份上一次備份後改變的數據

exp system/manager inctype=incremental file=990702.dmp

「累計型」增量導出(cumulative),即備份上一次「完全」導出之後改變的數據

exp system/manager inctype=cumulative file=990702.dmp

⑤ Oracle資料庫如何導出

數據導出具體如下:

  1. 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中。

  2. 將資料庫中system用戶與sys用戶的表導出。

  3. 將資料庫中的表table1 、table2導出。

  4. 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出。

  5. 將D:chu.dmp 中的數據導入 TEST資料庫中。

  6. 將d:chu.dmp中的表table1 導入。


⑥ oracle如何導出資料庫表所有數據

你好
你可以使用exp 護著expdp 來進行表的導出導入
如果數據量大的話,你還可以使用RMAN來操作
或者使用XTTS進行遷移,
再或者,直接遷移存儲
望採納

⑦ 如何導出oracle資料庫數據

導出dmp:選擇oracle導出,找到bin下面的imp.exe,設定導出文件名導出
導出表數據,查詢全表數據(不帶rowid),全部選中右鍵導出SQL文件

⑧ oracle資料庫里的數據怎麼導出

Oracle數據導入導出imp/exp
功能:Oracle數據導入導出imp/exp就相當與oracle數據還原與備份。

大多情況都可以用Oracle數據導入導出完成數據的備份和還原(不會造成數據的丟失)。
Oracle有個好處,雖然你的電腦不是伺服器,但是你裝了oracle客戶端,並建立了連接
(通過Net Configuration Assistant添加正確的服務命名,其實你可以想成是客戶端與伺服器端 修了條路,然後數據就可以被拉過來了)
這樣你可以把數據導出到本地,雖然可能伺服器離你很遠。
你同樣可以把dmp文件從本地導入到遠處的資料庫伺服器中。
利用這個功能你可以構建倆個相同的資料庫,一個用來測試,一個用來正式使用。

執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,
DOS中可以執行時由於 在oracle 8i 中 安裝目錄\$ora10g\BIN被設置為全局路徑,
該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。
oracle用java編寫,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE這倆個文件是被包裝後的類文件。
SQLPLUS.EXE調用EXP.EXE、IMP.EXE他們所包裹的類,完成導入導出功能。

下面介紹的是導入導出的實例,向導入導出看實例基本上就可以完成,因為導入導出很簡單。
數據導出:
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 將資料庫中的表table1 、table2導出
exp system/manager@TEST file=d:\chu.dmp tables=(table1,table2)
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
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:\chu.dmp中的表table1 導入
imp system/manager@TEST file=d:\chu.dmp tables=(table1)

基本上上面的導入導出夠用了。不少情況我是將表徹底刪除,然後導入。

注意:
你要有足夠的許可權,許可權不夠它會提示你。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。

數據導出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;

導出注意事項:導出的是當前用戶的的數據,當前用戶如果有DBA的許可權,則導出所有數據!

同名用戶之間的數據導入:
imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

不同名之間的數據導入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp

log=c:\orabackup\hkbimp.log;