1. 程式人生 > >Linux環境下Oracle exp/imp匯出匯入工具的使用

Linux環境下Oracle exp/imp匯出匯入工具的使用

一. 匯出工具 exp

1. 它是作業系統下一個可執行的檔案 存放目錄/ORACLE_HOME/bin

   exp匯出工具將資料庫中資料備份壓縮成一個二進位制系統檔案.可以在不同OS間遷移

   它有三種模式:
       a.  使用者模式: 匯出使用者所有物件以及物件中的資料;
       b.  表模式: 匯出使用者所有表或者指定的表;
       c.  整個資料庫: 匯出資料庫中所有物件。

2. 匯出工具exp互動式命令列方式的使用的例子

$exp test/[email protected]
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 - Production 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 Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
匯入檔案: 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/[email protected]_string
說明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
   定義的本地或者遠端資料庫的名稱
注意事項:
UNIX: /etc/hosts           要定義本地或者遠端資料庫伺服器的主機名
win98:    windows\hosts             和IP地址的對應關係  

win2000:  winnt\system32\drivers\etc\hosts

相關推薦

Linux環境Oracle exp/imp匯出匯入工具的使用

一. 匯出工具 exp1. 它是作業系統下一個可執行的檔案 存放目錄/ORACLE_HOME/bin   exp匯出工具將資料庫中資料備份壓縮成一個二進位制系統檔案.可以在不同OS間遷移   它有三種模式:       a.  使用者模式: 匯出使用者所有物件以及物件中的資

linux環境oracle 11g 靜默安裝

linux環境下oracle 11g 靜默安裝 編寫人:黃寶康 編寫日期:2018-11-15 1、編寫目的 運維人士經常需要幹一些環境搭建的事,對於linux下安裝oracle,雖然說可以使用帶圖形介面的安裝,只需要設定oracle的安裝目錄,設定sid名稱,db_name例項名稱

exp/imp匯出匯入資料時報錯ora 12154 無法解析指定的連線識別符號

      在本地匯入或者匯出資料偶然遇到匯入失敗,oracle報錯ora 12154 無法解析指定的連線識別符號。 匯入命名如下: imp crspuser/[email protected] fromuser=crspfenlove touser=crspus

Linux環境無法正常安裝VMware tools工具的解決方法

在虛擬機器安裝的Linux系統中,安裝VMware tools工具不僅可將主機中的檔案自由拖動到虛擬機器中,而且滑鼠也可以主機系統與虛擬機器系統中自由切換,而不需要再按Ctrl+Alt來釋放滑鼠,真的很方便。網上安裝VMware tools的方法確實很多,但基本上都是類似的

分享一個 Linux 環境,強力的Python 小工具

場景 Linux 使用者,經常需要在終端檢視一些資料,從檔案裡看 或者網路協議獲取資料並檢視。 比如,檢視檔案裡的json資料;比如,檢視etcd裡存下的資料。 如果直接看cat 或者 curl 得到的資料,如果格式亂掉了 會很痛苦的,而python 的 json.tool 可以在終端裡 把得到的資料格式化

Linux系統Oracle資料庫dmp檔案匯出匯入

1.建立表空間 su - oracle create tablespace demo_new_data datafile '${ORACLE_HOME}\oradata\demo_new_data.dbf' size 500M reuse autoextend on next 40M exte

oracle通過exp imp 匯出匯入,指定表

指定表: exp test/oracle  file=/u01/b.dmp tables=mema.t1,mema.t3 imp user/password file=file.dmp TABLES=t1,T2; 全部: exp test/[email 

oracle exp/imp命令詳解(匯入,匯出表,儲存過程,檢視等)

E: >exp help=y 通過輸入 EXP 命令和使用者名稱/口令,您可以 在使用者 / 口令之後的命令: 例項: EXP SCOTT/TIGER 或者,您也可以通過輸入跟有各種引數的 EXP 命令來控制“匯出”的執行方式。 要指定引數,您可以使用關鍵字: 格式: EXP KEYWOR

Oracleexp/imp

imp exp oracle 在平時做Oracle的備份的時候一般都是做邏輯熱備份,而做邏輯熱備份一般都是使用exp/imp,在這裏就簡單的說一說。 使用exp導出數據imp導入數據操作如下:exp username/password owner=backup file=backup.d

linux 環境備份oracle 數據庫

備份 命令 目錄 lin 安裝目錄 su - linux 輸出 所有者 登陸linux後,進入oracle的安裝目錄下,找到bin那個目錄,進入bin目錄ls -l 看這些命令的所有者: su - oracle這時會進入這個用戶的主目錄/home/oracle,此時,可以用

linux環境,連線另一臺伺服器的oracle資料庫,常見問題詳解

一臺伺服器177 一臺伺服器,有oracle的12 177能ping通12 177不能telnet 12 1521埠 通過xShell隧道在windows能連上12的oracle資料庫 12的1521埠是開啟的。 我總結為是 1.防火牆 有沒有設定1521

Oracle exp/imp匯入不同的表空間

    我們在做Oracle資料庫表遷移時,通常會有這種需求,在開發階段,可能所有使用者的資料都放在一個表空間中,比如users表空間,但是在生產中,我們希望將每個使用者的資料分別放到不同表空間中,此時直接使用exp/imp是不具備選擇表空間功能的(expdp/impdp可

Linux環境在docker中配置Oracle資料庫並實現資料持久化

一  CentOs安裝docker 前置條件: 64-bit 系統 kernel 3.10+ 作者以下操作皆在root使用者下進行 1.檢查核心版本,返回的值大於等於3.10即可。   # uname -r 2.確保yum是最新的   # yum up

Linux環境安裝Oracle 11g

安裝前配置 p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip 解決sqlplus下亂碼問題的安裝包: rlwrap-0.42-1.el7.x86_6

Linux環境重啟Oracle服務和監聽

有時候可能會出現伺服器電腦出問題,需要重啟,重啟機器後需要重啟Oracle資料庫 (1) 以oracle身份登入資料庫,命令:su – oracle  (2) 進入Sqlplus控制檯,命令:sqlp

Linux環境Python連線Oracle

       最近公司要求在linux下對Mysql,Oracle進行增加使用者,使用者改密等操作。Mysql資料庫實現起來比較簡單,這個Oracle讓我頭疼了一陣。於是從網上查閱資料,經自己的測試以後終於成功,現將方法總結如下:python資料庫介面python DB AP

linux環境靜默安裝oracle 11g後設置自動啟動

要讓oracle隨linux啟動而啟動,需要設定以下五個地方:1、修改/etc/oratab# Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and secon

Linux環境安裝TPC-H與資料匯入PostgreSQL

總共需要以下10個步驟,不包括QGEN部分(經過賦值的22個SQL語句參考附錄)。 1. 下載 TPC-H 官方工具包,地址:http://www.tpc.org/tpc_documents_current_versions/current_specifications.

Linux環境使用sqlplus登入Oracle,報'ORA-12547: TNS:lost contact’丟失連線錯誤

問題描述: 1、在oracle資料庫裡新建了DDS(用於資料庫同步)使用者,但在Linux環境裡通過sqlplus命令列,使用DDS使用者登入oracle,報'ORA-12547: TNS:lost contact’丟失連線錯誤。 2、在windows環境使用PLSQL d

Linux 環境設定 Oracle 11g 設定隨機自啟

在這之前先解釋一下 會用到的四個檔案: 首先是在你自己的$ORACLE_HOME/bin下的 兩個啟動命令指令碼   dbstart     和    lsnrctl  一個是 表示資料庫啟動 一個 表示 監聽啟動 另外 oratab 和 rc.local  在 rc.lo