天天看點

轉載-Oracle 資料庫導入導出 dmp檔案

首先詢問對方資料庫的表空間名稱和大小,然後在你的oracle中建立相應表空間,最後使用指令導入、導出資料。

補充:

1.要建立一個資料庫;

Oracle資料導入導出imp/exp就相當于oracle資料還原與備份。exp指令可

以把資料從遠端資料庫伺服器導出到本地的dmp檔案,imp指令可以把dmp檔案從本

地導入到遠處的資料庫伺服器中。 利用這個功能可以建構兩個相同的資料庫,一

個用來測試,一個用來正式使用。

例如:imp指令導入資料:

imp username/password@SID file=XXX.dmp fromuser=XXX touser=XXX tables=(XXX,XXX)

其中,fromuser指對方資料庫使用者名,touser指你的資料庫的使用者名;

fromuser若為多個表空間的話,使用()将其括起來:fromuser=(a,b);

touser參數仿fromuser參數;

若隻導入一部分表,使用tables參數,用()括起要導入的表;如果想全部導入,不需要指定tables參數

下面介紹的是導入導出的執行個體。

資料導出:

1 将資料庫TEST完全導出,使用者名system 密碼manager 導出到D:\daochu.dmp中

   exp system/manager@TEST file=d:\daochu.dmp full=y

2 将資料庫中system使用者與sys使用者的表導出

   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

3 将資料庫中的表inner_notify、notify_staff_relat導出

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=

(inner_notify,notify_staff_relat)

上面是常用的導出,對于壓縮,既用winzip把dmp檔案可以很好的壓縮。

也可以在上面指令後面 加上 compress=y 來實作。 

資料的導入

1 将D:\daochu.dmp 中的資料導入 TEST資料庫中。

   imp system/manager@TEST file=d:\daochu.dmp

   imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp

ignore=y 

   上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導

入。

   在後面加上 ignore=y 就可以了。

2 将d:\daochu.dmp中的表table1 導入

imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 

基本上上面的導入導出夠用了。不少情況要先是将表徹底删除,然後導入。

注意:

操作者要有足夠的權限,權限不夠它會提示。

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

附錄一:

給使用者增加導入資料權限的操作

第一,啟動sql*puls

第二,以system/manager登陸

第三,create user 使用者名 IDENTIFIED BY 密碼 (如果已經建立過使用者,這步

可以省略)

第四,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 使用者名字 

第五, 運作-cmd-進入dmp檔案所在的目錄, 

      imp userid=system/manager full=y file=*.dmp

      或者 imp userid=system/manager full=y file=filename.dmp

執行示例:

F:\Work\Oracle_Data\backup>imp userid=test/test full=y

file=inner_notify.dmp

螢幕顯示

Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006

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

連接配接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

With the Partitioning option

JServer Release 8.1.7.0.0 - Production

經由正常路徑導出由EXPORT:V08.01.07建立的檔案

已經完成ZHS16GBK字元集和ZHS16GBK NCHAR 字元集中的導入

導出伺服器使用UTF8 NCHAR 字元集 (可能的ncharset轉換)

. 正在将AICHANNEL的對象導入到 AICHANNEL

. . 正在導入表                  "INNER_NOTIFY"          4行被導入

準備啟用限制條件...

成功終止導入,但出現警告。

 轉自:http://www.cnblogs.com/pinbo/archive/2010/10/22/1858246.html#undefined

對于 exp 報 oracle 錯誤 12154 以下解決方法

exp system/manager@TEST file=d:\daochu.dmp full=y

@後面跟的不是執行個體名,隻是在tnsnames裡面配的網絡服務名

方法一:

檢視$ORACLE_HOME/network/admin下的 tnsnames.ora 檔案,如下所示:

ORCL_YZJ =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

于是,執行導出表指令如下,導出成功:

[oracle@yingxiang-testServer1 ~]$ exp imgpf/imgpf@ORCL_YZJ file=/home/oracle/table_space/USDMP20140428.dmp

方法二:

10g以後提供了不配置tnsname.ora也可以連接配接資料庫的方法

類似 sqlplus uname/[email protected]:1521/orcl

exp uname/[email protected]:1521/orcl file=\'xx.dmp\' 

對于導入操作:

IGNORE=Y  : 忽略已存在的表  預設N
DESTROY=Y  : 覆寫已存在的表  預設N


其他說明
轉載自 https://www.cnblogs.com/gdjlc/p/6155510.html      

背景:

oracle正式庫通過exp指令導出的dmp備份包,現在通過imp指令還原到測試庫,測試庫上面的表資料全部不要,要用新的。

方法:

先删除使用者、使用者所在表空間,再建立使用者和表空間,再imp導入。

過程:

1、用plsql檢視使用者的權限等資訊并備份,例如

-- Create the user 

create user testuser;

-- Grant/Revoke object privileges 

grant execute on SYS.DBMS_JOB to testuser;

-- Grant/Revoke role privileges 

grant connect to testuser;

grant resource to testuser;

-- Grant/Revoke system privileges 

grant create job to testuser;

grant create materialized view to testuser;

grant create view to testuser;

grant debug connect session to testuser;

grant manage scheduler to testuser;

grant unlimited tablespace to testuser;

2、删除使用者(如果使用者下面有對象,需要加cascade參數)

drop user testuser cascade;

3、用sysdba使用者查詢表空間名稱、磁盤路徑檔案

select username,default_tablespace from dba_users; (如用testuser登入,則查表user_users)

select file_name,tablespace_name from dba_data_files;

4、删除表空間

--将其offline

alter tablespace testdb offline;

--将磁盤上的資料檔案一同删除(不知道啥原因,本人執行後磁盤上的資料檔案還在,這時可以手動删除掉)

drop tablespace testdb including contents and datafiles;

5、建立表空間

create tablespace dev datafile \'D:\OraData\testdb\' size 500m;

6、根據第1步備份的sql,建立使用者

7、資料導入,在cmd指令行下執行

imp testuser/password@ORCL file=D:\backup.dmp fromuser=prduser touser=testuser

參數說明:

testuser/password 登入使用者名和密碼

file 輸入檔案

fromuser 所有人使用者名清單,即導出dmp的使用者名

touser 使用者名清單,即導入dmp的使用者名

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

附,imp和exp對應,都具有三種模式

1、完全:

IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:/FULL.DMP FULL=Y

2、使用者模式(必須指定FROMUSER、TOUSER參數):

IMP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP FROMUSER=SONIC TOUSER=SONIC

這樣使用者SONIC的所有對象被導入到檔案中。必須指定FROMUSER、TOUSER參數。

3、表模式(隻導入指定的表):

IMP SONIC/SONIC BUFFER=64000 FILE=C:/SONIC.DMP OWNER=SONIC TABLES=(SONIC)

這樣使用者SONIC的表SONIC就被導入。

imp參數

USERID 使用者名/密碼

FULL 導入整個檔案 (N)

BUFFER 資料緩沖區大小

FROMUSER 所有人使用者名清單

FILE 輸入檔案 (EXPDAT.DMP)

TOUSER 使用者名清單

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)

ANALYZE 執行轉儲檔案中的 ANALYZE 語句 (Y)

FEEDBACK 顯示每 x 行 (0) 的進度

TOID_NOVALIDATE 跳過指定類型 id 的校驗

FILESIZE 各轉儲檔案的最大尺寸

RECALCULATE_STATISTICS 重新計算統計值 (N)