Windows DOS窗體下Oracle 資料庫的匯入匯出(IMP/EXP)命令

peng163fj發表於2015-04-13

oracle 使用者建立 資料庫的匯入匯出imp/exp 可以在SQLPLUS.EXE或者DOS(命令列)中執行

執行環境:可以在SQLPLUS.EXE或者DOS(命令列)中執行,
DOS中可以執行時由於 在oracle 8i 中 安裝目錄ora81BIN被設定為全域性路徑,
該目錄下有EXP.EXE與IMP.EXE檔案被用來執行匯入匯出。

建立使用者

給使用者增加匯入資料許可權的操作
第一,啟動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:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp

下面介紹的是匯入匯出的例項。
資料匯出:
1 將資料庫TEST完全匯出,使用者名稱system 密碼manager 匯出到D:daochu.dmp中
   exp file=d:daochu.dmp full=y
2 將資料庫中system使用者與sys使用者的表匯出
   exp file=d:daochu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat匯出
    exp file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

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

上面是常用的匯出,對於壓縮,既用winzip把dmp檔案可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。

資料的匯入
1 將D:daochu.dmp 中的資料匯入 TEST資料庫中。
   imp file=d:daochu.dmp
   imp full=y file=d:datanewsmgnt.dmp ignore=y
   上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
   在後面加上 ignore=y 就可以了。
2 將d:daochu.dmp中的表table1 匯入
imp file=d:daochu.dmp tables=(table1)

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

附錄一:
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

用Oracle閃回功能恢復偶然丟失的資料

Oracle 10g的閃回查詢概述

  與Oracle 9i相比Oracle 10g的Flashback有了非常大的改進,從普通的Flashback Query發展到了多種形式,主要表現在如下幾方面新特性:

  1、Flashback Database

  Oracle Flashback Database特性允許透過SQL語句Flashback Database語句,讓資料庫前滾到當前的前一個時間點或者SCN,而不需要做時間點的恢復。閃回資料庫可以迅速將資料庫回到誤操作或人為錯誤的前一個時間點,如Word中的"撤消"操作,可以不利用備份就快速的實現基於時間點的恢復。Oracle透過建立新的Flashback Logs(閃回日誌),記錄資料庫的閃回操作。如果希望能閃回資料庫,需要設定如下引數:DB_RECOVER_FILE_DEST日誌的存放位置,DB_RECOVER_FILE_DEST_SIZE恢復區的大小。在建立資料庫的時候,Oracle將自動建立恢復區,但預設是關閉的,需要執行alter database flashback on命令。

  例:執行Flashback Database命令格式。

SQL>flashback database to time to_timestamp(xxx);
SQL>flashback database to scn xxx

  2、Flashback Table

  Oracle Flashback Table特性允許利用Flashback Table語句,確保閃回到表的前一個時間點。與Oracle 9i中的Flashback Query相似,利用回滾段資訊來恢復一個或一些表到以前的一個時間點(一個快照)。要注意的是,Flashback Table不等於Flashback Query,Flashback Query僅僅是查詢以前的一個快照點而已,並不改變當前表的狀態,而Flashback Table將改變當前表及附屬物件一起回到以前的時間點。

  語法:

flashback table tablename to timestamp xxx或
flashback table tablename to scn xxx

  注意:如果需要閃回一個表,需要以下條件:

  ·需要有flashback any table的系統許可權或者是該表的flashback物件許可權;

  ·需要有該表的select,insert,delete,alter許可權;

  ·必須保證該表row movement。

  例:執行將test表閃回到2005年5月7日下午3點。

SQL>flashback table test to timestamp to_timestamp(’2005-05-07 15:00:00’,’yyyy-mm-dd hh24:mi:ss’);

  3、Flashback Drop

  Oracle Flashback Drop特性提供一個類似回收站的功能,用來恢復不小心被刪除的表。當刪除表時,Oracle 10g並不立刻釋放被刪除的表所佔用的空間,而是將這個被刪除的表進行自動重新命名(為了避免同類物件名稱的重複)並放進回收站中。所謂的回收站類似於Windows系統中的回收站,是一個虛擬的容器,用於存放所有被刪除的物件,在回收站中被刪除的物件將佔用建立時的同樣的空間。如果這個被刪除的表需要進行恢復,就可利用Flashback Drop功能。

  例:進行一個刪除表後恢復的簡單測試。

  (1)顯示回收站資訊

SQL>show recyclebin;

  可以看到,回收站中是沒有任何結果的,表示沒有任何表在回收站中。

  (2)建立一個表,並刪除,再次顯示回收站資訊

SQL>create table test_drop(name varchar2(10));
SQL>drop table test_drop;
SQL>show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TEST_DROP BIN$b+XkkO1RS5K10uKo9BfmuA==$0 TABLE 2005-05-07:14:30:47

  (3)對被刪除的表進行恢復

SQL>flashback table test_drop to before drop;或
SQL>flashback table "BIN$b+XkkO1RS5K10uKo9BfmuA==$0" to before drop;

  (4)管理回收站

  清除回收站中的單個表:purge table test_drop

  清除整個回收站:purge recyclebin

  清除不同的物件回收站:purge user_recyclebin或purge dba_recyclebin

  (5)確認刪除一個表

SQL>drop table test_drop purge;

  如果刪除一個表且不放到回收站中不能進行恢復,在drop語句中可以利用purge選項。

如何檢視oracle中資料庫名?

SELECT NAME FROM V$DATABASE;

select * from v$instance

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21302630/viewspace-1571869/,如需轉載,請註明出處,否則將追究法律責任。

相關文章