碼迷,www.tparu.icu
吉利平特名人堂 > 數據庫 > 詳細

精准平特一肖平特一尾:exp/expdp 與 imp/impdp命令導入導出數據庫詳解

時間:2017-09-15 21:45:17      閱讀:7565      評論:0      收藏:0      [點我收藏+]

吉利平特名人堂 www.tparu.icu 標簽:自動   整數   顯示   top   erp   占用   release   sam   位置   

一、exp命令導出數據庫

如何使exp的幫助以不同的字符集顯示:set nls_lang=simplified chinese_china.zhs16gbk,通過設置環境變量,可以讓exp的幫助以中文顯示,如果set nls_lang=American_america.字符集,那么幫助就是英文的了。

 技術分享

 

參數:

 技術分享

 

 

1.1  導出用戶全部數據

 exp 登錄名稱/用戶密碼@服務命名 FILE=文件存儲的路徑以及名稱 log=日志存儲的路徑以及名稱 FULL=Y(表示導出全部數據,如視圖、索引關聯關系等等全部的東西)

 

exp hlsoa/[email protected]  file=E:\test\file  log=E:\test\log full=y  這是導出本地數據庫

 

如果要是導出遠程數據庫需要修改tnsnames.ora 在連接字符串中將HOST改為遠程數據庫地址也可以直接通過服務器地址加服務命名解決

exp hlsoa/[email protected]/orcl  file=E:\test\file  log=E:\test\log full=y

 

注意:在test文件夾下可以新建file.dmp、log.log文件也可以不建,系統會自動創建。上面命令中可以加文件后綴,也可以不加。但是test這個文件夾必須要存在。

 

1.2導出數據庫結構而不導出數據

exp 登錄名稱/用戶密碼@服務命名 file=文件存儲的路徑以及名稱 log=日志存儲的路徑以及名稱 full=y rows=n(不導出行數據)

 

exp hlsoa/[email protected]  file=E:\test\file  log=E:\test\log full=y rows=n

 

1.3導出一個或者多個指定表

exp 登錄名稱/用戶密碼@服務命名 file=文件存儲的路徑以及名稱 log=日志存儲的路徑以及名稱 tables=表名字

exp 登錄名稱/用戶密碼@服務命名 file=文件存儲的路徑以及名稱 log=日志存儲的路徑以及名稱 tables=(表1,表2,表3,表N)

 

1.4 導出某個用戶所擁有的數據庫表

exp 用戶名/密碼@服務命名 file=存放位置\存放文件名.dmp log=存放位置\存放文件名.log owner=擁有者用戶名

 

exp hlsoa/[email protected]  file=E:\test\file  log=E:\test\log  owner=(hlsoa)

1.5 用多個文件分割一個導出文件

 

exp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G tables=hr.paycheck

 

1.6使用參數文件導出數據

exp system/[email protected]服務命名 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

)

 

1.7 增量導出數據

--“完全”增量導出(complete),即備份整個數據庫

exp system/[email protected]服務命名 inctype=complete file=990702.dmp

--“增量型”增量導出(incremental),即備份上一次備份后改變的數據

exp system/[email protected]服務命名 inctype=incremental file=990702.dmp

--“累計型”增量導出(cumulative),即備份上一次“完全”導出之后改變的數據

exp system/[email protected]服務命名 inctype=cumulative file=990702.dmp

導出某個用戶所擁有的數據庫表:

exp 用戶名/密碼@服務命名 file=存放位置\存放文件名.dmp log=存放位置\存放文件名.log owner=擁有者用戶名

 

1.8估計導出文件的大小

--整個數據庫全部表總字節數:

SELECT sum(bytes)/1024/1024/1024 "占用空間:單位GB"

FROM dba_segments

WHERE segment_type = ‘TABLE‘;

--指定用戶所屬表的總字節數:

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‘

 

二、imp 命令導入數據庫

參數:

 技術分享

 

 

2.1 導入一個完整數據庫

imp 登錄名稱/用戶密碼@服務命名 FILE=數據文件存儲的路徑以及名稱 log=日志存儲的路徑以及名稱 FULL=Y  IGNORE=y(因為有的表已經存在,然后它就報錯,對該表就不進行導入,然后忽略該報錯)

 

imp system/manager file=bible_db log=dible_db full=y ignore=y

 

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

imp system/manager file=seapark log=seapark fromuser=seapark

 

imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

 

 

2.3     將一個用戶所屬的數據導入另一個用戶

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

 

imp system/manager file=tank log=tank fromuser=(seapark,amy)  touser=(seapark1, amy1)

 

2.4 導入一個或者多個表

 

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

 

 

2.5 從多個文件導入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G full=y

 

2.6 使用參數文件

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_copy file=seapark log=seapark_import

 

2.7 增量導入

imp system./manager inctype= RECTORE FULL=Y FILE=A

 

三、expdp命令導出數據庫

3.1 參數介紹

 

序號

關鍵字

說明 (默認)

01

ATTACH

連接到現有作業, 例如 ATTACH [=作業名]。

02

COMPRESSION

減小有效的轉儲文件內容的大小關鍵字值為: (METADATA_ONLY) 和 NONE。

03

CONTENT

指定要卸載的數據, 其中有效關鍵字為:(ALL),DATA_ONLY 和 METADATA_ONLY。

04

DIRECTORY 

供轉儲文件和日志文件使用的目錄對象。

05

DUMPFILE

目標轉儲文件 (expdat.dmp) 的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。

06

ENCRYPTION_PASSWORD

用于創建加密列數據的口令關鍵字。

07

ESTIMATE 

計算作業估計值, 其中有效關鍵字為:                   (BLOCKS) 和 STATISTICS。

08

ESTIMATE_ONLY

在不執行導出的情況下計算作業估計值。

09

EXCLUDE

排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。

10

FILESIZE

以字節為單位指定每個轉儲文件的大小。

11

FLASHBACK_SCN

用于將會話快照設置回以前狀態的 SCN。

12

FLASHBACK_TIME

用于獲取最接近指定時間的 SCN 的時間。

13

FULL

導出整個數據庫 (N)。

14

HELP

顯示幫助消息 (N)。

15

INCLUDE

包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。

16

JOB_NAME

要創建的導出作業的名稱。

17

LOGFILE

日志文件名 (export.log)。

18

NETWORK_LINK

鏈接到源系統的遠程數據庫的名稱。

19

NOLOGFILE

不寫入日志文件 (N)。

20

PARALLEL

更改當前作業的活動 worker 的數目。

21

PARFILE

指定參數文件。

22

QUERY

用于導出表的子集的謂詞子句。

23

SAMPLE

要導出的數據的百分比;

24

SCHEMAS 

要導出的方案的列表 (登錄方案)。

25

STATUS

在默認值 (0) 將顯示可用時的新狀態的情況下,                      要監視的頻率 (以秒計) 作業狀態。

27

TABLES

標識要導出的表的列表 - 只有一個方案。

28

TABLESPACES

標識要導出的表空間的列表。

29

TRANSPORT_FULL_CHECK

驗證所有表的存儲段 (N)。

30

TRANSPORT_TABLESPACES

要從中卸載元數據的表空間的列表。

31

VERSION

要導出的對象的版本, 其中有效關鍵字為:                      (COMPATIBLE), LATEST 或任何有效的數據庫版本。

32

ADD_FILE

向轉儲文件集中添加轉儲文件。

33

CONTINUE_CLIENT

返回到記錄模式。如果處于空閑狀態, 將重新啟動作業。

35

EXIT_CLIENT

退出客戶機會話并使作業處于運行狀態。

36

FILESIZE

后續 ADD_FILE 命令的默認文件大小 (字節)。

37

HELP

總結交互命令。

38

KILL_JOB 

分離和刪除作業。

39

PARALLEL

更改當前作業的活動 worker 的數目。                      PARALLEL=<worker 的數目>。

40

START_JOB

啟動/恢復當前作業。

41

STATUS 

在默認值 (0) 將顯示可用時的新狀態的情況下,                  要監視的頻率 (以秒計) 作業狀態。                      STATUS[=interval]

42

STOP_JOB

順序關閉執行的作業并退出客戶機。                      STOP_JOB=IMMEDIATE 將立即關閉                      數據泵作業。

 

 

3.1.1參數:schemas

導出orcldev這個schema的所用對象[schemas or full]

eg:expdp orcldev/[email protected] directory=backup_path dumpfile=orcldev_schema.dmp logfile=orcldev_schema_2017.log schemas=orcldev

3.1.2參數:tables

導出orcldev這個用戶下的某些表[tables]

eg:C:\>expdp orcldev/oracle directory=dackup_path dumpfile=orcldev_table.dmp logfile=orcldev_table_2017.log tables=(‘TAB_TEST‘,‘TAB_A‘)

3.1.3參數:content

只導出orcldev這個用戶的元數據[content]

eg:C:\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_meta.dmp logfile=orcldev_meta_2017.log SCHEMAS=orcldev CONTENT=METADATA_ONLY

3.1.4參數:sample

只導出orcldev這個用戶50%的抽樣數據[sample]

eg:C:\>expdp orcldev/oracle directory=dackup_pathdumpfile=orcldev_samp.dmp logfile=orcldev_samp_2017.log schemas=orcldevsample=50

3.1.5參數:exclude

導出orcldev這個方案對象,但不包含索引[exclude]

eg: --可以剔除的對象有:VIEW,PACKAGE,FUNCTION,index,constraints,table,schema,user等等

C:\>expdp orcldev/oracle directory=dackup_path dumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.log SCHEMAS=orcldev EXCLUDE=index

C:\>expdp orcldev/oracle directory=dackup_path dumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.log SCHEMAS=orcldev EXCLUDE=INDEX:"LIKE ‘TEST%‘"   --導出這個orcldev方案,剔除以TEST開頭的索引

C:\>expdp orcldev/oracle directory=dackup_path dumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.log EXCLUDE=SCHEMA:"=‘SCOTT‘"

C:\>expdp orcldev/oracle directory=dackup_path dumpfile=orcldev_exclude.dmp logfile=orcldev_exclude.log EXCLUDE=USER:"=‘SCOTT‘"

--備份整庫但剔除SCOTT這個用戶的對象?! ?/p>

注意:include與exclude不能同時使用。

3.1.6參數:PARFILE

expdp命令可以調用parfile文件,在parfile里可以寫備份腳本,可以使用query選項。

如expdp.txt內容如下:

USERID=orcldev/oracle directory=dackup_path dumpfile=orcldev_parfile.dmp logfile=orcldev_parfile.log TABLES=‘TAB_TEST‘ QUERY="WHERE TRAN_DATE=TO_DATE(‘2017-09-15‘,‘YYYY-MM-DD‘)"

 

執行方法:expdp parfile=expdp.txt 即可執行備份

使用parfile好處是使用query選項是不用使用轉義字符,如果將query參數放到外邊的話,需要將""進行轉義。

eg:

UNIX寫法:

expdp orcldev/oracle directory=backup_path dumpfile=2017.dmp logfile=2017.log schemas=orcldev INCLUDE=TABLE:\"IN\‘TESTA\‘,\‘TESTB\‘\" --在Unix系統執行是需要將單引號進行轉義操作,否則會報錯。

WINDOWS寫法:

expdp orcldev/oracle directory=backup_path dumpfile=2017.dmp logfile=2017.log schemas=orcldev INCLUDE=TABLE:"IN \(‘TEST_A‘,‘TEST_B‘)"

3.1.7參數:TABLESPACE

TABLESPACE導出表空間

eg:expdp orcldev/oracle directory=backup_path dumpfile=2017.dmplogfile =2017.log tablespaces=user,orcldev

3.1.8參數:Version

VERSION選項默認值是COMPATIBLE,即兼容模式。在我們備份的時候,可以指定版本號。

eg:expdp orcldev/oracle directory=backup_path dumpfile=2017.dmplogfile =2017.log full=Y VERSION=10.2.0.4

3.1.9參數:FLASHBACK_TIME

指定導出特定時間點的表數據,可以聯系一下FLASHBACK功能。

eg:C:\>expdp orcldev/oracle directory=dackup_path dumpfile=orcldev_flash.dmp logfile=orcldev_flash.log SCHEMAS=orcldev FLASHBACK_TIME="TO_TIMESTAMP(‘2017-09-15 14:30:00‘,‘DD-MM-YYYYHH24:MI:SS‘)"

 

 

3.2 準備工作

3.2.1 連接目標數據庫,查看服務器端字符集

SQL> select userenv(‘language‘) from dual;

USERENV(‘LANGUAGE‘)

----------------------------------------------------

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

SQL>

 

3.2.2退出當前會話,設置客戶端字符集使之與服務端字符集一致

SQL> exit

從 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開

C:\>SET NLS_LANG= SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

 

3.2.3 創建邏輯目錄,并賦予Oracle對其的讀寫權限

使用EXPDP工具時,其轉存儲文件只能被存放在directory對象對應的OS目錄中,而不能直接指定轉存儲文件所在的OS目錄。在此,先在操作系統創建目錄C:\dump

以system等管理員身份登錄sqlplus,授予用戶test對目錄對象dmp_dir的讀寫權限。

create directory dmp_dir as ‘C:\dump‘

grant read, write on directory dmp_dir to hlsbi;

  創建路徑需要sys權限,需要有create any directory權限才可以創建路徑。

 

  選項:DIRECTORY=directory_object

 

Directory_object用于指定目錄對象名稱。需要注意,目錄對象是使用CREATE DIRECTORY語句建立的對象,而不是OS目錄。

 

3.3        導出方式

與exp命令不同,expdp如果需要導出遠程數據庫就要用dblink

是本地客戶端直接修改tnsnams.ora文件在其中添加鏈接服務端字符串

EXPTEST =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = ORCL)

    )

  )

然后直接在客戶端數據庫創建dblink進行鏈接

create public database link db10_rc connect to username identified by password using ‘connect_string‘;

 

注意:username和password是服務端的,并且特別注意該處的connect_string 就為tnsnames.ora中的服務名.或者直接使用‘=’號后面的字符串

 

create public database link db10_rc connect to username identified by password using ‘

(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.88)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = ORCL)

    )

  ) ’

 

在客戶端創建文件夾,并給導出的用戶授權。

create or replace directory dir as ‘directory‘;

grant read,write on directory dir to username;

這里的username是客戶端的當前用戶名,用于導出數據用的。

 

使用expdp導出遠程的數據到本地。

expdp user/pass network_link=db10_rc directory=trans_dir dumpfile=test1.dmp schemas=hlsoa

//這里的username用創建dblink的那個用戶,directory也是客戶端數據庫創建的。

也可以直接將遠程的用戶導入本地用戶,跳過生成DUMPFILE(省了導出)這一步

SQL> impdp system/manager network_link=db10_rc directory=trans_dir tables=hlsoa.test remap_schema=hlsoa:hlsbi

 

3.3.1全庫導出模式

expdp system/[email protected] directory=dmp_dir dumpfile=fulldb.dmp full=y version=10.2.0.1.0

expdp test/[email protected] directory=dmp_dir dumpfile=fulldb.dmp full=y (高版本數據庫向低版本數據庫)

3.3.2推薦 用戶導出模式

Windows   

expdp system/[email protected] ^

directory=dmp_dir ^

dumpfile=HLSHIS%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%time:~0,2%%time:~3,2%.DMP ^

logfile=HLSHIS%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%_%time:~0,2%%time:~3,2%.LOG ^

schemas=hisrun ^

parallel=4

linux

expdp system/[email protected] \

directory=dmp_dir \

dumpfile=HLSHIS$(date -d "today" +"%Y%m%d_%H%M%S").DMP \

logfile=HLSHIS$(date -d "today" +"%Y%m%d_%H%M%S").LOG \

schemas=hisrun \

parallel=4

 

expdp test/[email protected] directory=dmp_dir dumpfile=userdum.dmp schemas=hgmmo

expdp system/[email protected] directory=dmp_dir dumpfile=emr.dmp schemas=wsemr

——導出單個用戶數據(dumpfile指定dump文件名;schemas指定要被導出數據的用戶)

 

expdp test/[email protected] directory=dmp_dir dumpfile=userdum.dmp schemas=hgmmo,hgmqo

——導出多個用戶數據(用戶之間用逗號隔開)

3.3.3表導出模式 

expdp system/[email protected] directory=dmp_dir dumpfile=tabledum.dmp tables=test.emp, test.dept

——導出test用戶的emp和dept兩個表

expdp system/[email protected] directory=dmp_dir dumpfile=tabledum.dmp tables=test.emp query=‘WHERE deptno=20‘

——導出表中符合指定條件的數據,使用query條件的語句較長時采用parfile方式

 

3.3.4表空間導出模式

expdp system/[email protected] directory=dmp_dir dumpfile=dumptbs.dmp tablespaces=tbs1,tbs2

 

3.3.5可移動表空間導出模式(只導出表空間的元數據,不真正導出數據)

 

expdp system/[email protected] directory=dmp_dir dumpfile=dumptbs.dmp transport_tablespaces=tbs1

3.3.6采用并行方式備份整庫[parallel]

 

    parallel參數只有在oracle10g之后的版本(包含10g)有效。

 

oracle_online:you can use the DUMPFILE parameter during export operations tospecify multiple dump files, by using a substitution variable (%U) in thefilename. This is called a dump file template. The new dump files are createdas they are needed, beginning with 01 for %U, then using 02,03,and so on.

 

   eg:C:\>expdporcldev/oracle directory=dackup_path dumpfile=orcldev_parallel_%U.dmplogfile=orcldev_parallel_2013.log parallel=4

 

    "%U"表示自動生成遞增的序列號。

 

四、impdp命令導入數據庫

4.1全庫模式導入

 

impdp test/[email protected] directory=dmp_dir dumpfile=fulldb.dmp full=y

 

4.2用戶模式導入

impdp test/[email protected] directory=dmp_dir dumpfile=userdum.dmp schemas=hgmmo

impdp test/[email protected] directory=dmp_dir dumpfile=userdum.dmp remap_schema=user1:user2

——remap_schema參數相當于imp工具中的fromuser和touser參數,可以實現將一個用戶的數據導入到另一個用戶中

 

4.3 表空間模式導入

 

impdp system/[email protected] directory=dmp_dir dumpfile=dumptbs.dmp tablespaces=tbs1

 

4.4 追加數據

 

impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION=append

 

4.5 將高版本數據庫數據導入到低版本數據庫中

 

1.查詢oracle版本信息

SQL>show parameter compatible

2.使用version參數導入導出數據

expdp test/[email protected] directory=dmp_dir dumpfile=userdum.dmp schemas=hgmmo version =11.2.0.0.0

impdp test/[email protected] directory=dmp_dir dumpfile=userdum.dmp schemas=hgmmo version =11.2.0.0.0

 

exp/expdp 與 imp/impdp命令導入導出數據庫詳解

標簽:自動   整數   顯示   top   erp   占用   release   sam   位置   

原文地址://www.cnblogs.com/lk-fxtx/p/7528409.html

(0)
(0)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 吉利平特名人堂 版權所有 京ICP備13008772號-2
迷上了代碼!
重庆山东时时吗 七星彩预测最准十专家牛 重庆时时彩官网平台 北京时时一天几期 mg游戏平台官网网址 大赢家足球即时比分 彩神8这个APP合法吗 单机麻将免费 重庆欢乐生肖全天计划 11选5走势图安徽时时网 江苏快3怎么玩稳赚 944cc天下彩图文资讯 拉基蒂奇 重庆时时计划免费 江苏时时开奖视频 双色球走势图带连线图