1. 程式人生 > >Oracle用imp和exp匯入匯出資料庫

Oracle用imp和exp匯入匯出資料庫

用 imp 和 exp 命令匯入匯出資料庫

注: 在splplus環境下執行時,在命令前加 ! 號,這樣  SQL> !exp ...   和  SQL> !imp ...

基本語法和例項:
    1. EXP
      有三種主要的方式(完全、使用者、表)
      1.1  完全
          EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
          如果要執行完全匯出,必須具有特殊的許可權
      1.2  使用者模式
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC
          這樣使用者SONIC的所有物件被輸出到檔案中。
      1.3  表模式
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
          這樣使用者SONIC的表SONIC就被匯出
    2. IMP
      具有三種模式(完全、使用者、表)
      1.1  完全:
          IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
      1.2  使用者模式:
          IMP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
          這樣使用者SONIC的所有物件被匯入到檔案中。必須指定FROMUSER、TOUSER引數,這樣才能匯入資料。
      1.3  表模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
          這樣使用者SONIC的表SONIC就被匯入。

ORACLE資料庫有兩類備份方法。第一類為物理備份,該方法實現資料庫的完整恢復,但資料庫必須執行在歸擋模式下(業務資料庫在非歸擋模式下執行),且需要極大的外部儲存裝置,例如磁帶庫;第二類備份方式為邏輯備份,業務資料庫採用此種方式,此方法不需要資料庫執行在歸擋模式下,不但備份簡單,而且可以不需要外部儲存裝置。
  
  資料庫邏輯備份方法
  
  ORACLE資料庫的邏輯備份分為三種模式:表備份、使用者備份和完全備份。
  
  表模式
  
  備份某個使用者模式下指定的物件(表)。業務資料庫通常採用這種備份方式。
  
  若備份到本地檔案,使用如下命令:
  
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_csd_yyyymmdd.dmp
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  若直接備份到磁帶裝置,使用如下命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  注:在磁碟空間允許的情況下,應先備份到本地伺服器,然後再拷貝到磁帶。出於速度方面的考慮,儘量不要直接備份到磁帶裝置。
  
  使用者模式
  
  備份某個使用者模式下的所有物件。業務資料庫通常採用這種備份方式。
  若備份到本地檔案,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_yyyymmdd.dmp
  log=exp_icdmain_yyyymmdd.log
  若直接備份到磁帶裝置,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_yyyymmdd.log
  注:如果磁碟有空間,建議備份到磁碟,然後再拷貝到磁帶。如果資料庫資料量較小,可採用這種辦法備份。

  以下為詳細的匯入匯出例項。

        先說明一下格式中容易迷惑的地方:

        exp userName/[email protected] ...
        imp userName/[email protected] ...

        dbName:資料庫名
        userName:使用者名稱,該使用者擁有操作dbName資料庫的許可權。
        userPassword:是userName使用者連結dbName資料庫的密碼。

        下面是例項:

  一、資料匯出

  1.  將資料庫TEST完全匯出,使用者名稱system 密碼manager 匯出到D:\daochu.dmp中
  exp system/
[email protected]
file=d:\daochu.dmp full=y

  2. 將資料庫中system使用者與sys使用者的表匯出
  exp system/[email protected] file=d:\daochu.dmp owner=(system,sys)

  3. 將資料庫中的表table1 、table2匯出
  exp system/[email protected] file=d:\daochu.dmp tables=(table1,table2)

  4. 將資料庫中的表table1中的欄位filed1以"00"打頭的資料匯出
  exp system/
[email protected]
file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

  上面是常用的匯出,對於壓縮我不太在意,用winzip把dmp檔案可以很好的壓縮。

  不過在上面命令後面 加上 compress=y  就可以了

  二、資料的匯入

     1. 將D:\daochu.dmp 中的資料匯入 TEST資料庫中。
  imp system/[email protected]  file=D:\daochu.dmp

  上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
  在後面加上 ignore=y 就可以了。

     2.  將d:\daochu.dmp中的表table1 匯入
  imp system/[email protected]  file=D:\daochu.dmp  tables=(table1)

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


 【注意兩點】

          1. 如果出現 ORA-12541: TNS:no listener 錯誤,說明需要開啟監聽。

              監聽命令

              啟動監聽:lsnrctl start
              檢視監聽:lsnrctl status
              停止監聽:lsnrctl stop

         2. 如果出現 ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 錯誤,說明當前使用者沒有許可權匯入/匯出這個資料庫。先確定已經開啟資料庫,然後回到SYS使用者後再試。

  資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。


==============================================================

用exp和imp命令匯入匯出資料庫時碰到的問題及解決辦法

(原創)

Oracle 11G在用EXP匯出時,空表不能匯出,出現“EXP-00003”錯誤,再用IMP匯入時就會出現“IMP-00003”和“ORA-00942: 表或檢視不存在”等錯誤。

在Oracle 11g r2中,發現傳統的exp居然不能匯出空的表,然後查詢一下,發現需要如下的步驟去搞,筆記之。
Oracle 11g 新增了一個引數“deferred_segment_creation”,含義是段延遲建立,預設是true。具體是什麼意思呢? 
如果這個引數設定為true,你新建了一個表T1,並且沒有向其中插入資料,那麼這個表不會立即分配extent,也就是不佔資料空間,只有當你insert資料後才分配空間。這樣可以節省少量的空間。 

那麼如何匯出空表呢?

【解決辦法】
 
1. insert一行,再rollback就產生segment了。
  該方法是在在空表中插入資料,再刪除,則產生segment。匯出時則可匯出空表。

2. 設定“deferred_segment_creation”引數為FALSE後,無論是空表還是非空表,都分配segment。
   在sqlplus中,執行如下命令:
2.1 檢視
   SQL>show parameter deferred_segment_creation;
2.2 修改
   SQL>alter system set deferred_segment_creation=false;
該引數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。
  需注意的是:該值設定後對以前的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。如需匯出之前的空表,只能用第一種方法。
   注意並且要重新啟動資料庫,讓引數生效。

3. 使用ALLOCATE EXTENT
3.1 使用ALLOCATE EXTENT可以為資料庫物件分配Extent。其語法如下:
   -----------
   ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }
   -----------
   可以針對資料表、索引、物化檢視等手工分配Extent。
   ALLOCATE EXTENT使用樣例:
    ALLOCATE EXTENT
    ALLOCATE EXTENT(SIZE integer [K | M])
    ALLOCATE EXTENT(DATAFILE 'filename')
    ALLOCATE EXTENT(INSTANCE integer) 
    ALLOCATE EXTENT(SIZE integer [K | M]   DATAFILE 'filename')
    ALLOCATE EXTENT(SIZE integer [K | M]   INSTANCE integer) 
    針對資料表操作的完整語法如下:
   -----------
    ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]
   ----------- 
schema為資料庫物件的集合,為了區分各個集合,我們需要給這個集合起個名字,這些名字就是我們在企業管理器的方案下看到的許多類似使用者名稱的節點,這些類似使用者名稱的節點其實就是一個schema,schema裡面包含了各種物件如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一個使用者一般對應一個schema,該使用者的schema名等於使用者名稱,並作為該使用者預設schema。這也就是我們在企業管理器的方案下看到schema名都為資料庫使用者名稱的原因。
最簡單的理解:以你計算機的使用者為例,如果你的計算機有3個使用者,那麼每個使用者登入系統看到的(使用的)功能是可以不相同的搜尋!
    所以需要構建如下樣子簡單的SQL命令:
   -----------
   alter table aTabelName allocate extent;
   ----------- 
3.2 構建對空表分配空間的SQL命令,
   查詢當前使用者下的所有空表,命令如下:
   SQL> select table_name from user_tables where NUM_ROWS=0;

   根據上述查詢,可以構建針對空表分配空間的命令語句,如下:
   SQL> Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
 -----------------------------------------------------------
alter table BPIS_TREAT_PLAN_LIST allocate extent;
alter table CIS_ASSESS_REP allocate extent;
alter table CIS_GROUP allocate extent;
alter table CIS_INFO_QUEUE allocate extent;
alter table CIS_INSPECTION_ASSESS_LIST allocate extent;
alter table CIS_INSPECTION_RESULT allocate extent;
alter table CIS_ITEM allocate extent;
alter table CIS_ITEM_CHANNEL allocate extent;
alter table CIS_ITEM_COMBINATION allocate extent;
alter table CIS_ITEM_COMBINATION_ITEM allocate extent;

批量輸出了上述生成的SQL語句,然後執行。
一條一條執行也不現實,可以通過匯出指令碼執行,如下:

SQL> set heading off
SQL> set echo off
SQL> set feedback off
SQL> set termout on
SQL> spool .../.../a.sql
SQL> Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
SQL> spool off

此時更新這些空表的每條SQL語句已經寫到a.sql檔案中了,然後執行這個sql檔案更新資料庫即可。

【附註】
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
也可以換成:
Select 'alter table '||table_name||' allocate extent;' from user_tables where segment_created= 'NO'; 

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

(轉帖)

朋友在匯入11GR2發現瞭如下的錯誤日誌:

MP-00017: 由於 ORACLE 錯誤 942, 以下語句失敗:
 "ALTER TABLE "BD_CALBODY" ADD CONSTRAINT "F_BD_CALBODY1" FOREIGN KEY ("PK_AD"
 "DRESS") REFERENCES "BD_ADDRESS" ("PK_ADDRESS") ENABLE NOVALIDATE"
IMP-00003: 遇到 ORACLE 錯誤 942
ORA-00942: 表或檢視不存在
IMP-00017: 由於 ORACLE 錯誤 942, 以下語句失敗:
 "ALTER TABLE "BD_STORDOC" ADD CONSTRAINT "F_BD_STORDOC1" FOREIGN KEY ("PK_AD"
 "DRESS") REFERENCES "BD_ADDRESS" ("PK_ADDRESS") ENABLE NOVALIDATE"
IMP-00003: 遇到 ORACLE 錯誤 942
ORA-00942: 表或檢視不存在
IMP-00017: 由於 ORACLE 錯誤 942, 以下語句失敗:
 "ALTER TABLE "BD_BOM_B" ADD CONSTRAINT "FK_BDBOMB_BOMID" FOREIGN KEY ("PK_BO"
 "MID") REFERENCES "BD_BOM" ("PK_BOMID") ENABLE NOVALIDATE"
IMP-00003: 遇到 ORACLE 錯誤 942
ORA-00942: 表或檢視不存在
IMP-00017: 由於 ORACLE 錯誤 942, 以下語句失敗:
 "ALTER TABLE "BD_BOM_ZP" ADD CONSTRAINT "FK_BDBOMZP_BOMID" FOREIGN KEY ("PK_"
 "BOM_BID") REFERENCES "BD_BOM_B" ("PK_BOM_BID") ENABLE NOVALIDATE"
IMP-00003: 遇到 ORACLE 錯誤 942
ORA-00942: 表或檢視不存在
IMP-00017: 由於 ORACLE 錯誤 942, 以下語句失敗:
 "ALTER TABLE "BD_BOM_TD" ADD CONSTRAINT "FK_BOM_ZXTD" FOREIGN KEY ("PK_BOM_B"
 "ID") REFERENCES "BD_BOM_B" ("PK_BOM_BID") ENABLE NOVALIDATE"
IMP-00003: 遇到 ORACLE 錯誤 942
ORA-00942: 表或檢視不存在。

發現以上問題開始以為是物件不對的問題或者是表刪除的問題,但經過在網上查詢發現不是上述問題是11GR2資料庫版本的問題:11GR2中有個新特性,當表無資料時,不分配segment,以節省空間,可是在用EXPORT匯出時,空表也不能匯出,這就導致遷移時候丟失了一些表,儲存過程也失效了。

本以為EXP能有相應的控制開關,可以切換是否匯出空表,看了下幫助,沒有太大的改變。有些奇怪,難道11GR2不更新EXP的功能。

解決方法:

一、insert一行,再rollback就產生segment了。
  該方法是在在空表中插入資料,再刪除,則產生segment。匯出時則可匯出空表。

二、設定deferred_segment_creation引數該引數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。修改語句:

    alter system set deferred_segment_creation=false scope=both;

  需注意的是:該值設定後對以前匯入的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。如需匯出之前的空表,只能用第一種方法。

三 、用以下這句查詢空表並分配空間
  select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

  把SQL查詢的結果匯出,然後執行匯出的語句,強行為表分配空間修改segment值,然後再匯出即可匯出空表了。

 

簡單寫下資料泵的(實踐)用法:
備份tszgyl/tszgyl
 
expdp userid=tszgyl/tszgyl directory=tszgyl dumpfile=tszgyl20100311.dmp job_name=tszgyl20100311 logfile=tszgyl20100311.log parallel=4 schemas=tszgyl
 
備份tsybdd/tsybdd
 
expdp userid=tsybdd/tsybdd directory=tsybdd dumpfile=tsybdd20100311.dmp job_name=tsybdd20100311 logfile=tsybdd20100311.log parallel=4 schemas=tsybdd
 
備份center_czjm/test
 
expdp userid=center_czjm/test directory=center_czjm dumpfile=center_czjm20100311.dmp job_name=center_czjm20100311 logfile=center_czjm20100311.log parallel=4 schemas=center_czjm
 
具體解釋如下:
  
核心提示:Oracle Database 10g引入了最新的資料泵(Data Dump)技術,使DBA或開發人員可以將資料庫元資料(物件定義)和資料快速移動到另一個oracle資料庫中。

    Oracle Database 10g引入了最新的資料泵(Data Dump)技術,使DBA或開發人員可以將資料庫元資料(物件定義)和資料快速移動到另一個oracle資料庫中。

    資料泵匯出匯入(EXPDP和IMPDP)的作用

    1、實現邏輯備份和邏輯恢復。

    2、在資料庫使用者之間移動物件。

    3、在資料庫之間移動物件

    4、實現表空間搬移。 資料泵匯出匯入與傳統匯出匯入的區別:

    在10g之前,傳統的匯出和匯入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了資料泵匯出匯入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項;

    EXP和IMP是客戶段工具程式,它們既可以在客戶端使用,也可以在伺服器段使用。

    EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在客戶端使用

    IMP只適用於EXP匯出檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出檔案,而不適用於EXP匯出檔案。

    資料泵匯出包括匯出表,匯出方案,匯出表空間,匯出資料庫4種方式。

    EXPDP命令列選項

    1. ATTACH

    該選項用於在客戶會話與已存在匯出作用之間建立關聯。語法如下

    ATTACH=[schema_name.]job_name

    Schema_name用於指定方案名,job_name用於指定匯出作業名。注意,如果使用ATTACH選項,在命令列除了連線字串和ATTACH選項外,不能指定任何其他選項,示例如下:

    Expdp scott/tiger ATTACH=scott.export_job

    2. CONTENT

    該選項用於指定要匯出的內容。預設值為ALL

    CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

    當設定CONTENT為ALL 時,將匯出物件定義及其所有資料。為DATA_ONLY時,只匯出物件資料,為METADATA_ONLY時,只匯出物件定義

    Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump

    CONTENT=METADATA_ONLY

    3. DIRECTORY

    指定轉儲檔案和日誌檔案所在的目錄

    DIRECTORY=directory_object

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

    Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dump

    建立目錄:

    CREATE DIRECTORY dump as ‘d:dump’;

    查詢建立了那些子目錄:

    SELECT * FROM dba_directories;

    4. DUMPFILE

    用於指定轉儲檔案的名稱,預設名稱為expdat.dmp

    DUMPFILE=[directory_object:]file_name [,…]

    Directory_object用於指定目錄物件名,file_name用於指定轉儲檔名。需要注意,如果不指定directory_object,匯出工具會自動使用DIRECTORY選項指定的目錄物件

    Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2:a.dmp

    5. ESTIMATE

    指定估算被匯出表所佔用磁碟空間分方法。預設值是BLOCKS

    EXTIMATE={BLOCKS | STATISTICS}

    設定為BLOCKS時,oracle會按照目標物件所佔用的資料塊個數乘以資料塊尺寸估算物件佔用的空間,設定為STATISTICS時,根據最近統計值估算物件佔用空間

    Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS

    DIRECTORY=dump DUMPFILE=a.dump

    6. EXTIMATE_ONLY

    指定是否只估算匯出作業所佔用的磁碟空間,預設值為N

    EXTIMATE_ONLY={Y | N}

    設定為Y時,匯出作用只估算物件所佔用的磁碟空間,而不會執行匯出作業,為N時,不僅估算物件所佔用的磁碟空間,還會執行匯出操作。

    Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y

    7. EXCLUDE

    該選項用於指定執行操作時釋放要排除物件型別或相關物件

    EXCLUDE=object_type[:name_clause] [,…]

    Object_type用於指定要排除的物件型別,name_clause用於指定要排除的具體物件。EXCLUDE和INCLUDE不能同時使用

    Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW

    8. FILESIZE

    指定匯出檔案的最大尺寸,預設為0,(表示檔案尺寸沒有限制)

    9. FLASHBACK_SCN

    指定匯出特定SCN時刻的表資料

    FLASHBACK_SCN=scn_value

    Scn_value用於標識SCN值。FLASHBACK_SCN和FLASHBACK_TIME不能同時使用

    Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp

    FLASHBACK_SCN=358523

    10. FLASHBACK_TIME

    指定匯出特定時間點的表資料

    FLASHBACK_TIME=”TO_TIMESTAMP(time_value)”

    Expdp scott/tiger DIRECTORY=dump 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.log

    LOGFILE=[directory_object:]file_name

    Directory_object用於指定目錄物件名稱,file_name用於指定匯出日誌檔名。如果不指定directory_object.匯出作用會自動使用DIRECTORY的相應選項值。

    Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp logfile=a.log

    16. NETWORK_LINK

    指定資料庫鏈名,如果要將遠端資料庫物件匯出到本地例程的轉儲檔案中,必須設定該選項。

    17. NOLOGFILE

    該選項用於指定禁止生成匯出日誌檔案,預設值為N.

    18. PARALLEL

    指定執行匯出操作的並行程序個數,預設值為1

    19. PARFILE

    指定匯出引數檔案的名稱

    PARFILE=[directory_path] file_name

    20. QUERY

    用於指定過濾匯出資料的where條件

    QUERY=[schema.] [table_name:] query_clause

    Schema用於指定方案名,table_name用於指定表名,query_clause用於指定條件限制子句。QUERY選項不能與CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等選項同時使用。

    Expdp scott/tiger directory=dump dumpfiel=a.dmp

    Tables=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用於指定資料庫版本字串。呼叫EXPDP

    使用EXPDP工具時,其轉儲檔案只能被存放在DIRECTORY物件對應的OS目錄中,而不能直接指定轉儲檔案所在的OS目錄。因此,使用EXPDP工具時,必須首先建立DIRECTORY物件。並且需要為資料庫使用者授予使用DIRECTORY物件許可權。

    CREATE DIRECTORY dump dir AS ‘D:DUMP’;

    GRANT READ, WIRTE ON DIRECTORY dump_dir TO scott;

    1、匯出表

    Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp

    2、匯出方案

    Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp

    SCHEMAS=system,scott

    3、匯出表空間

    Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp

    TABLESPACES=user01,user02

    4、匯出資料庫

    Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y

相關推薦

Oracleimpexp匯入匯出資料庫

用 imp 和 exp 命令匯入匯出資料庫 注: 在splplus環境下執行時,在命令前加 ! 號,這樣  SQL> !exp ...   和  SQL> !imp ... 基本語法和例項:     1. EXP       有三種主要的方式(完全、使用

Oracle匯入匯出資料庫(exp/impexpdp/impdp的區別)

  Oracle匯入匯出資料庫(exp/imp和expdp/impdp的區別) 目錄索引 1、exp和expdp的區別 2、expdp匯出資料庫流程   一、↓↓exp和expdp的區別↓↓ 1、exp和expdp最明顯的區別就是匯出速度的不同。exp

Oracle利用expimp,資料泵impdpexpdp匯入匯出資料,spool匯出資料

Oracle利用exp和imp,資料泵impdp和expdp匯入匯出資料,spool匯出資料 注意: (1)imp只能匯入exp匯出的檔案 ,imp,exp是客戶端程式,操作少量資料  (2)impdp只能匯入expdp匯出的檔案,impdp,expdp是伺服器端程式,操作適量大的

Centos7下Oracle 11g r2 本地/遠端 exp/imp命令快速匯入匯出資料 實踐筆記

百度統計 [removed] var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.

oracle Impexp以及匯入常見的錯誤

一 1) 資料庫物件已經存在 一般情況, 匯入資料前應該徹底刪除目標資料下的表, 序列, 函式/過程,觸發器等;    資料庫物件已經存在, 按預設的imp引數, 則會匯入失敗  如果用了引數ignore=y, 會把exp檔案內的資料內容匯入 如果表有唯一關鍵字的約束條件,

Oracle控制檯匯入匯出資料庫

匯出資料庫 exp bj/[email protected] file='d:\changchun2016-11-18_2.dmp' 匯入 imp changchun/[email 

oracle資料庫中使用impexp命令

最近幾天由於專案需要搭建新的開發環境,需要處理資料。本來是很簡單的事情,但是由於資料庫需要使用線上環境的資料,變得有些麻煩,主要是以前一些資料庫的處理都是小資料量,一個命令很短就執行完畢了,而這次資料庫檔案在200G左右,資料備份和恢復,以及備份檔案的轉移都成了問題,因為檔案

Oracle中用exp/imp命令快速匯入匯出資料

【用 exp 數 據 導 出】: 1 將資料庫TEST完全匯出,使用者名稱system 密碼manager 匯出到D:\daochu.dmp中    exp system/[email protected] file=d:\daochu.dmp full=y 2

Oracle imp&&exp 匯入匯出.dmp檔案

關鍵字   說明 (預設值)        關鍵字      說明 (預設值) -------------------------------------------------------------------------- USERID   使用者名稱/口令           FULL       匯

oracle 匯入匯出資料庫 2012-03-13 08:33:06

imp userid = system/system @orcl fromuser = ... touser = ... file = ... exp userid = system/system @orcl owner = ... file = ... 建立使用者時的許可權賦予: 角色:c

CentOS7安裝mysql5.7以及修改密碼匯入匯出資料庫

centos7安裝mysql 5.7 1.檢測系統內部有沒有安裝其他的mysql資料庫 rpm -qa | grep mysql 然後如果有的話刪除這些mysql yum remove 查出來的所有名字 2.徹底刪除系統中mysql的目錄 fin

Sqoop2在Mysqlhadoop匯入匯出資料

        最近在做使用者刷贊排除邏輯的時候,需要結合nginx的access.log日誌和Mysql中的部分記錄聯合查詢才能做到,之前的nginx日誌一直存放在hadoop中,mysql的資料則沒有匯入到hadoop中去過,要搞定這事還得將Mysql中的一些表匯入到H

使用POI將資料匯入匯出資料庫

POI將資料匯入匯出資料庫。(採用ssm框架) 1.前臺列表的展示 <script type="text/javascript"> //進行資料的全選 function selectAll(){ var ids=document.get

TP5操作Excel匯入匯出資料庫

匯入: <?phpnamespace app\index\controller;use think\Controller;use think\Db;use think\Loader;class Upload extends Controller{ public function upload()

MySQL之匯入/匯出資料庫

MySQL之匯入匯出資料庫 windows下:       直接在DOS視窗輸入命令 1. 匯出整個資料庫 語法:mysqldump -u 使用者名稱 -p 資料庫名 > 匯出的sql檔名(儲存路徑)

使用O2OA二次開發搭建企業辦公平臺(七)平臺部署篇:伺服器備份資料匯入匯出

  本部落格為O2OA系列教程、O2OA使用手冊,教程目錄和各章節天梯將在連載完後更新。 使用O2OA二次開發搭建企業辦公平臺(一)平臺部署篇:平臺下載和部署 使用O2OA二次開發搭建企業辦公平臺(二)平臺部署篇:埠衝突和伺服器埠配置 使用O2OA二次開發搭建企業辦公平

oracle 例項名服務名以及資料庫名區別

一、資料庫名 什麼是資料庫名? 資料庫名就是一個數據庫的標識,就像人的身份證號一樣。他用引數DB_NAME表示,如果一臺機器上裝了多全資料庫,那麼每一個數據庫都有一個數據庫名。在資料庫安裝或建立完成之後,引數DB_NAME被寫入引數檔案之中。格式如下: DB_NAME=myorcl ... 在 建立

php命令列 windows、linux匯入 匯出資料庫

windows 命令列匯出資料庫: 1,進入MySQL目錄下的bin資料夾:cd MySQL中到bin資料夾的目錄 如我輸入的命令列:cd C:\Program Files\MySQL\MySQL Server 4.1\bin 2,匯出資料庫:mysqldump -u 使用者名稱 -p 資料庫名

linux 命令 匯入 匯出資料庫

命令列匯出資料庫: 1,進入MySQL目錄下的bin資料夾:cd MySQL中到bin資料夾的目錄 如我輸入的命令列:cd C:\Program Files\MySQL\MySQL Server 4.1\bin 2,匯出資料庫:mysqldump -u 使用者名稱 -p 資料

OracleSYSSYSTEM預設密碼登入提示 ORA-01017:invalid username/password;logond denied解決方法

環境:Oracle 11g R2 +SQLPlus 問題:ORACLE用 SYS和SYSTEM預設密碼登入提示 ORA-01017:invalidusername/password;logond denied 我們都知道,sys的預設密碼是manager,system的預