exp imp

来源:https://www.cnblogs.com/zhanglin123/archive/2020/07/02/13225381.html
-Advertisement-
Play Games

一.說明 oracle 的exp/imp命令用於實現對資料庫的導出/導入操作; exp命令用於把數據從遠程資料庫server導出至本地,生成dmp文件; imp命令用於把本地的資料庫dmp文件從本地導入到遠程的Oracle資料庫中。 二.語法 能夠通過在命令行輸入 imp help=y 獲取imp的 ...


一.說明

   oracle 的exp/imp命令用於實現對資料庫的導出/導入操作;
   exp命令用於把數據從遠程資料庫server導出至本地,生成dmp文件;
   imp命令用於把本地的資料庫dmp文件從本地導入到遠程的Oracle資料庫中。

二.語法

能夠通過在命令行輸入 imp help=y 獲取imp的語法信息:
=============================================================================
  C:/Documents and Settings/auduser>imp help=y

  Import: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:21:57 2008

  (c) Copyright 2001 Oracle Corporation.  All rights reserved.

  能夠通過輸入 IMP 命令和您的username/口令
  後接username/口令的命令:

  常式: IMP SCOTT/TIGER

  或者, 能夠通過輸入 IMP 命令和各種參數來控制“導入”
  依照不同參數。要指定參數,您能夠使用keyword:

  格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
  常式: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
  或 TABLES=(T1: P1,T1: P2),假設 T1 是分區表

  USERID 必須是命令行中的第一個參數。

  keyword  說明(預設)        keyword      說明(預設)
  --------------------------------------------------------------------------
  USERID   username/口令           FULL         導入整個文件 (N)
  BUFFER   數據緩衝區大小         FROMUSER     全部人username列表
  FILE     輸入文件 (EXPDAT.DMP)    TOUSER       username列表
  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)

  下列keyword僅用於可傳輸的表空間
  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/auduser>exp help=y

  Export: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:26:34 2008

  (c) Copyright 2001 Oracle Corporation.  All rights reserved.

 

  通過輸入 EXP 命令和username/口令,您能夠
  後接username/口令的命令:

  常式: EXP SCOTT/TIGER

  或者,您也能夠通過輸入跟有各種參數的 EXP 命令來控制“導出”
  依照不同參數。要指定參數,您能夠使用keyword:

  格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
  常式: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
  或 TABLES=(T1: P1,T1: P2),假設 T1 是分區表

  USERID 必須是命令行中的第一個參數。

  keyword  說明(預設)        keyword      說明(預設)
  --------------------------------------------------------------------------
  USERID   username/口令           FULL         導出整個文件 (N)
  BUFFER   數據緩衝區大小         OWNER     全部者username列表
  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全然導出,usernamesystem passwordmanager 導出到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:/daochu.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_copy
 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_copy 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 username IDENTIFIED BY password (假設已經創建過用戶,這步能夠省略)
 第四,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 username字
 第五, 執行-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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 高密度MRAM具有非常低的功率,高的讀取速度,非常高的數據保留能力和耐久性,適用於廣泛的應用。單元面積僅為0.0456平方微米,讀取速度為10ns,讀取功率為0.8mA/MHz/b,在低功耗待機模式(LPSB)下,其在25C時的泄漏電流小於55mA,相當於每比特的漏電流僅為1.7E-12A。對於32 ...
  • 1>拉取鏡像 docker pull elasticsearch:7.6.2 2>創建數據掛在目錄,以及配置ElasticSearch集群配置文件 mkdir /docker/ES mkdir /docker/ES/data1 mkdir /docker/ES/data2 mkdir /docker ...
  • Docker安裝單機版ELK日誌收集系統 概述 現在Elasticsearch是比較火的, 很多公司都在用. 而Docker也正如火如荼, 所以我就使用了Docker來安裝ELK, 這裡會詳細介紹下安裝的細節以及需要註意的地方. 先來強調一下, Elasticsearch和Kibana必須用相同版本 ...
  • 技術棧:python + scrapy + tor 為什麼要單獨開這麼一篇隨筆,主要還是在上一篇隨筆"一個小爬蟲的整體解決方案"(https://www.cnblogs.com/qinyulin/p/13219838.html)中沒有著重介紹Scrapy,包括後面幾天也對代碼做了Review,優化了 ...
  • du -sh #統計當前目錄的大小,以直觀方式展現 du -h --max-depth=1 #查看當前目錄下所有一級子目錄文件夾大小 du -h --max-depth=1 | sort #查看當前目錄下所有一級子目錄文件夾大小併排序 du -h --max-depth=1 | grep [TG] ...
  • 參見:https://www.cnblogs.com/Dylansuns/p/6974272.html Linux安裝JDK完整步驟檢查一下系統中的jdk版本[hadoop@master ~]$ java -versionopenjdk version "1.8.0_222-ea"OpenJDK R... ...
  • 前言 閑暇之時,羚羊給大家分享一下羚羊在Centos7 下安裝Cloudera Manager 6.3.0和cloudera cdh 6.3.2的過程和安裝過程中遇到的坑。至於為什麼要選擇CDH,Cloudera Manager和cdh是什麼,之間又是什麼關係,在這裡羚羊就不做介紹了。 為什麼選擇C ...
  • 一、Spark SQL簡介 Spark SQL是Spark用來處理結構化數據的一個模塊,它提供了一個編程抽象叫做DataFrame並且作為分散式SQL查詢引擎的作用。 為什麼要學習Spark SQL?我們已經學習了Hive,它是將Hive SQL轉換成MapReduce然後提交到集群上執行,大大簡化 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...